-------------原创-------
测试人员设计测试用例首先得了解什么是测试用例,测试用例在测试工作中是干什么用的,怎么根据需求采用怎样的测试方法设计测试用例。
一、测试用例的定义
对测试用例的概念大家都很清楚,我把定义写出来放在这里好像是多余的请别笑话,毕竟多温习一下以前的知识比什么都好。
测试用例(test case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求(测试用例的定义)。
比较通常的说法是:指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容/要素包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。根据我在网上查找的资料了解到测试用例可分为正面测试用例和负面测试用例:
一个测试用例用于证明该需求已经满足,通常称作正面测试用例(个人理解是直接可以验证需求的测试用例,不需要任何外界测试环境/条件所支配);
另一个测试用例反映某个无法接受、反常或意外的条件或数据,用于论证只有在所需条件下才能够满足该需求,这个测试用例称作负面测试用例(在现实测试中这样的负面测试用例好像用的多些)。
二、测试用例的作用
在我们测试工作中,当拿到一个CQ,首先得明白需求提交人提交这个需求的目的是让我们测试人员测试哪些功能点、测试源在哪?然后我们才能根据测试需求准备测试环境/数据,编写测试计划/测试用例、执行测试用例、测试风险评估、提交测试报告和结论单等。而在这些测试工作流程中最重要的就是设计测试用例拉,因为测试用例的数量与测试的“深度”成比例,也与软件的质量保障成正比;设计好的测试用例也是衡量一位测试工程师测试水平的重要依据,不管是功能黑盒测试还是自动化测试(也包括性能测试),上次开会苑海林讲的就很清楚了。因此我们可以这么说设计测试用例是软件测试的核心工作,更是软件测试质量保障的根本。
三、设计(黑盒测试)测试用例的方法
我们都知道黑盒测试的方法主要有等价类划分、边值值分析、因果图、错误推测等(正交试验法、场景法),其中最重要的就是等价类划分和边界值分析。当我们拿到一个需求怎么才能利用这样的测试方法设计测试用例呢?
1.等价类划分
使用等价类划分方法时完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据做为测试用例。比如有一次国航开发小组提交过来的需求中提到“旅客提前15天(含)订票的可以享受2.5折的优惠;提前30天(含)订票的旅客可以享受2折的优惠”。
————根据此需求我列了一个关于设计该测试用例的等价类列表:
X代表旅客订票所提前天数
| 等价类划分 | 有效等价类 | 无效等价类 |
情况1 | X<当天 | | 程序给出不能订票提示 |
情况2 | 当天<=X<15天 | | 按原价订票,不享受任何优惠产品 |
情况3 | 15天<=X<30天 | 旅客可享受2.5折优惠 | |
情况4 | X>=30天 | 旅客可享受2折优惠 | |
根据列出的等价类列表,重点分析等价类情况3和情况4。
1. 针对情况3,然后选取有代表性的提前天数进行订票测试:比如提前16天订票、提前25天订票、提前26天订票;
2. 针对情况4,选取有代表性的天数进行订票测试:比如提前45天订票、提前60天订票、提前75天订票、提前100天订票等等数据输入;
设计这样的测试用例是很不完整的,因为它还没有使用边界值分析法对等价类/需求进行分析。由测试工作经验得知,大量的BUG是在输入范围的边界上被发现的,而不是在输入范围的内部。
2.边界值分析法
边界值分析法是对等价类划分方法的补充。它不是从一个等价类中任选一个例子作为代表,而是将等价类的边界作为重点目标,选取正好等于、刚刚大于或刚刚小于边界值的测试数据。
还是使用上面的等价类列表利用边界值分析方法继续设计没有完成的测试用例:
3. 针对情况3(15天<=X<30天),找出此等价类的边界值为提前15天、29天、30天,和无效输入边界值提前14天的情况设计测试用例。使用有效边界值提前天数订票,是否能订到折扣为2.5折的机票;
4. 针对情况4(X>=30天),找出此等价类的边界值为提前30天,和无效输入边界值提前29天的情况设计测试用例。使用有效边界值提前天数订票,是否能订到折扣为3折的机票;
分析到这里,设计出来的测试用例才算是一个完整的用例,但是这只仅仅覆盖了测试需求,还需要我们做其他兼容性测试充实测试用例。
我们有时候设计测试用例时只考虑边界值的情况,不考虑等价类的情况,或者只考虑等价类的情况,不考虑边界值的情况,这都是不对的,设计的测试用例也是不完整的,这是对产品质量不负责任的表现,同时也说明了测试人员的水平。