软件工程(七)-软件测试

本章要点

1.软件测试的目的和原则
2.软件错误的分类
3.软件测试的过程和策略
4.软件测试用例设计的方法
5.掌握软件测试中可靠性分析方法

软件的概念和原则

1.测试的概念
(1)软件测试
软件测试是对软件计划、软件设计、软件编码进行查错和纠错的活动(包括代码执行活动与人工活动)。
(2)程序测试
它是对编码阶段的语法错、语义错、运行错进行查找的编码执行活动。找出编码中错误的代码执行活动称程序测试。纠正编码中的错误的执行活动称程序的调试。
(3)软件确认与程序确认
软件确认是广义上的软件测试,它是企图证明程序软件在给定的外部环境中的逻辑正确性的一系列活动和过程。
静态分析
动态分析
(4)各种软件错误的出现比例
功能错,占整个软件错误27%,是需求分析设计不完整而引起的。
系统错,占整个软件错误的16%,是总体设计错误而引起的。
数据错,占整个软件错误10%,由编码错误引起的。
编码错,占整个软件错误4%,程序员编码错误引起的。
其它错,占整个软件错误16%,由文档错和硬件错所引起的。
2.测试过程
3.测试的原则
(1)测试前要认定被测试软件有错,不要认为软件没有错。
(2)要预先确定被测试软件的测试结果
(3)要尽量避免测试自己编写的程序
(4)测试要兼顾合理输入与不合理输入数据。
(5)测试要以软件需求规格说明书为标准
(6)要明确找的新错与已找到的旧错成正比。
(7)测试是相对的,不能穷尽所有的测试,要据人力物力安排测试,并选择好测试用例与测试方法。
(8)测试用例留作测试报告与以后的反复测试用,重新验证旧错的程序是否有错。

软件的目的和原则

1.什么是软件测试?
软件测试在程序员对每一个模块的编码之后做程序测试,再做单元测试,然后再进行集成测试,系统测试,验收测试,平行测试,人工测试,其中单元测试的一部分已在编码阶段就开始了,测试横跨开发与测试两个阶段,又有不同的人员参加,测试工作本身是复杂的。
据统计测试工作量要占软件开发总成的40%到50%以上。
2.软件测试目的
(1)测试是程序的执行过程,目的在于发现错误。
(2)一个好的测试用例在于能发现至今未发现的错误
(3)一个成功的测试是发现了至今未发现的错误的测试
3.软件测试的原则
(1).应当把“尽早地和不断地进行软件测试”作为软件开发者地座右铭。
(2) .测试用例应由测试输入数据和对应地预期输出结果这两部分组成。
(3).程序员应避免检查自己地程序。
(4).在设计测试用例时,应当包括合理地输入条件和不合理地输入条件。
4.测试信息流
软件配置
测试配置
测试工具
测试结果分析
排错(调试)
修正后地文档再测试
5.测试与软件开发阶段地关系
软件开发过程是一个自顶向下,逐步细化地过程。
测试过程时依相反顺序安排地自底向上,逐步集成地过程。

软件测试用例设计

两种常用的测试方法:黑盒测试和白盒测试。
1.黑盒测试
这种方法是把而是对象看做一个黑盒子,检查程序地功能是否符合它地功能说明。
黑盒测试的测试用例设计
等价类划分:方法把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据做为测试用例。
等价类的划分有两种不同的情况:
(1)有效等价类
(2)无效等价类
2.白盒测试
次方法把测试对象看做一个透明地盒子,对程序所有逻辑路径进行测试。
给出一个小程序地流程图,它包括了一个执行20次地循环。
包含地不同执行路径数达5的20次方条,对每一条路径进行测试1毫秒,假定一年工作365*24小时,要想把所有路径测试完,需3170年。
(1).条件覆盖:就是设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取得至少执行一次。
(2)判定-条件覆盖:就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断中的每个条件的可能取值至少执行一次。
(3)条件组合覆盖:就是设计足够的测试用例运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次。

软件测试的策略

测试过程按4个步骤进行,即单元测试,组装测试、确认测试和系统测试。
单元测试
单元测试又称为模块测试,是针对软件设计的最小单位——程序模块,进行正确性检验的测试工作。
1.单元测试的内容
主要围绕这五个部分:模块接口、出错处理、独立路径、边界条件、局部数据结构。
2.单元测试的步骤
测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的其它模块。
驱动模块
桩模块

部分常见错误清单
(一)、模块接口检查表
1、模块接受的输入参数个数与模块的变元个数是否一致?
2、参数与变元的属性是否匹配
3、参数与变元所用的单位是否一致?
4、传递给被调用模块的变元的数目是否等于那个模块的参数的数目?
5、传递给被调用模块的变元属性和参数的属性是否一致?
6、传递给被调用模块的变元的单位和该模块参数的单位是否一致?
7、传递给内部函数的变元属性、数目和次序是否正确?
8、是否修改了知识作为输入用的变元?
9、全程变量的定义在各个模块中是否一致?
10、有没有把常数当作变量来传递?
(二)、完成外部输入/输出时的检查表
1、文件属性是否正确?
2、OPEN语句是否正确?
3、格式说明与输入/输出语句给出的信息是否一致?
4、缓冲区容量与记录长度是否一致?
5、在进行读写操作之前是否打开了文件?
6、对结束文件条件的判断和处理是否正确?
7、对输入/输出错误的处理是否正确?
8、有没有输出信息中有正文错误?
(三)、模块局部数据结构检查表
1、不正确或不一致说明?
2、错误的初始值或错误的缺省值?
3、变量名拼写错或缩写错?
4、不相容的数据类型?
5、下溢、上溢或时地址错误?
组装测试
通常,把模块组装成为系统的方式有两种
一次性组装方式
增殖式组装方式:
(1)自顶向下的增殖方式
(2)自底向上的增殖方式
(3)混合增殖式测试
确认测试
确认测试又称有效性测试。任务是验证软件的功能和性能及其它特性是否与用户的要求一致。
1。进行有效性测试(黑盒测试)
有效性测试是在模拟的环境下(可能就是开发的环境)下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求。
2.软件配置复查
软件配置复查的目的是保证
如那件配置的所有成分都齐全
各方面的质量都符合要求
具有维护阶段所必需的细节
而且已经编排分类的目录
系统测试
是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。
α测试和β测试
α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试
β测试是由软件的多个用户在实际使用环境下进行的测试。这些用户返有关错误信息给开发者

测试种类

1.功能测试
功能测试是在规定的一段时间内运行软件系统的所有功能,以验证这个软件系统有无严重错误。
2.可靠性测试
如果系统需求说明书有对可靠性的要求,则需进行可靠性测试
3.强度测试
强度测试是要检查在系统运行环境不正常乃至发生故障的情况下,系统可以运行到何种城的的测试。
4.性能测试
性能测试是要检查系统是否满足在需求说明书中规定的性能。特别是对于实时系统或嵌入式系统。
5.恢复测试
恢复测试是要证实在克服硬件故障(包括掉电、硬件或网络出错等)后,系统能否正常地继续进行工作,并不对系统造成任何损害。
6.启动/停止测试
这类测试的目的是验证在机器启动及关机阶段,软件系统正确处理的能力。
7.配置测试
这类测试是要检查计算机系统内各个设备或各种资源之间的相互联结和功能分配中的错误。
8.安全性测试
安全性测试是要检验在系统中已经存在的系统安全性,保密性措施是否发挥作用,有无漏洞。
9.可使用性测试
可使用性测试主要从使用的合理性和方便性等角度对软件系统进行检查,发现人为因素或使用上的问题
10.可支持性测试
这类测试是要验证系统的支持策略对于公司与用户方面是否切实可行
11.安装测试
安装测试的目的不是找软件错误,而是找安装错误
12.过程测试
在一些大型的系统中,部分工作由软件自动完成,其它工作则需由各种人员,终端用户等,按一定规格同计算机配合,靠人工来完成。
13.互连测试
互联测试是要验证两个或多个不同的系统之间的互连性
14.兼容性测试
这类测试主要想验证软件产品在不同版本之间的兼容性
15.容量测试
容量测试是要检验系统的能力最高能达到什么程度。
在使系统的全部资源达到“满负荷”的情形下,测试系统的承受能力。
16.文档测试
这种测试是检查用文档(如用户手册)的清晰性和精确性

调试

1.什么是软件调试?
软件调试是进行了成功的测试之后才开始的工作。它与软件测试不同,调试的任务是进一步诊断和改正程序中潜在的错误。
2.调试的步骤
(1)从错误的外部表现形式入手,确定程序中错误位置。
(2)研究有关部分的程序,找出错误的内在原因
(3)修改设计和代码,以排除这个错误
(4)重复进行暴露了这个错误的原始测试或某些有关测试。
3.几种主要的调试方法
调试的关键在于推断程序内部的错误位置 及原因。可采用以下方法:
(1).强行排错
这种调试方法目前使用较多,效率较低。它不需要过多的思考。比较省脑筋。
(2).回溯法调试
这是在小程序中常用的一种有效的调试方法。
一旦发现了错误,人们先分析错误征兆,确定最先发现“症状“的位置。
(3).归纳法调试
归纳法调试的基本思想是:从一些线索着手,通过分析它们之间的关系来找出错误。
(4).演绎法调试
演绎法是一种从一般原理或前提出发,经过排除和精华的过程来推到出结论的思考方法。
4.调试原则
在调试方面,许多原则本质上是心理学方面的问题。
(1).用头脑去分析思考与错误征兆有关的信息
(2).避开死胡同。
(3).只把调试工具当做辅助助手手段来使用。
(4).避免用试探法,最多只能把它当做最后手段。
(5)修改错误的原则
(6)在出现错误的地方,很可能还有别的错误。
(7)当修正一个错误的同时有可能会引入新的错误。

猜你喜欢

转载自blog.csdn.net/qq_41306240/article/details/82560695