1.引言
测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求
测试用例目前没有经典的定义,比较通常的说法是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档
由于对软件测试用例的作用和设计方法的理解不同,测试人员对软件测试用例存在不少片面的认识,具体表现在以下三个方面:
(1)测试输入数据设计方法等同于测试用例设计方法
一些测试书籍和文章经常这样表述:测试用例的设计方法包括:等价类、边界值、因果图、错误推测法、场景设计法等这种表述是不全面的,这些方法只是软件功能测试用例设计中如何确定测试输入数据的方法,而不是测试用例设计的全部内容测试用例设计是确定测试的输人数据过程,包括如何根据测试需求、设计规格说明等文档确定测试用例的设计策略、设计用例的表示方法和组织管理形式等内容
(2)测试用例设计得越详细越好
尽可能设计足够多的设计用例,制定详细的用例执行步骤,以达到“任何一个人都可以根据测试用例执行测试”,这些都不是测试用例设计的本意编写测试用例的根本目的是高效的发现软件产品中可能存在的缺陷,因此设计测试用例时应把握用最少的测试用例尽可能的覆盖测试需求,从而达到“少花时间多办事”的效果
(3)测试用例设计是一成不变的
在软件生命周期过程中,存在用户对软件的功能的变更,设计规格的更新,软件代码的细化等情况因此,设计软件测试用例与软件开发设计应当并行开展,并随着软件设计的变化进行相应调整,以保证设计的用例满足测试需求
软件的类别、用户需求和测试目的不同,其测试用例也是不同的本文主要从用户对软件的需求为着眼点,结合系统测试用例的设计,说明软件需求对软件测试用例设计的影响,使得测试用例更趋于针对软件产品的功能、任务规则和任务处理所设计的测试方案
2.基于需求的测试用例
2.1 软件测试需求分析
软件测试的需求有三个层次,即任务需求、用户需求、功能需求,测试需求分析和测试用例设计参照的是软件需求规格说明书
在软件需求规格说明书中的功能需求描述了软件系统所应具有的外部行为对一个大型系统来说,软件功能需求可能只是系统需求的一个子集作为功能需求的补充,软件需求规格说明还应包括隐含需求,它描述了系统展现给用户的行为和执行的操作等包括产品必须遵从的标准、规范和合约;外部界面的具体细节;性能要求;设计或实现的约束条件及质量属性
测试需求的主要来源是系统需求规格说明书,但有些需求是无法从需求文档中获得,可借助概要设计文档或者详细设计文档中获得,或直接从最终的软件产品上获得测试人员依据这些信息编写测试需求,为了提高需求分析的覆盖率,用例设计人员可通过分析软件的任务规则和工程测试经验,提出软件产品隐含的需求,以保证最终的测试需求满足测试要求
2.2 测试用例设计
测试用例的设计也就是测试需求细化的过程,可以说,有多细的测试需求,就有多细的测试用例在测试用例的具体设计中,通常采用等价类划分法划分有效和无效的数据集,采用边界值法找到被测软件的输入数据的边界值数据,在基于需求的测试用例设计中,此两种方法既是基础又是补充,当测试数据量比较大时,通常采用自动化测试工具或正交试验法测试用例的内容项可依据具体情况而定,通常包含测试用例编号、测试操作步骤和预期结果等在软件系统测试过程中,软件需求决定了测试用例设计,而测试用例设计的效果则直接决定了整个软件测试项目的成败,因此测试需求分析和测试用例设计是密不可分的,前者是后者的依据,后者是前者的体现,做好需求到测试用例的转化,才能保证整个测试项目的效果
2.3 测试用例运行
在软件系统测试过程中,软件测试需求决定了测试用例设计,而测试用例设计关系到测试用例的运行,应该说,设计出了什么样的测试用例,就需要针对性的选择测试用例运行方式测试用例的运行一般采用测试者手工运行,编写驱动程序运行、借助自动化工具(如QTP)等方式运行测试用例设计的优劣直接关系着测试用例运行的工作量,编写脚本自动运行程序是解决此问题的不错方式现阶段,编写脚本自动运行程序来驱动测试用例是用例运行的趋势,这不仅可以节约第一次测试的工作量,而且还可以减少后续的回归测试的工作量
3.测试用例设计实例
本文在这里将举例说明基于需求的测试用例设计过程,被测软件如图1所示,并比较不同的需求对测试用例设计的影响
3.1 软件需求