配色: 字号:
第6章 软件测试
2022-09-23 | 阅:  转:  |  分享 
  
第6章软件测试6.1软件测试基础6.2白盒测试6.3黑盒测试6.4白盒测试和黑盒测试的比较6.5软件测试策略6.
6调试6.7软件测试报告6.1软件测试基础软件测试是软件开发过程的最后一个阶段,它是在软件开发过程中保证软件质量、提高软
件可靠性的最重要的手段之一,它是软件系统在正式交付用户使用前,对系统分析、设计、代码等开发工作的最后检查和复审。6.1软件测试
基础一、软件测试概念根据IEEE(1983年)标准,这里给出几个有关测试的重要概念的定义:失败:当程序不能运行时称为失败。失败是系
统执行过程中出现的一种情况,它源于编码错误。错误:程序运行而得不到正确结果。缺陷:缺陷是错误的表现。如叙述的不完整、数据流图的不平
衡、程序流程图的非结构化设计、源代码编写错误等。测试用例:测试用例是为了某种特定目标而设计的一组输入数据或执行条件,以及预期结果的
集合。它是测试执行时最小的实体。6.1软件测试基础对于软件测试的定义,有如下不同的描述:IEEE(1983):使用人工或自动运
行测试系统的过程,其目的在于检验系统是否满足用户需求,或找出预期结果与实际运行结果间的差别,发现程序错误。GlenMyers:软
件测试为了发现错误而执行程序的过程。从软件质量和可靠性角度理解,软件测试是为保证软件质量、提高软件可靠性的活动,它应用测试理论和技
术,发现程序中的错误和缺陷而实施的过程。总的来说,软件测试是在一定软件环境下,以最小的成本来验证系统能否按照需求正确运行,并尽
可能多的发现存在的错误。同时,E.W.Dijkastra指出:测试只能证明程序有错,而不能保证程序无错。系统测试需求分析及需
求规格说明概要设计及概要规格说明确认测试详细设计及详细规格说明集成测试编码单元测试实现6.1软件测试基础二、软件测试过程模型V
模型的重要价值在于,它定义了软件测试如何与软件工程各阶段相融合,它清楚地描述了各级别软件测试与软件开发各阶段的对应关系。验收需求分
析系统测试需求测试确认功能测试确认测试概要设计集成集成测试详细设计设计测试编码单元测试6.1软件测试基础二、软件测试过程模型W
模型的重要贡献在于,明确软件开发各阶段都要进行测试,而不仅仅是在编码结束后才开始。这样,测试的对象不仅是代码,还可以是文档(需求规
格说明、设计规格说明等)。评审测试执行测试配置tt1t2tn…软件开发各阶段软件开发各阶段修改6.1软件测试基础二、软件测试过
程模型软件测试的H模型是对W模型在更高层次上的线性抽象。它明确表示,在任何一个开发流程,只要有必要,并且测试配置已准备就绪,就能
进行测试活动。6.1软件测试基础三、软件测试原则(1)应尽早地和不断地进行软件测试;(2)开发人员应尽量避免进行软件测试;(3
)注重测试用例的设计和选择;(4)增量式测试;(5)充分注意测试中的群集现象;(6)合理安排测试计划,严格执行测试计划;(7)
全面统计和分析测试结果;(8)保存测试文档,并及时更新;初步制定系统测试计划编写用户需求功能、性能N需求评审Y系统测试方案需求规
格说明书N需求变更用户需求追踪Y记录需求变更系统测试方案变更后续阶段6.1软件测试基础四、软件测试在软件开发各阶段的工作流程
——需求阶段的测试活动需求阶段是明确系统功能、性能、领域需求等内容。要求测试人员在这一阶段要了解用户软件需求、硬件支撑环境、系统
部署、用户操作流程、系统外部接口等内容,并生成系统测试计划,并形成文档。经过审查和复审,形成软件配置项。前一阶段需求规格说明集成
测试方案概要设计N评审Y单元测试方案详细设计N评审Y编码白盒测试用例N单元测试测试报告Y后续阶段6.1软件测试基础四、软件测试
在软件开发各阶段工作流程——设计和编码阶段测试活动设计阶段可以细分为概要设计和详细设计两个子阶段。错误软件文档配置测试评价修
改正确测试测试结果软件测试可靠性模型测试配置错误率可靠性预测测试工具6.1软件测试基础五、软件测试信息流软件测试信息流说明了从
测试、结果分析、调试到排错的连续过程,反映了测试过程中所需的各类文档、数据及信息的转换过程。测试过程需要输入三类信息:⑴软件配
置说明:包括软件需求规格说明,软件设计规格说明、源代码等。⑵测试配置:包括测试计划、测试用例、预期结果、驱动程序。⑶测试工具:
测试工具提高了测试效率,支持测试数据自动生成、动态分析代码、测试结果对比与分析等测试信息流中的相关活动。6.1软件测试基础六、
流软件测试技术分类1.静态测试和动态测试静态测试的测试对象包括源程序和文档。项目开发过程中产生大量的规格说明,对这些规格说明的
技术审查和管理复审,以及对文档的测试数据都属于静态测试。动态测试的测试对象针对源程序。就源程序来讲,静态测试是指不运行程序就找
出程序中存在的错误,动态测试是通过运行程序而发现存在的错误和问题。6.1软件测试基础六、软件测试技术分类2.白盒测试和黑盒测
试白盒测试是针对模块内部逻辑结构进行的测试。它面对程序内部的实现细节,分别对语句、条件、条件组合、循环等控制结构、异常、错误处理
等特殊流程设计测试用例。黑盒测试是把模块作为一个整体进行测试。它不关心程序逻辑实现的具体细节,而是关注模块的输入(接口)、输出(
运行结果)。因而它测试的是模块功能是否符合设计,运行时是否能(被)正确调用。6.1软件测试基础六、软件测试技术分类3.测试策
略与过程划分从测试策略和测试过程来分,软件测试分为:单元测试、集成测试、确认测试和系统测试。单元(函数、过程、类、软部件等)是
构成软件“大厦”的基石,没有每个单元的正确,就没有整个软件系统的正确性和可靠性。集成测试检测将各单元是否能按软件系统结构进行组装
。它主要涉及软件结构的设计。确认测试检测软件系统的功能和性能是否满足用户需求。系统测试检测软件系统与用户的实际使用环境、硬件系
统、通信系统、系统部署等软件外部系统的适应性。6.2白盒测试逻辑覆盖——指对程序设计中的逻辑判断条件进行的测试。逻辑覆盖准则(1
)语句覆盖(2)判定覆盖(3)条件覆盖(4)判定/条件覆盖(5)条件组合覆盖6.2白盒测试(1)语句覆盖:程序中的每条语句都应该
执行一次。6.2白盒测试(2)判定覆盖:程序中的所有判定,其各分支都至少执行一次。6.2白盒测试(3)条件覆盖:对程序中的每个
子关系表达式的取值至少各执行一次的覆盖。6.2白盒测试(4)判定/条件覆盖:指程序中所有判定的各分支至少执行一次,判定中的每个子
关系表达式的取值也至少执行一次的覆盖。6.2白盒测试(5)条件组合覆盖:每个判定中的各子关系表达式的取值组合各执行一次的覆盖。6
.2白盒测试白盒测试——循环测试循环测试是大多数算法的基础,循环测试的目的是检查循环结构的有效性。循环分为简单循环、顺序循环、
嵌套循环,如图所示。6.2白盒测试白盒测试——循环测试1、简单循环测试对于最多为n次的简单循环,应做下列测试:(1)完全跳
过循环(2)仅循环一次;(3)循环两次;(4)循环m次,m<n;(5)分别循环(n-l)次、n次、n+l次。6.2白盒测试白
盒测试——循环测试2、顺序循环测试顺序循环是指具有先后关系的循环结构。如果顺序循环间彼此关联,共享数据,可做下列测试:(
1)前一循环取某个测试值(如循环0次)进行测试。(2)后续循环按顺序循环进行测试。(3)依次迭代执行第一步和第二步。6.2
白盒测试白盒测试——循环测试3、嵌套循环测试对于嵌套循环若生搬硬套简单循环的测试策略,可能使测试次数成几何级数增长,减少测试次
数的具体措施包括:(1)从最内层循环开始测试,此时所有外层循环都取最小值,内层循环按简单循环的测试策略测试。(2)由里向外,回
退到上一层循环测试,这层循环的所有外层循环仍取最小值,由该层循环嵌套的那些循环取一些典型值。(3)继续向外扩展,直至所有循环测试
完毕。6.2白盒测试白盒测试——循环测试6.2白盒测试白盒测试——循环测试6.2白盒测试白盒测试——循环测试6.2白盒测试
白盒测试——路径测试路径测试:通过计算程序流图的环形复杂度来确定需要进行测试的程序执行路径,之后根据测试路径设计测试用例。流图:是
对程序流程图的简化表示。6.2白盒测试白盒测试——路径测试路径测试:通过计算程序流图的环形复杂度来确定需要进行测试的程序执行路径
,之后根据测试路径设计测试用例。流图:是对程序流程图的简化表示。6.2白盒测试例:用路径测试法设计链表结点插入算法的测试用例。6
.2白盒测试第一步:根据过程设计结果得出相应流图。6.2白盒测试第二步:计算流图的环形复杂度。6.2白盒测试第三步:确定线性
独立路径集合。path1:1-2-8-9-10path2:1-2-8-10path3:1-2-3-8-9-10path4:1-2-
3-4-5-7-2...path5:1-2-3-4-6-7-2...6.2白盒测试第四步:设计能执行5条独立路径的测试用例。6
.3黑盒测试黑盒测试又称功能测试或行为测试,它主要根据设计说明中的功能设计来测试程序能否按预期实现。黑盒测试的目的是尽量发现
系统功能中的错误。常见的系统功能错误有以下几类:功能不正确或不完整;界面或接口错误;数据结构错误;访问外部数据库错误;性能不满足需
求;初始化或终止系统时的错误。黑盒测试等价类的划分边界值分析法错误推测法6.3黑盒测试黑盒测试——划分等价类的规则对于
常见的数据分析,如特殊数值、区间值、布尔值等,结合各类经验,有以下原则辅助确定等价类:⑴如果定义了输入数据的取值范围(如[a.
b]),则可划分一个有效等价类([a.b]间的数据集)和两个无效等价类(-∞,a)以及(b,+∞)。⑵如果规定了输入数据的
个数(如N个),则可以划分出一个有效等价类(1~N之间)和两个无效等价类(0个)或(N+M个数据)。⑶如果规定输入数据是特殊值,
则特殊值集合是有效等价类,其余取值构成一个无效等价类。⑷如果输入数据是布尔量,则可划分出一个有效等价类和一个无效等价类。⑸如果
定义了输入数据的规则,则可划分出一个符合规则的有效等价类和一个违反规则的无效等价类。⑹如果输入的数据是整型,则可划分负数、零和正
数三个有效等价类。⑺对于上述各自划分的有效等价类和无效等价类,可以根据不同角度、规则、程序处理方式等各方面入手,再细分为若干有效
或无效的等价子类。6.3黑盒测试黑盒测试——划分等价类的步骤第一步:根据输入数据,划分待测问题的等价类,并对每个等价类进行编号
;6.3黑盒测试黑盒测试——划分等价类的步骤第二步:优化等价类(合并或拆分),并对每个等价类设计对应的测试用例。6.3黑
盒测试黑盒测试——边界值分析边界值分析法是对等价分类技术的补充,即在一个等价类中不是任选一个元素作为此等价类的代表进行测试,而是
选择此等价类边界上的值。测试边界测试内点被测试子域测试外点6.3黑盒测试边界值分析设计测试用例原则边界值分析是对等价类划分
的有益补充。在判定条件的边界值上、循环次数判定的边界上,往往隐藏着错误。针对边界值分析的特点,介绍边界值分析的几项原则:⑴如
果输入数据给定了范围,则对于范围的边界,定义比边界值少1、边界值、比边界值多1的数值设计测试用例。例如[a,b]区域,则取a-1
、a、a+1,b-1,b,b+1作为测试用例。⑵如果规定了输入数据的个数N,则设计0个数据、1个数据、2个数据、N-1个数
据、N个数据和N+1个数据等的测试用例。⑶如果没有指定值区域,则应取计算机所能表达的最大值和最小值作为测试用例。⑷对于浮点
数,应该取最大精度和最小精度的浮点数作为测试用例。⑸如果输入数据是有序集,则取该集中第一、第二,倒数第二和最后一个元素作为测试
用例。6.3黑盒测试错误推测法由于错误和问题的发生是多种多样的,有时难以用常规的技术发现。错误推测法是根据测试人员的经验和
直觉来推测程序中可能存在的各类错误,从而有针对性地设计测试用例。由于错误推测法在很大程度上凭借直觉和经验,因此难以有确定的步骤去发
现错误和问题。一个有效的途径是把错误推测法与人工代码检查结合起来。通过代码检查,分析模块间相互依赖关系和数据的可能组合来进一步
设计测试用例。6.3黑盒测试因果图法把输入条件视为“因”,把输出条件视为“果”,将黑盒看成是从因到果的网络图,采用逻辑图的形
式来表达功能说明书中输入条件的各种组合与输出的关系。根据这种关系可选择高效的测试用例。ababad∨bad∧b6.3黑盒测试⑴
因果图的基本符号 0-表示“不出现” 1-表示“出现”恒等 若a为1,则b为1,否则b为0。“非”函数 若a为1
,则b为0,否则b为1。“或”函数若a或b为1,则d为1,否则d为0。“与”函数若a与b同为1,则d为1,否则d为0。6.
3黑盒测试对“与”、“或”函数的限制符号 E约束(异)—排斥 即a、b不能同时为1。 I约束(或)—包容 a、b、c不能同时
为0。 O约束(唯一)—选一a、b中仅有一个为1。 R约束(要求)—需要a为1时,b必须为1 M约束(强制)—屏蔽若a
为1时,则b强制为1。aEbaIbcaObaRbaMb6.3黑盒测试因果图法6.3黑盒测试因果图法6.3黑盒测试因果图法6.
3黑盒测试因果图法6.4白盒测试和黑盒测试的比较一、应用角度的不同1、测试技术不同2、测试人员不同3、文档配置不同6.
4白盒测试和黑盒测试的比较二、白盒测试的优点与不足6.4白盒测试和黑盒测试的比较三、黑盒测试的优点与不足6.5软件测试策
略软件测试阶段完成的主要任务有两类:一类是局部模块的测试,它是整个测试阶段的基石。另一类是软件系统全局结构的测试,它构成整个
测试系统的大厦。从局部到全局,是经过一系列测试过程转换而成,它们包括单元测试、集成测试、确认测试和系统测试,每个测试过程都有各自
不同的测试策略。6.5软件测试策略一、单元测试单元是软件测试过程中最小的测试单位,它有两个基本属性:单元是可以独立编译的最小组
件;单元是由个人开发的软件组件。单元测试内容:1.模块接口2.局部数据结构3.执行路径4.边界条件5.异常处
理驱动模块测试用例测试用例被测单元桩模块1桩模块2……桩模块N6.5软件测试策略单元测试策略单元是软件测试过程中最小的测试单位,
它有两个基本属性:单元是可以独立编译的最小组件;单元是由个人开发的软件组件。6.5软件测试策略二、集成测试集成测试是指在完成
单元测试后,将各单元模块依据设计的软件系统结构,按照一定的集成测试策略进行组装的过程。集成测试内容:各模块间的数据传递是否会丢失
;各模块间的数据传递是否按照期望进行传递;各模块组装后,是否能实现所期望的更复杂的功能;各模块组装后,是否出现对全局数据结构、公共
数据操作的混乱,资源的竞争;各模块组装后,集成的误差是否会被快速放大,直到难以接受为止。6.5软件测试策略集成测试策略集成测
试的重点,是将各模块按照软件系统结构的定义,将软件模块组装在一起。如何实施组装过程,使得系统既能快速集成,又能准确发现在组装过程中
出现的错误和问题呢?这需要正确的集成测试方法。⑴非渐增式集成非渐增式集成是一次集成过程,即先按照各模块在系统结构中的位置,设计
驱动模块或桩模块进行辅助测试。然后将测试合格的各模块按照系统结构一次性完成系统集成的过程。⑵渐增式集成渐增式集成不同于非渐增式
集成,它不是将模块一次性组装,而是按照系统结构逐渐将模块依次集成到系统中。从集成的过程来看,渐增式集成过程分为自底向上的集成和自顶
向下的集成。6.5软件测试策略集成测试策略⑴非渐增式集成非渐增式集成是一次集成过程,即先按照各模块在系统结构中的位置,设计驱
动模块或桩模块进行辅助测试。然后将测试合格的各模块按照系统结构一次性完成系统集成的过程。6.5软件测试策略集成测试策略⑵渐增
式集成渐增式集成不同于非渐增式集成,它不是将模块一次性组装,而是按照系统结构逐渐将模块依次集成到系统中。从集成的过程来看,渐增式集
成过程分为自底向上的集成和自顶向下的集成。6.5软件测试策略集成测试策略⑵渐增式集成渐增式集成不同于非渐增式集成,它不是将模
块一次性组装,而是按照系统结构逐渐将模块依次集成到系统中。从集成的过程来看,渐增式集成过程分为自底向上的集成和自顶向下的集成。6
.5软件测试策略三、确认测试确认测试也称为验收测试,它是指在模拟用户实际操作的环境下(或开发环境下),运用黑盒测试法验证软件的
有效性是否符合需求。这里涉及两个概念:验证和确认。验证(Verification)是指保证软件正确地实现了用户某个需求的一系列活动
。确认(Validation)是指为了保证软件确实满足用户需求而进行的一系列活动。确认测试完成后,可能产生两种情形:⑴软件系
统功能、性能、领域等要素满足用户需求规格说明,软件是有效的。⑵软件系统功能、性能、领域等要素存在不满足用户需求规格说明的某些方面
,确认测试文档中给出了存在的错误或问题。6.5软件测试策略6.6软件测试策略四、系统测试系统测试是指软件系统作为整个计算机
系统的一部分,与计算机系统的硬件系统、数据、外部其它软件、文档等要素相结合,在用户实际运行环境中进行的确认测试。功能测试性能测试
压力测试容量测试安全测试文档测试恢复性测试备份测试系统测试的内容:6.6软件测试策略α测试和β测试α测试是在开发环境下,由用户
和软件开发人员、测试人员共同对系统进行的测试。测试的目的是尽可能模拟用户使用环境,同时反映系统功能、性能的运行能力,并评价FLUR
PS。FLURPS是对以下测试内容的简称:FunctionTesting(功能测试)LocalAreaTesting(局域化
测试)UsabilityTesting(可用性测试)ReliabilityTesting(可靠性测试)Performance
Testing(性能测试)SupportabilityTesting(可支持性测试)6.6软件测试策略α测试和β测试β测试是
在系统实际用户使用环境下进行的测试,并且整个测试过程都是用户独立进行,不受开发人员和测试人员的影响。β测试是涉及面最广、测试用户最
多、最能真实反映用户使用的测试,但其测试时间长、花费较大、测试过程难以控制。6.7调试软件测试的目的是发现错误,测试完成之后的软
件调试目的是为了定位和修改错误,以保证软件运行的正确性和可靠性。软件调试活动主要分为以下三部分内容:⑴确定软件系统出现错误的准确
位置,这需要一个过程,特别需要的是调试人员的经验和技巧。⑵对发现错误的修改。修改错误也需要经验,如分析修改的程序是否涉及全局数据
、是否涉及面向对象机制(如虚函数)、是否影响修改函数的主调函数结果的正确性等。⑶对修改后的内容重新进行测试,特别是涉及到全局数据
结构、文件结构、系统结构等内容的修改,还必须进行确认测试和系统测试。执行测试测试用例测试结果修改测试文档软件配置附加测试回归测试与预期结果分析修改调试6.7调试调试过程调试结果无外乎两种:一是正确定位错误位置,并正确修改;二是难以确定错误位置,或错误难以纠正。软件调试与编程同为脑力劳动,而且调试过程是一个漫长而艰苦的过程,调试遇到的障碍有时甚至超过编程本身。6.7调试软件调试方法试探法归纳法演绎法回溯法6.7软件测试报告测试报告文档在软件测试各阶段完成之前,必须编写软件测试报告,并按照评审标准对软件测试报告进行评审。编写测试报告的目的是发现并消除其中存在的遗漏、错误和不足,使得测试用例、测试预期结果等内容符合标注及规范的要求。通过了评审的软件测试报告成为基线配置项,纳入项目管理的过程。软件测试报告包括软件测试说明和软件测试报告两个部分。第6章软件测试小结软件测试基础:V模型、W模型、H模型白盒测试:逻辑覆盖、循环测试、路径测试黑盒测试:等价类划分、边界值分析、错误推测法、因果图法白盒测试和黑盒测试比较:优点和不足软件测试策略:单元测试、集成测试、确认测试、系统测试调试:试探法、归纳法、演绎法、回溯法软件测试报告:软件测试说明、软件测试报告
献花(0)
+1
(本文系太好学原创)