本人最近被面试了一道题目,是这样的,
有一个移动 app 电影票,现有个活动,能以 20% 的价格买入 1000 张电影票,每人限购 1 张,作为测试负责人如何设计这个测试。
我说是测试功能性,用户体验,以及重点测试并发,比如 2000 个并发测试,看系统有问题。
面试官说我不了解 app 测试,不知道是不是测试重点搞错了。
特殊的地方就在边界条件
比如,每人限购一张,是否可以以 20% 的价格买第二张,尤其是在并发的时候
比如,一共只有 1000 张 20% 价格的票,第 1001 张是否按原价出售了,买到第 1000 张的时候并发会不会有更多的人买到特价票
20% 这个折扣也需要测试,会不会有小数产生
具体测试起来就多了,前台展示、后台接口、数据库、性能、中断、弱网等
2000 个并发,其实是测试的服务端。
列出不同的测试点就好写用例,然后去掉冗余的,最好去执行吧
我感觉这道题目主要测试的是功能业务方面的呢。首先,电影票只有 1000 张可以打 2 折。超过了 1000 这个数目公司就赔本了,所以边界值是测试的重点。并发这个情况是要考虑的方面,我觉得没问题啊。
弱弱地问一下,并发测试应该不是在 app 端做吧?
问题关注 ing...
个人觉得这个问题最重要的就是 超卖,即使是 app 也要考虑服务器端测试
1 人的限购超卖
1000 张的限优惠超卖
总的来说题出的还是不错的,感觉是面的电商 app
移动端的测试的业务流程测试是基础,这个用通常测试用例设计思路没有什么本质上的不同,什么边界值等价类并没有什么难度,有所区别的是以下几点,个人意见仅供参考:
功能性:
1:检查是否以实际价格的 20% 购入
2:检查是否每个人限制为 1 张,如果一个人买 2 张的话是否可以通过验证
3:检查上限 1000 张全部售出验证是否还可以继续购买
4:因为是移动 APP 的一个活动,应该是H5的页面,需要要考虑该方面的检查
①:前端是否可以实时刷新
②:前端提示是否友好,例如:“提示一个用户只可以购买一张” 或 “已全部售罄” 等等
③:既然是活动,考虑活动时间范围检查。
兼容性:
1:在不同设备,不同系统,不同系统版本该 “活动” 的兼容性检查
性能:
1:考虑并发,高峰等测试(性能不熟悉)等等把
2:加载H5页面的时间。
可靠性检查
1:模拟monkey测试10000次检查活动页面的可靠性
服务器端检查
1:活动相关接口性能,接口的响应时间,平均时间等等
2:检查前端提交的表单数据,数据方面的检查(具体没做过,不太清楚,但是我想应该考虑下数据方面)
专项测试:
1:该活动界面的 CPU,GPU,耗电量,流量消耗检查等等
2:弱网络,不同网络 wifi,3G ,4G 浏览的情况
3:断网情况下的检查
4:提交按钮双击检查。
5:最好做下 fiddler 的抓包,篡改数据后重新发包,看后端的处理。
体验检查:
因为是一个电影 app 的售票活动,用户应该基本是青年
所以考虑,界面的交互是否简单,提示是否友好,界面设计是否美观大方等等
ps:自己花费 10 分钟不到,随便写的,主要锻炼下自己的用例策略设计思维,写的烂或者不对的地方,请指出。谢谢
#6 楼 @zhangzhao_lenovo 确实是面试电商 app
#2 楼 @as333vvvv 好像记得是客户端 + 服务器端都考虑进去
#4 楼 @jamesparagon 我估计我没回答全,或者没回答在重点上。。。
#16 楼 @jamesparagon 个人判断 7 楼应该更牛一点点 呵呵。
好吧。难得看到这样的题目,我也来回答下吧。
有一个移动 app 电影票,现有个活动,能以 20% 的价格买入 1000 张电影票,每人限购 1 张,作为测试负责人如何设计这个测试。
我说是测试功能性,用户体验,以及重点测试并发,比如 2000 个并发测试,看系统有问题。
Monkey:
首先就如过现场真的是这个问题的话,按照我的原则,就是要先问清楚。如过我是测试的 leader,那么我有多少人,分别是什么水平。然后我再去进行相关的测试设计,否则一切都是扯淡。
一个 app,电影票。那么这个实现是怎么实现的,架构怎么样的?这个如果对方不说,我就拒绝回答这个问题。比如选座位是不是 H5 的,然后其他是不是 native 的,等等。
那么接下来就是分析 3 个点了。一个就是产品特性,就是业务特性。一个就是移动端的特性,因为毕竟是 app。一个就是技术特性,比如什么是手工去做,什么是自动化去做,怎么做。
关键字:电影票、活动、20%、1000 张、每个人限购一张
好,那么接下来就从业务来分析这个特性。(虽然我没有测试过,我就是 YY)
电影票有选电影院,选座,选场次,选地区等等,那么这个其中的等价类,边界值都是需要去考虑的。场景我们可以认为从 PRD 中都可以获取
活动,既然是一个活动,那么肯定是一个 hybrid 的应用,但是至于哪些 webview,这个我之前也说了,一定要去问清楚。那么活动本身包括怎么上线,怎么下线,是否有提示等等,就是动态相关的一些功能点也是需要去测的
20%:多少价格的 20%?整数?小数?就是数字上的工作了
1000 张:的确这个就是所谓的压测了。那么我们就需要从性能测试角度来做测试了。肯定不可能是手工测试,而且压测的目标是服务器
每个人:ok,这其实是个很重要的点。我们怎么来定义每个人。app 可能有独立的账户体系,也可能是第三方登录系体系。也可能两种并存,但是无论哪种,是否能够保证我们的应用可以识别每个人是不是就是同一个人呢?这个问题很值得去思考
1 张:ok,那么每个人一张。活动的确是一张。那么我们从几个方面来考虑。比如混合去买活动+非活动的票?比如买了退票,再买?比如我看完了,用完了,再买?
这就太多了,比如功能可以和移动端的本身的特性,比如 home,menu,电话呼叫,闹钟等各种功能结合
比如上面这些情况在弱网下是不是会出现不可预料的 bug?
那么 app 本身 hybrid 的性能也是去测试的,可以详细见社区的专项测试
那么还有安全呢?注入?数据篡改?数据敏感?等等
可能还有很多
考虑哪些走 Appium?走 uiautomator?走压测,走手工等等。其实主要就是上面这些理清楚了,之后就很好定义了。
我个人碰见这种问题,其实很不爽,因为除非对方有本事给我说明清楚这些,否则不回答,回答了也是没有意义的。不过自己可以主动问,毕竟对方回答不出是对方的问题,你不问就是你的问题了
1、分析需求,关注重点:移动 app、活动、电影票、20% 的价格、1000 张、限购 1 张
2、功能测试就根据刚才的重点分析了
移动 app:加上这是个活动,所以需要考虑弱网络下;网络流量需要考虑图片是否使用缩略图;用户体验……;稳定性 l;
活动:H5 的可能比较大,但还是应该问清楚点;webview 如何测试;活动如何上线,能否正确进入活动界面
电影票:电影票是某一部电影,还是所有在售电影;选座是否正常;已售座位的信息更新是否及时;电影的相关信息是否正确;
20% 的价格:购买方式(网银、支付宝、微信)是否正常;可能存在的安全漏洞;折扣是怎么计算的,数据库需要传哪些参数;退款时退款数额是否正确;购买时提交异常数据能否正常处理
1000 张:1000 张的等价类划分;如何处理并行,N 个人同时付款一张票;如果有允许等待 30min 内付款,那等待付款时这张票能否允许其他人付款;退款的票能否重新购买
限购:根据什么信息限购,eg 手机号、app 账号…;重复购买能否成功;买了后退款重新买是否正常;如果有允许等待 30min 内付款,那第一张不付款,购买第二张会怎么样…;能否通过抓包修改参数购买多张
3、压测,峰值并发的设计
然后作为负责人,还得知道上线时间;开发是否留有足够测试时间;手下多少人、怎么分配人员;根据时间还得考虑接口测试、自动化测试范围和时间、组内测试用例评审
很久没看过电影,测试经验不多,也没处过管理的位置。。还是等有经验的人来补充吧
#19 楼 @snowmaster 比我当时的回答全面多了
看了@monkey的分析,感觉测试真是博大精深。然而从楼主的面试经历来看,面试官似乎并没有准备给予楼主一个 “满意” 的答复,或许这个问题他也答不完整呢。你看楼上各位老师的分析,洋洋洒洒这么多,一两句话根本说不完。
#22 楼 @jamesparagon 其实倒也不是说一定要说那么多,关键是面试官本身问问题肯定是有重点的,我们不问上下文很难回答到所谓的痛点上,那么面试自然很容易失败。。。。
补充:很多人提到服务端的性能测试,实际上服务端的性能需求是没给的,1000 个是业务上的需求,因为是不同帐号,所以客户端的自动化脚本来实现比较麻烦,要不断切换帐号,比较好的方式是写接口测试脚本,然后参数化帐号消息。至于服务端的性能,要问清楚具体需求,一天有多少活跃用户,然后来计算并发量,设计服务端性能测试方案。
长见识了,mark~
如果是我的话,我一般就是围绕 20%、1000、1 这 3 个数据展开测试,基本都是边界值测试。另外一个重点就是电影票的业务逻辑了,票价、票数、订单支付、取消、未支付、活动有效期等
只想在每人限购 1 张这块说一下自己的想法,这块要搞清楚所谓的限购,是服务端判断的用户 ID 还是设备 ID,用户 ID 的话就存在薅羊毛的情况了
【有一个移动 app 电影票,现有个活动,能以 20% 的价格买入 1000 张电影票,每人限购 1 张】,不应该限购 1 张吧,是限购 1 次吧,此题有 bug