对源程序最基本的质量要求是正确性和可靠性,此外还很注重软件的易使用性、易维护性和易移植性。
软件测试的工作量约占软件开发总工作量的40%以上,其目的是尽可能多的发现软件产品(主要是指程序)中的错误和缺陷。
软件测试是自底向上,逐步集成的过程,低一级测试为上一级测试准备条件;
测试的关键是测试用例的设计,其方法可分为两类。
一、白盒测试:
白盒测试把程序看成是装在一只透明的盒子里,测试者完全了解程序的结构和处理过程。白盒测试根据程序的内部逻辑来设计测试用例,检查程序中的逻辑通路是否都按预定的要求正确地工作。
白盒测试是根据程序的内部逻辑来设计测试用例,常用的技术是逻辑覆盖,即考察用例测试数据运行被测程序时对程序逻辑的覆盖程度。主要的覆盖标准有6种:
I. 语句覆盖
指选择足够的测试用例,使被测语句的每个语句至少执行一次。
II.判定覆盖
指选择足够的测试用例,使每个判定的所有可能结果至少出现一次。
III.条件覆盖
指选择足够的测试用例,使判定中的每个条件的所有可能结果至少出现一次。
IV. 判定/条件覆盖
指选择足够的测试用例,使判定中的每个条件的所有可能结果至少出现一次,并且每个判定中条件结果的所有可能组合也至少出现一次。
V. 条件组合覆盖
指选择足够的测试用例,使每个判定中条件结果的所有可能组合至少出现一次。
VI. 路径覆盖
指选择足够的测试用例,使流程图中的每条路径至少经过一次。
二、黑盒测试:
黑盒测试把程序看成是装在一只不透明的盒子里,测试者完全不了解(或不考虑)程序的结构和处理过程。黑盒测试根据规格说明书规定的功能来设计测试用例,检查程序的功能是否符合规格说明的要求
黑盒测试时根据规格说明所规定的功能来设计测试用例,它不考虑程序的内部结构和处理过程。
常用的黑盒测试技术有:等价类划分,边值划分,错误猜测
三、软件测试的主要步骤有单元测试、集成测试和确认测试。
1.单元测试:
主要用来发现编码和详细设计中产生的错误,一般在编码阶段,采用白盒测试。
2.集成测试(也称组装测试):
主要用来发现设计阶段产生的错误,是对各模块组装而成的程序进行测试,主要检查模块间的接口和通信,采用黑盒测试。
集成测试按集成方式又可分成非渐增式集成和渐增式集成,而渐增式集成又可分成自顶向下集成和自底向上集成。
3.确认测试:
检查软件的功能、性能和其他特征是否与用户需求一致,它以需求规格说明书作测试为依据,采用黑盒测试
大多数软件生产者使用一种Alpha 测试和Beta测试的过程,来揭露仅由最终用户才能发现的错误。
Alpha测试:是在开发者的现场由客户来实施的,被测试的软件是在开发者从用户的角度进行常规设置的环境下运行的。
Beta测试:是在一个或多个客户的现场由该软件的最终用户实施的。与Alpaha测试不同的是,进行Beta测试时开发者通常是不在场的。