第9章软件检验与软件测试 (教材第19章、20章)
有关概念
V&V规划
软件检查
程序的自动静态分析
软件测试的目的和原则
测试用例设计
软件测试过程
面向对象测试
测试的管理
软件的可靠性与可用性
1
检验与有效性验证的有关概念
检验和有效性验证(Verification and Validation ,V&V,也有人称为验证与确认)是整个软件生命周期中对各阶段(需求评审、设计评审、代码检查、产品测试)过程活动的结果检查和分析的过程,以确保软件既能符合定义中的要求,又能满足客户或用户的要求。
Boehm给出了二者之间的不同:
•检验:是否正确地建立一个产品?
•有效性验证:是否建立了一个正确的产品?
检验(验证)的作用是检查软件是否符合它的描述中所定义的功能和非功能的需求。而有效性验证(确认)要说明软件是否最终满足用户的要求。如需求中的一些错误和遗漏可能在系统完全实现后才能发现。
2
在V&V过程中有两个系统检验和分析技术:
•软件检查检查各种文档,静态检验技术。
•软件测试动态检验技术,实现运行检验。
下图给出了两个技术活动在软件过程中的位置:
软件检查
需求描述
高层设计
形式化描述
详细设计
软件实现
原型
软件测试
静态、动态检验和有效性验证
箭头指示的是该项技术活动在那个阶段使用
3
验证技术包括程序检查、自动化源代码分析和形式化检验。但静态技术只能检查程序及其描述之间的吻合程度(检验),不能够说明软件真的是有用的,也不能检验软件的非功能特性。只有通过测试才能验证系统的有效性。
测试和调试是两个不同的过程:
•测试是一个发现软件缺陷( Defect)的过程。
•调试是一个对缺陷定位和修改的过程。如图所示:
测试结果
描述
测试用例
定位错误
修改设计错误
修改代码
对程序再测试
调试过程
4
V&V规划
该过程的规划应该在开发过程的早期开始。下图说明了测试计划如何从系统描述和设计中导出。有时也称之为V模型。
需求描述
实现
系统设计
详细设计
单元测试
子系统集成测试
系统集成测试
验收测试
验收测试计划
系统集成测试计划
子系统集成测试计划
单元测试计划
5
对测试的规划主要是制定测试过程标准。主要组成部分见下表:
软件测试计划的结构
6
软件检查
系统的软件测试过程很耗时间,成本是昂贵的。
软件检查在程序完成之前就应进行。检查的对象是可以是系统模型、系统描述或源代码。要充分利用开发系统的知识和源表示形式的语义来发现错误。
软件检查是一种有效的错误检测技术,能够在初始阶段发现绝大多数错误,有专家报告说明超过60%的程序错误是通过检查发现的。
软件检查不仅包括程序检查,还包括对软件过程中生成的所有文档的的检查。
由安博测试空间技术中心
7
程序检查
程序检查的目标是发现缺陷。缺陷可能是逻辑错误、错误的条件、或是与机构和项目标准不相符的问题。
程序检查的过程是一个正式的过程,应该由4个人以上的小组来实行。教材P295列出了检查过程中的角色。
下图列出了一般的程序检查过程:
规划
概览
个人准备
会议讨论
修改缺陷
后续行动
检查过程
仲裁者决定是否反复,最后要对审查清单签署意见
8
检查过程应该有一个程序员常出错误的核对清单,团队有经验的人员经过讨论建立该清单,并随着经验的积累丰富这个清单。不同的程序语言由于编译器提供的检查层次不同应该有不同的清单。
教材P296列出了要检查的项目(数据、控制、I/O、接口、存储管理、异常管理等方面的缺陷)。
专家建议检查过程不要超过两小时,否则缺陷检查的效率会大大降低。因此在程序开发过程中应该经常进行检查,每次选择一个相对较小的组件。
管理者一定要将程序检查和人事评价严格分开,检查结果暴露的错误不能作为程序员事业评估的依据。要建立起一种鼓励发现错误、不会因为这些错误引来指责的良好的企业文化。
9
自动静态分析
静态程序分析器是一个软件工具(如Unix系统中用于C语言的Lint)。扫描源代码,通过解析程序文本识别缺陷。如:有不可到达的代码段、未初始化的变量或指针、未说明或使用的变量、可能的数组越界、参数类型或个数不匹配等。
静态分析包括以下几个阶段:
•控制流分析找出并显示有多重出口或入口的循环以及不可到达的代码段(如无条件转移语句包围的一段代码;条件语句中不可能到达的条件)。
•数据使用分析突出显示变量的使用情况。也发现那些判定值从不发生改变的条件。
10
软件检验与软件测试 来自淘豆网m.daumloan.com转载请标明出处.