软件测试的目的是通过测试,发现软件错误,验证软件是否满足软件需求规格说明和软件设计所规定的功能、性能及其软件质量特性的要求,为软件质量的评价提供依据。
按使用的测试技术不同可以将测试分为静态测试和动态测试,进一步地可以将静态测试分成静态分析和代码审查,将动态测试分成白盒测试和黑盒测试。
代码审查(包括代码评审和走查)主要依靠有经验的程序设计人员根据软件设计文档,通过阅读程序,发现软件错误和缺陷。代码审查一般按代码审查单阅读程序,查找错误。代码审查的内容包括:检查代码和设计的一致性;检查代码的标准性、可读性;检查代码逻辑表达的正确性和完整性;检查代码结构的合理性等。代码审查虽然在发现程序错误上有一定的局限性,但它不需要专门的测试工具和设备,且有一旦发现错误就能定位错误和一次发现一批错误等优点。
静态分析主要对程序进行控制流分析、数据流分析、接口分析和表达式分析等。静态分析一般由计算机辅助完成。静态分析的对象是计算机程序,程序设计语言不同,相应的静态分析工具也应不同。目前具备静态分析功能的软件测试工具有很多,如Purify、Macabe等。
白盒测试是一种按照程序内部的逻辑结构和编码结构设计并执行测试用例的测试方法。采用这种测试方法,测试者需要掌握被测程序的内部结构。白盒测试通常根据覆盖准则设计测试用例,使程序中的每个语句、每个条件分支、每个控制路径都在程序测试中受到检验。白盒测试需要运行程序,并能在运行过程中跟踪程序的执行路径。
黑盒测试是一种从软件需求出发,根据软件需求规格说明设计测试用例,并按照测试用例的要求运行被测程序的测试方法。它较少关心程序内部的实现过程,侧重于程序的执行结果,将被测程序看成是不可见的黑盒子,因此被称为黑盒测试。黑盒测试着重于验证软件功能和性能的正确性,它的典型测试项目包括功能测试、性能测试、边界测试、余量测试和强度测试等。
软件测试工作规程包含制定“软件测试计划”、编写“软件测试说明”、执行软件测试、编制“软件测试报告”、修正软件测试过程中发现的问题、软件测试阶段评审。
软件测试阶段包含:
(1)计算机软件单元测试。适用对象为任一计算机软件单元。
(2)计算机软件集成测试。适用对象为由计算机软件单元组装得到的计算机软件部件。
(3)计算机软件确认测试。适用对象为完整的软件。
(4)系统测试。适用对象为整个计算机系统,包括硬件系统和软件系统。
软件测试应由独立于软件设计开发的人员进行,根据软件项目的规模等级和安全性关键等级,软件测试可由不同机构组织实施。
(1)软件单元测试由承建单位自行组织,一般由软件开发组实施测试。
(2)软件集成测试由承建单位自行组织,软件开发组和软件测试组联合实施测试。
(3)软件确认测试由承建单位自行组织,软件测试组实施测试。
(4)系统测试应由业主单位组织,成立联合测试组(一般由专家组、业主单位、软件评测单位、承建单位等联合组成测试组)实施测试。
软件测试完毕后需要纠错,纠错时间应该注意的问题有:
(1)承建单位在测试过程中应编制“软件问题报告”和“软件变更报告”,描述在配置控制下的软件或文档中发现的各种问题,纠错工作和解决问题所进行的各项活动。
(2)承建单位应建立和实施纠错工作规程,以便处理在配置控制下和按产品合同要求进行软件开发活动中发现的问题。纠错工作规程应遵照《软件配置管理》执行。