为了提高软件测试的效率,增进测试工作的广度和深度,越来越多的公司开始引入自动化测试自动化测试。本文通过笔者对测试用例设计和表达上的一些理解,阐述如何写好功能自动化测试友好的用例,供大家参考。
自动化测试有其自身的特点,按照笔者的经验,自动化在一个项目,乃至一个公司开展的成功与否,并不是仅仅依靠QTP等工具使用者的脚本编写水平的提高就可以掌控的。而因为其他的一些因素,一旦自动化测试失去了它本身的高效、可控的特点的话,那反而是得不偿失,会增加项目的成本。
自动化测试人员进入项目的时间可能不是最早的,对需求的理解并不是在第一时间就很容易做到的。测试用例作为测试需求的载体、测试执行的依据和工作量的评估,它设计和表达的优劣直接影响到自动化测试开展的前几个阶段,如:需求学习、筛选适合自动化测试的用例以及提取公司级或项目的可重用脚本等方面的工作效率。
1.步骤和数据的分离:
好的测试用例,在执行的步骤(Step)的表达上应该是尽可能和数据相分离。举例来讲,有一个ATM机取款的功能,可能有以下几个场景:
1) 密码正确的登录
2) 密码错误的登录
3) 密码输入三次错误,卡被锁定
4) 取少于余额的款项
5) 尝试取大于余额的款项
6) 尝试取等于余额的款项(考虑手续费)
6) 取款额度大于当次的限制
7) 取款额度大于当天的限制
8) 取款次数大于限制次数
等等
不管你用什么用例设计的方法论来做指导,作为这个简单的例子,有经验的人都应该能看出,此处的很多步骤是可以重用的,总结下来如下(此处只列出了操作的步骤,略去了系统的交互中的反馈结果):
1) 插入卡->A:输入密码->B:按“确定”键->重复A-B
2) A:选择取款功能->B:填写取款金额->C:点击“确定取款”的按钮->D:取现金->重复A-D
因此,我们只需要写出两套比较完整的步骤,将密码和取款金额多数字用参数来表达即可。这样是不是简单了很多呢?
2. 单独的测试基础数据准备工作
第一个例子中的输入数据比较简单,但我们同样需要考虑的一个问题是:在测试中究竟我们输入什么样的具体数据呢?什么是”正确的密码“?什么又是”大于余额的款项“呢?