通用技术 一道 APP 设计测试面试题求解答

Ron · 2016年04月19日 · 最后由 lijingxian16 回复于 2019年11月13日 · 7998 次阅读

本人最近被面试了一道题目,是这样的,
有一个移动 app 电影票,现有个活动,能以 20% 的价格买入 1000 张电影票,每人限购 1 张,作为测试负责人如何设计这个测试。
我说是测试功能性,用户体验,以及重点测试并发,比如 2000 个并发测试,看系统有问题。
面试官说我不了解 app 测试,不知道是不是测试重点搞错了。

共收到 32 条回复 时间 点赞

特殊的地方就在边界条件
比如,每人限购一张,是否可以以 20% 的价格买第二张,尤其是在并发的时候
比如,一共只有 1000 张 20% 价格的票,第 1001 张是否按原价出售了,买到第 1000 张的时候并发会不会有更多的人买到特价票
20% 这个折扣也需要测试,会不会有小数产生
具体测试起来就多了,前台展示、后台接口、数据库、性能、中断、弱网等

2000 个并发,其实是测试的服务端。

列出不同的测试点就好写用例,然后去掉冗余的,最好去执行吧

我感觉这道题目主要测试的是功能业务方面的呢。首先,电影票只有 1000 张可以打 2 折。超过了 1000 这个数目公司就赔本了,所以边界值是测试的重点。并发这个情况是要考虑的方面,我觉得没问题啊。

弱弱地问一下,并发测试应该不是在 app 端做吧?
问题关注 ing...

个人觉得这个问题最重要的就是 超卖,即使是 app 也要考虑服务器端测试
1 人的限购超卖
1000 张的限优惠超卖
总的来说题出的还是不错的,感觉是面的电商 app

Ron #25 · 2016年04月19日 Author

#6 楼 @zhangzhao_lenovo 确实是面试电商 app

Ron #24 · 2016年04月19日 Author

#2 楼 @as333vvvv 好像记得是客户端 + 服务器端都考虑进去

Ron #23 · 2016年04月19日 Author

#1 楼 @henry 确实,不过我当时回答也局限在点上,没有从面铺开,可能没有考虑内存 cpu 网络场景,及线上测试等。

Ron #12 · 2016年04月19日 Author

#4 楼 @jamesparagon 我估计我没回答全,或者没回答在重点上。。。

Ron #13 · 2016年04月19日 Author

#5 楼 @4amla 嗯,应该测试接口的并发

Ron #20 · 2016年04月19日 Author

#7 楼 @sordar 谢谢 受益了。

Ron #19 · 2016年04月19日 Author

#8 楼 @xie_0723 如果当初按你这个回答,我估计是通过面试的,呵呵。 如果还能再加上是否对原有功能产生影响的测试用例会比较好

#15 楼 @pacerron
#8 楼 @xie_0723 8 楼好牛!膜拜专业的测试修养

Ron #17 · 2016年04月19日 Author

#16 楼 @jamesparagon 个人判断 7 楼应该更牛一点点 呵呵。

1、分析需求,关注重点:移动 app、活动、电影票、20% 的价格、1000 张、限购 1 张
2、功能测试就根据刚才的重点分析了
移动 app:加上这是个活动,所以需要考虑弱网络下;网络流量需要考虑图片是否使用缩略图;用户体验……;稳定性 l;
活动:H5 的可能比较大,但还是应该问清楚点;webview 如何测试;活动如何上线,能否正确进入活动界面
电影票:电影票是某一部电影,还是所有在售电影;选座是否正常;已售座位的信息更新是否及时;电影的相关信息是否正确;
20% 的价格:购买方式(网银、支付宝、微信)是否正常;可能存在的安全漏洞;折扣是怎么计算的,数据库需要传哪些参数;退款时退款数额是否正确;购买时提交异常数据能否正常处理
1000 张:1000 张的等价类划分;如何处理并行,N 个人同时付款一张票;如果有允许等待 30min 内付款,那等待付款时这张票能否允许其他人付款;退款的票能否重新购买
限购:根据什么信息限购,eg 手机号、app 账号…;重复购买能否成功;买了后退款重新买是否正常;如果有允许等待 30min 内付款,那第一张不付款,购买第二张会怎么样…;能否通过抓包修改参数购买多张
3、压测,峰值并发的设计

然后作为负责人,还得知道上线时间;开发是否留有足够测试时间;手下多少人、怎么分配人员;根据时间还得考虑接口测试、自动化测试范围和时间、组内测试用例评审

很久没看过电影,测试经验不多,也没处过管理的位置。。还是等有经验的人来补充吧

Ron #14 · 2016年04月20日 Author

#18 楼 @monkey NB,让我拓宽了视野。我最近面试,碰到问我设计题,我一般也会反问我的测试目的是什么,我处于什么阶段。但面试官基本都会说你要考虑全面,有时问我自动化测试设计,我也会反问,这个可能先要考虑是否需要做自动化。为了面试,最后,我一般会说,哦 ,那么我就假设是要做全面的测试或者假设我们已经决定做自动化测试。发觉目前很多公司的面试官不最求设计测试,只最求解决某个技术点,即绕过设计分析,直接做方法

Ron #13 · 2016年04月20日 Author

#19 楼 @snowmaster 比我当时的回答全面多了

看了@monkey的分析,感觉测试真是博大精深。然而从楼主的面试经历来看,面试官似乎并没有准备给予楼主一个 “满意” 的答复,或许这个问题他也答不完整呢。你看楼上各位老师的分析,洋洋洒洒这么多,一两句话根本说不完。

#22 楼 @jamesparagon 其实倒也不是说一定要说那么多,关键是面试官本身问问题肯定是有重点的,我们不问上下文很难回答到所谓的痛点上,那么面试自然很容易失败。。。。

#20 楼 @pacerron 是的 我感觉面试官问你这个问题的时候心里就是他想到的几个点,你能答上来了就 ok,你真跟他长篇大论一通他还未必听得下去

补充:很多人提到服务端的性能测试,实际上服务端的性能需求是没给的,1000 个是业务上的需求,因为是不同帐号,所以客户端的自动化脚本来实现比较麻烦,要不断切换帐号,比较好的方式是写接口测试脚本,然后参数化帐号消息。至于服务端的性能,要问清楚具体需求,一天有多少活跃用户,然后来计算并发量,设计服务端性能测试方案。

#18 楼 @monkey 牛,看来测试真是达到一定境界了

长见识了,mark~

#18 楼 @monkey 看语句测试负责人的意思是你负责这个功能的测试,而不是你是测试组长,在我看来这个功能一个人负责测试是没问题的。

如果是我的话,我一般就是围绕 20%、1000、1 这 3 个数据展开测试,基本都是边界值测试。另外一个重点就是电影票的业务逻辑了,票价、票数、订单支付、取消、未支付、活动有效期等

只想在每人限购 1 张这块说一下自己的想法,这块要搞清楚所谓的限购,是服务端判断的用户 ID 还是设备 ID,用户 ID 的话就存在薅羊毛的情况了

Chenyu 回复

用户 id 在系统还能不唯一吗?一个用户不能登录多台设备吗?

【有一个移动 app 电影票,现有个活动,能以 20% 的价格买入 1000 张电影票,每人限购 1 张】,不应该限购 1 张吧,是限购 1 次吧,此题有 bug

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册