软件测试试论软件的可靠性及其保证[4] 软件测试
一般用的比较多的是软件构件重用。
软件重用的过程如下:候选,选择,资格,分类和存储,查找和检索。在选择可重用构件时,一定要有严格的选择标准,可重用的构件必须是经过严格测试的、甚至是经过可靠性和正确性证明的构件,应模块化(实现单一、的完整的功能)、结构清晰(可读、可理解、规模适当),且有高度可适应性。
4.使用开发管理工具
开发一个大的软件系统,离不开开发管理工具,作为一个项目管理员,仅仅靠人来管理是不够的,需要有开发管理工具来辅助解决开发过程中遇到的各种各样的问题,以提高开发效率和产品质量。
如Intersolv公司的PVCS软件开发管理工具,在美国市场占有率已超过70%,使用PVCS可以带来不少好处:规范开发过程,缩短开发周期,减少开发成本,降低项目投资风险;自动创造完整的文档,便于软件维护;管理软件多重版本;管理和追踪开发过程中危及软件质量和影响开发周期的缺陷和变化,便于软件重用,避免数据丢失,也便于开发人员的交流,对提高软件可靠性,保证质量有很大作用。
在我国,开发管理工具并没有得到有效地使用,许多软件公司还停留在人工管理阶段,所开发的软件质量不会很高。
人的管理比较困难,在保证开发人员素质的同时,要保持人员的稳定性,尽可能避免人员的经常流动。人员流动影响了软件的质量,工作连续性难保证,继承者不可能对情况了解很清楚等,也可能影响工作进程等。PVCS也提供了适当的人员管理方法。
5.加强测试
软件开发前期各阶段完成之后,为进一步提高可靠性,只有通过加强测试来实现了。为最大限度地除去软件中的差错,改进软件的可靠性,就要对软件进行完备测试。要对一个大的软件系统进行完备测试是不可能的,所以要确定一个最小测试数和最大测试数,前者是技术性的决策,后者管理性的决策,在实际过程中要确定一个测试数量的下界。总的来说,要在可能的情况下,进行尽可能完备的测试。
谁来做测试呢?一般说来,用户不大可能来进行模块测试,模块测试应该由最初编写代码的程序员来进行,要在他们之间交换程序进行模块测试,自己设计的程序自己测试一般都达不到好的效果。
测试前要确定测试标准、规范,测试过程中要建立完整的测试文档,把软件置于配置控制下,用形式化的步骤去改变它,保证任何错误及对错误的动作都能及时归档。
测试规范包括以下三类文档:
(1)测试设计规范:详细描述测试方法,规定该设计及其有关测试所包括的特性。还应规定完成测试所需的测试用例和测试规程,规定特性的通过/失败判定准则。
(2)测试用例规范:列出用于输入的具体值及预期输出结果。规定在使用具体测试用例时对测试规程的各种限制。
(3)测试规程规范:规定对于运行该系统和执行指定的测试用例来实现有关测试所要求的所有步骤。
测试的方法多种多样:
(1)走查(Walk-through),即手工执行,由不同的程序员(非该模块设计者)读代码,并进行评论。
(2)机器测试,对给定的输入不会产生不合逻辑的输出。
(3)程序证明或交替程序表示。
(4)模拟测试,模拟硬件、I/O设备等。
(5)设计审查,关于设计的所有各方面的小组讨论会,利用所获得的信息,找出缺陷及违反标准的地方等。
以上可以交替并行循环执行,在实际测试过程中要使用测试工具提高效率。
除正常的测试之外,还要对软件进行可靠性测试,确保软件中没有对可靠性影响较大的故障。制定测试计划方案,按实际使用的概率分布随机选择输入,准确记录运行时间和结果,并对结果进行评价。
没有错误的程序同永动机一样是不可能达到的。一般常用排错方法有试探法、追溯法、归纳法、演绎法。还要使用适当的排错工具,如UNIX提供的sdb和dbx编码排错工具,这些排错工具只有浏览功能,没有修改功能,是实际的找错工具。