测试用例的设计
出处:按学科分类—工业技术 企业管理出版社《工程师手册》第998页(1946字)
测试用例的设计是测试中的关键问题。
测试的策略是用有限个测试用例的执行来发现尽可能多的错误。
测试用例包括输入数据和预期的输出结果。不仅要选用合理的输入数据作测试用例(测试在合理的输入数据下是否得到预期输出),还要选择不合理的输入数据作测试用例(测试在不合理的输入数据下会有什么后果)。
在软件测试之前,要设计好测试用例。
设计测试用例的方法有很多种,常用的有边缘值分析法、代表性数据分析法、错误推测法、语句覆盖法、判定覆盖法、条件覆盖法、判定/条件覆盖法、条件组合覆盖法等。
众多的软件测试方法可归纳为白盒测试法、黑盒测试法和灰盒测试法3类。
白盒测试法是根据被测对象的设计逻辑来设计测试用例,用以暴露其逻辑错误。
黑盒测试法是根据被测对象的功能要求来设计用例,用以检查它是否满足规定的要求。
灰盒测试法是白盒测试法与黑盒测试法的混合。
不同的测试,采用不同的测试方法。对于模块测试,通常用软件系统的详细设计中的逻辑流程来设计测试用例,即采用白盒测试法。对于确认测试,通常根据软件需求说明书中对需求的定义来设计测试用例,即采用黑盒测试法。
1.功能覆盖法 功能覆盖法是根据软件的功能来设计测试用例的,它属于黑盒测试法。常用的功能覆盖法有边缘值分析法、代表性数据分析法和错误推测法等。
(1)边缘值分析法 不少软件的问题往往出在边缘值的情况下,这是值得吸取教训的经验。因此,边缘值分析法选取一些边缘值的输入数据或使预期输出为边缘值的输入数据来设计测试用例,用以分析在输入或输出的边缘值情况下软件的功能是否得到保证。
(2)代表性数据分析法 代表性数据分析法选取有代表性的合理或不合理输入数据来设计测试用例。
(3)错误推测法 错误推测法根据推测分析一些可能存在的错误,由此设计可发现这些错误的测试用例。
2.逻辑覆盖法 逻辑覆盖法着眼于所设计的测试用例能对软件的内部逻辑进行测试,它属于白盒测试法。逻辑覆盖法又可分为语句覆盖法、判定覆盖法、条件覆盖法、判定/条件覆盖法、条件组合覆盖法等。
(1)语句覆盖法 语句覆盖法着眼于选取足够的测试用例,使程序中的每个语句至少执行一次。
(2)判定覆盖法 判定覆盖法着眼于选取足够的测试用例,使程序中的每个判定都至少获得一次真值和一次假值,从而每个分支至少被通过一次。
(3)条件覆盖法 条件覆盖法着眼于选取足够的测试用例,使程序中的每个简单条件(一个判定表达式可以是多个简单条件的得合)都获得各种可能的结果。
(4)判定/条件覆盖法 判定/条件覆盖法着眼于选取足够的测试用例,使程序中各判定表达式中的每个简单条件取到各种可能的值,并使每个判定都取得各种可能的结果。
(5)条件组合覆盖法 条件组合覆盖法着眼于选取足够的测试用例,使程序中每个判定表达式中的简单条件能够取到各种可能的组合情况。
在逻辑覆盖法中,条件组合覆盖标准是最强的覆盖标准。但是,满足条件组合覆盖标准的测试用例,不一定能通过程序中的所有路径。任何一种逻辑覆盖标准都不足以成为唯一的测试标准,还需其他测试方法加以补充。
在测试用例的实际设计中,通常采用多种方法混合的互相补充的措施。例如,先用边缘值分析法设计一些测试用例,然后补充一些用代表性数据分析法设计的测试用例,接着再补充一些用错误推测法设计的测试用例,最后补充一些用逻辑覆盖法设计的测试用例。这样的混合测试可取得较佳的测试效果,即用尽量少的测试来发现尽可能多的错误。