抽奖活动的中奖事件是个随机事件,用大量的手动测试来检验中奖概率的正确性显然不可取,除了手工对中奖流程,后续处理的校验外,可以和开发配合,使用接口来测试中奖的概率是否符合预期的设计要求。
1.思路:
(1)开发提供中奖的接口,get该接口(此处需要向开发详细了解),每次随机返回以下四个结果:
0--表示未抽中
1--表示抽中1等奖
2--表示抽中2等奖
3--表示抽中3等奖
(2)使用for循环,多次请求该接口,并使用testNG框架中自带的设置多次执行方法和处理多线程的方法,使多个方法并发运行,缩短执行时间,来模拟大数据量下的中奖事件。
(3)对(2)中的中奖事件进行数据处理,获取各类中奖事件的概率。
2.代码
用例代码LotteryTestCase.java 如下:
3.结果
在testNG.xml中设置用例的路径,执行即可。综上可看,请求接口1000次,每个方法执行100次请求,执行10个该方法,每个方法的结果如下:
[TestNG] Running:
D:\krplus-api-test\testcase\testcase\Lottery\tesNG.XML
-------中奖次数--------
中奖失败的次数为16
中一等奖的次数为2
中二等奖的次数为9
中三等奖的次数为73
-------中奖概率--------
中奖失败的概率为0.16
中一等奖的概率为0.02
中二等奖的概率为0.09
中三等奖的概率为0.73
之后和设计中的概率进行对比即可!
在实践过程中的确发现通过这种接口测试可以发现概率和接口方面的问题:
1.第一次中奖时,即使运行1000次,一等奖中奖次数也是0,后来是因为开发重写代码不完整所致
2.运行时抛异常,运行单个接口发现有问题,如下:
网友评论