实时控制软件的质量控制
软件测试
从软件生存周期看,软件测试是卡住软件质量,尤其是卡住软件可靠性的最后一道关口。但软件测试并不仅仅局限于这个阶段,而应贯穿于软件开发的全过程(见图4)。应解决这样一个认识问题——用于实时控制系统一类的复杂软件,自认为没有错误的想法是不切合实际的。因此,测试的主要目的是:
1) 对软件的质量或可接受性作出判断;
2) 发现问题。
从图4看出,会产生错误的阶段是在需求说明、设计和编程过程中。这些错误若不排除,均会遗传到测试阶段,甚至会遗传到使用阶段。利用测试用例测出问题进行故障分类、故障隔离和故障消除等步骤,直到获得满意的测试结果为止。
测试用例的编写格式和内容如图5所示。测试的设计。难就难在试图利用这组测试用例能找出软件的全部问题。格式中含有测试管理信息——测试用例标识和执行史。测试用例标识是按一定规律统一为每个测试例赋予的代号,便于需求追踪。执行史中有测试日期、测试结果(给出结论:通过/失败)、版本号和主管的测试者签字,这些都是有保存价值的资料。测试用例是需要精心设计、编写、评审、使用、管理和保存的。
软件测试要求在测试过程中,采集软件可靠性数据,并利用软件可靠性模型进行可靠性评估。分析其是否达到了预期的可靠性要求。并据此作出该软件能否放行的决断。若不满足要求,需继续进行测试,直到满足要求为止。可见这是一项十分花精力的活动。
软件验证与确认
软件验证(Verification)和确认(Validation),简称为V&V 或V2。验证和确认的区别在于:验证关心的是确保软件模块或功能内在的正确性;确认则表明要与规定的需求进行比较是否满足要求,它所关心的是该软件产品的价值。
软件验证与确认是贯穿于软件开发过程中十分细致的软件检验活动。每个开发阶段的结果可认为是下一开发阶段的一个规格文件,但要进入下一阶段之前必须对该结果作出确认。验证和确认的主要方法有:代码走查、审查、测试和正确性证明等。代码走查就是对软件文档进行书面检查。它通过人工模拟执行源程序的过程,检查软件设计的正确性。人工模拟也像计算机执行那样,可以仔细推敲、校验和核实每一步的执行结果,进而确定其执行逻辑、控制模型、算法和使用参数与数据的正确性。
审查是软件验证和确认中的一个主要方法,可弥补其他方法的一些不足之处。它是一种用形式的、有效的和经济的方法查找设计和编程中的错误。审查的主要目的是1)找出软件中的缺陷;2)核实是否符合需求;3)早期生产评价;4)过程评价等。由第三方进行软件评测工作是十分重要的,其评测工具软件对软件进行静态的和动态的评测,能发现软件设计的缺陷、瓶颈和多余物等。值得指出的是,用于软件测试的各种方法、技术、工具和措施等,对提高软件的可靠性都是必要的,但不是充分的。这就表明,其中任何一个手段,均不能绝对保障软件的可靠性,但只要能发现软件中任何一个微小的错误,就起到了它的作用。