自从上世纪七八十年代全面爆发软件危机起,软件产业的发展过程中始终伴随着巨大的管理难题。整个软件产业存在着软件代价高、难于控制
开发进度、软件工作量估计困难、质量低,以及软件修改、维护困难等问题。而要解决这些问题,在很大程度上取决于提高软件的
设计、开发和测试质量。
随着
软件开发规模的增大,软件的质量问题越来越突出。
软件测试是提高软件质量的有效途径,在软件测试工作中投入的人力、物力、财力逐渐加大,国外有些软件公司的测试人员和开发人员的比例甚至达到1:1或2:1的程度,因此如何提高软件测试效率是每个软件研发单位和研发项目面临的严峻问题。
可测试软件具有以下特征:
1、可操作性 可操作性是指:被测软件的错误很少,可以避免重复测试的开销;没有阻碍测试连续执行的错误;在软件设计时应允许在开发阶段进行部分测试活动。
2、可控制性 可控制性是指:所有可能的输出都产生于某种输入组合;通过某种输入组合,所有代码都可能被执行;
软件测试人员可直接控制软件和硬件的状态及变量;输入和输出格式保持一致且有规范的结构;能够便利地对测试进行说明,以及方便地执行和重构测试。
3、可观察性 可观察性包括:每个输入有唯一的输出;系统状态和变量可见,或在运行中可查询;过去的系统状态和变量可见,或在运行中可查询;所有影响输出的因素都可见;容易识别错误输出;自动报告内部错误;可获取源代码。
4、可分解性 软件系统由众多独立模块构成,每个软件模块均可独立进行测试。
5、简单性 简单性包括功能简单性、结构简单性、代码简单性。
6、易理解性 易理解性包括:设计能够被很好地理解;内部、外部和共享构件之间的依赖性能够被很好地理解;测试人员可方便获取技术文档,并及时掌握设计更改情况;技术文档组织合理、明确详细。
7、稳定性 软件的变化是不经常的,变化是可控制的,软件的变化不影响已有的测试,失效后能够得到良好恢复。
实践证明,通过提高被测软件的可测试性,以及合理组织软件测试工作,可以有效地提高软件测试效率。随着软件测试的重要性得以承认,软件测试阶段在整个软件开发周期中所占的比重也日益增大。为了将缺陷和错误消灭在萌芽之中,软件测试将逐步发展成为软件开发每一阶段都要进行而且需要反复进行的活动。
软件测试中大量的工作是机械的、重复的、枯燥的和非智力的,但逐步加强软件自动化测试的研究和推广将是今后软件产业的发展趋势。