4.输出的预期
该项信息描述了在当前的输入条件下,预期的输出。比如计算器程序中十进制数字的2+3的输出应该等于5。若输出预期与实际结果不同,则应该考虑为Bug的可能性(有的时候,输出预期也会随项目的进度而变化,因此预期与实际不同并不意味着100%是Bug,此时需要与项目经理等相关人员进行协商)。
5.测试环境信息
这一部分的内容描述了该测试用例所适用的环境,比如操作系统的版本,所依赖硬件软件的版本、语言等。测试环境信息有时候也可以成为输入条件或者复现步骤的一部分,比如某个按钮只有在IE浏览器中才会出现、某个Bug只在IE浏览器中才会产生,那么IE既是测试环境信息,也是输入条件和复现步骤。
6.与其他测试用例的依赖关系
在测试某些软件的时候,比如MSN,如果登录这个测试用例都无法通过,那么剩下的发消息,发文件等测试用例也肯定继续进行(除去直接调用接口的那些测试之外),这就是一种测试用例之间的依赖关系。合理地应用测试用例之间的依赖关系,能够提高测试效率,减少无谓的测试时间浪费。
7.测试用例需要被开发、审阅、使用、维护和保存
这也是测试工作很重要的一部分。软件的说明书Spec可能会变化,因此测试用例需要变化,这就要求对测试用例进行增加、修改和删除。测试用例是文档,需要有固定的场所进行保存,一般是数据库或者文件。测试用例需要审阅,以达到预期的效果和更高的工作效率(重复的测试用例肯定会浪费测试工程师的时间)。
1.5 软件测试的核心II:测试工程师
除了测试用例之外,软件测试的另一个核心,同时也更为关键,就是测试工程师了。这是因为,测试用例也是由测试工程师来编写的,受人的因素影响很大。可以说,人是决定软件成败的主要因素。本节将介绍测试工程师所必备的一些素质。
1.5.1 测试工程师与软件质量保障
有的时候我们在招聘广告上能够发现有些公司招聘测试人员的时候,列出的职位名称是软件质量保障工程师(QA,quality assurance),那么这两种称呼是否是代表同一种工作内容呢?
回答是基本一样,但有细微不同。软件测试工程师的主要职责在于发现并确认Bug的解决与否,而软件质量保障工程师则更进一步,在测试工程师的职责之外,还包括创建、维护为保障软件质量而确立的规范、规则与流程,比如软件配置管理(Software Configuration Management,又称SCM工程师)等。
【字面意义的理解】
从字面意义上来看,测试工程师主要针对软件的已有Bug,类似体检部门;而软件质量保障工程师则不光针对已有Bug,还对预防Bug的产生提出建议,类似健康顾问。当然,在实际工作中,两者的区别并不是那么清晰的,在很多公司内部,他们所从事的工作内容是完全一致的。
1.5.2 测试工程师应该具备的素质
一个合格的测试工程师,应该具备如下专业素质:
具备基本的数据结构,操作系统等专业知识。这一点对于从事性能测试的人员来说更为重要。
具备一定的程序开发经验。掌握一到两门语言对于进行自动测试是大有益处的,另外,具有程序开发经验,也更容易理解软件Bug的来龙去脉。这一到两门语言可以是某些高级语言,比如C#和VB.net,以及一种脚本语言,比如JavaScript、VBScript或者Python等的组合。
软件使用经验丰富,对于软件的不正常行为敏感。这一点对于发现Bug是很有帮助的。
同时,测试工程师还应该具备如下的性格特征。
有好奇心,乐于探索软件功能,乐于尝试新的软件产品。
乐于探索谜题,追根溯源。对于一个Bug,必须有追根溯源的精神,才能够发现它的特点,这个性格特征在判断Bug的产生原因,以及是否与其他Bug重复等日常的工作内容中都会展现。