一、静态方法与动态方法
(一)静态测试
不运行被测试的软件系统,而是采用其他手段和技术对被测软件进行检测的一种测试技术。比如:代码走读,文档评审,程序分析等。
(二)动态测试
按照预先设计的数据和步骤去运行被测软件系统,从而对被测软件系统进行检测的一种测试技术。
二、黑盒测试与白盒测试
(一)黑盒测试(Black-box Testing)
黑盒测试又称功能测试、数据驱动测试或基于规格说明的测试(Specification-based Testing)。
具体的黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法、场景法等。
黑盒测试法注重于测试软件的功能需求,主要试图发现下列几类错误:
- 功能不正确或遗漏;
- 界面错误;
- 输入和输出错误;
- 数据库访问错误;
- 性能错误;
- 初始化和终止错误等。
(二)白盒测试(White-box Testing)
白盒测试又称结构测试、逻辑驱动测试或基于程序的测试(Program-based Testing)。
白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。六种覆盖标准发现错误的能力呈由弱到强的变化:
- 语句覆盖每条语句至少执行一次。
- 判定覆盖每个判定的每个分支至少执行一次。
- 条件覆盖每个判定的每个条件应取到各种可能的值。
- 判定/条件覆盖同时满足判定覆盖条件覆盖。
- 条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
- 路径覆盖使程序中每一条可能的路径至少执行一次。
(三)黑盒测试与白盒测试的比较
三、测试步骤
为了说明软件测试策略,可以报这个过程表达成一个螺旋。
以上螺旋线表明的测试过程,按四个步骤进行,即单元测试、集成测试、确认测试和系统测试。
(一)单元测试(Unit Testing)
单元测试是指对软件中的最小可测试单元进行检查和验证。
单元测试要解决5个方面的问题。
单元测试常被当作代码编写的附属步骤,它是在完成了程序编写并复查,确认没有语法错误以后,针对每个程序模块单独进行的测试工作。
(二)集成测试(Integrated Testing)
每个模块完成单元测试以后需按照设计时作出的结构图把它们联接起来,进行集成测试。
集成测试有两种不同的方法,即非增式测试和增式测试。
非增式测试
增式测试
(三)确认测试(Validation Testing)
确认测试又称有效性测试。有效性测试是在模拟的环境下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求。任务是验证软件的功能和性能及其他特性是否与用户的要求一致。
- 确认测试标准
实现软件确认要通过一系列黑盒测试。确认测试同样需要制订测试计划和过程,测试计划应规定测试的种类和测试进度,测试过程则定义一些特殊的测试用例,旨在说明软件与需求是否一致。
确认测试的结果有两种可能,一种是功能和性能指标满足软件需求说明的要求,用户可以接受;另一种是软件不满足软件需求说明的要求,用户无法接受。 - 配置复审
确认测试的另一个重要环节是配置复审。复审的目的在于保证软件配置齐全、分类有序,并且包括软件维护所必须的细节。
(四)系统测试(System Testing)
比较常见的、典型的系统测试包括恢复测试、安全测试、压力测试。
- 恢复测试
恢复测试作为一种系统测试,主要关注导致软件运行失败的各种条件,并验证其恢复过程能否正确执行。在特定情况下,系统需具备容错能力。另外,系统失效必须在规定时间段内被更正,否则将会导致严重的经济损失。 - 安全测试
安全测试用来验证系统内部的保护机制,以防止非法侵入。在安全测试中,测试人员扮演试图侵入系统的角色,采用各种办法试图突破防线。因此系统安全设计的准则是要想方设法使侵入系统所需的代价更加昂贵。 - 压力测试
压力测试是指在正常资源下使用异常的访问量、频率或数据量来执行系统。在压力测试中可执行以下测试:
(1)如果平均中断数量是每秒一到两次,那么设计特殊的测试用例产生每秒十次中断。
(2)输入数据量增加一个量级,确定输入功能将如何响应。
(3)在虚拟操作系统下,产生需要最大内存量或其它资源的测试用例,或产生需要过量磁盘存储的数据。
四、人工测试
(一)人工测试概述
人工测试是由测试人员手工逐步执行,所有的活动并观察每一步是否成功完成,主要包含走查、审查和正式评审。
(二)软件审查
步骤:
- 制定计划
- 预审
- 准备
- 审查会
- 返工
- 终审