3 结论和讨论
3.1 软件测试的重点
软件测试的重点是:
a. 测试用例和测试例程的良好设计。测试用例及测试例程的设计是整个软件测试工作的核心。测试用例反映对被测对象的质量要求,决定对测试对象的质量评估。
b. 测试工作的管理。尤其是对包含多个子系统的大型软件系统,其测试工作涉及大量人力和物力,有效的测试工作管理是保证有效测试工作的必要前提。
c. 测试环境的建立。软件测试的工作量很大,重复/繁杂的劳动很多,在有限的测试条件下,建立测试环境、提供测试辅助工具是减少软件研制费用的重要措施。
3.2 软件测试的难点
软件测试的难点在于:
a. 测试用例及测试例程是其设计者对被测对象实现原理和外部需求的理解,能否正确反映对被测对象的质量要求,很大程度上取决于其设计者的分析、理解和设计能力。这是一种缺乏指导性方法的、不易制订标准或规范的、需要“技巧”的设计活动。
b. 目前缺乏测试管理方面的资料,几乎没有可供参考的、已实现的、完整的测试管理与测试实施模式。
c. 软件测试的有效实施需要开发组织与测试组织充分配合。虽然测试活动看似是对开发人员劳动成果的不断“挑剔”,但测试工作的出发点是:确保开发人员的劳动成果成为可被接收的、更高品质的软件产品。因此,测试人员应向开发人员谦虚求教,在测试工作中真正发挥作用,为保证软件产品的高质量起尽可能大的作用。测试的组织者应在促进上级组织协调各组织工作方面发挥作用。
d. 有效的测试工作需要投入足够的人力和物力,需要对工作的难度和消耗有充分的估计。测试的组织者也应在促进上级组织对资源的统一调度方面发挥作用。
3.3 软件测试的进一步涵义
进一步分析和研究以下内容,会更有利于软件测试的组织者在较高层次上计划和管理软件测试工作。
3.3.1 软件测试的本质
软件测试的本质是对比和模拟(仿真)。检验软件是否有错或是否满足要求的两个前提是:存在预期的参考;存在软件的运行环境。
理想的软件研制过程是:每一阶段的软件产品与前一阶段的软件产品在逻辑上等价。其蕴涵了一个假设:尽管每个阶段的描述方式不同,但其描述的内容都是精确的、完全的和一致的。这个假设在实际软件工程中是不容易满足的,因此不能期望理想的软件研制过程。
更广义的软件测试指:软件研制中某两个阶段工作结果的对比。
3.3.2 软件的静态分析技术
相对软件动态测试技术(亦称计算机测试技术),审查会(Inspection)、人工运行(或叫走查,Walkthrough)和静态检验(Desk checking )等软件的静态分析技术是在软件研制的较早阶段对非形式化软件产品的人工测试方式,如对文档-文档的静态分析(需求说明与结构设计的对比)或对文档-代码的静态分析(详细设计与源代码的对比)。
在软件静态分析技术中,软件(文档/代码)的“运行环境”是在人头脑中模拟生成的。
强调软件静态分析技术的原因在于:越早期的软件描述越不易形式化,其“隐含”的语义越多,其等价转换到下一阶段描述的难度越大。
静态分析技术主要用来发现本阶段产品的缺陷,但当发现前面阶段软件产品的问题时,就要填写软件问题报告,遵循软件更动控制规范。
3.3.3 软件测试的质量
通过对比,应用软件测试技术可以发现以下三类软件问题:
a. “错误”,即:前一阶段导出语义为A,本阶段导出语义为B,而A1B。
b.“缺少”,即:前一阶段导出语义为A,本阶段无此导出语义。
c.“多余”,即:本阶段导出语义为B,前一阶段无此导出语义。
发现第一类软件问题的过程即谓“找错”,发现后两类软件问题的过程即谓“确认”。设计不周密的测试用例可能并不能区分这三类软件问题。
软件测试本身的质量在于:其提供的关于软件产品质量的信息含量。发现软件问题并能区分其类型的软件测试被称为是优质的。
3.3.4 软件测试的可信度
软件测试的结果是衡量软件产品质量的依据。但软件测试的依据、设计和操作的可靠性又由什么来保证呢?因而软件测试结果本身就带有可信度。相信软件测试结果的前提是:认可测试设计者/实现者/实施者的能力和责任感,同时认可其所依赖测试工具的可靠性。
在ISO 9001标准中规定:任何测试工具所参考的标准都不应低于使用它的软件项目的标准。对于所选购的测试工具,可以获得生产商提供的质量认证;对于自行开发的测试辅助工具,测试组织可以遵循标准,提供研制测试辅助工具的全部开发/测试文档,以提高其提供的测试结果的可信度。