Ch1-软件测试(黑盒)_第1页
Ch1-软件测试(黑盒)_第2页
Ch1-软件测试(黑盒)_第3页
Ch1-软件测试(黑盒)_第4页
Ch1-软件测试(黑盒)_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Ch1-软件测试(黑盒)第一页,共73页。

软件测试——产品质量的保证软件测试——控制成本的关键软件测试——软件可靠性确认软件测试——让企业具备国际竞争的实力

2023/4/152第二页,共73页。内容安排§1测试相关的基本概念§2测试的方法(黑盒测试和白盒测试)§3测试的策略§4自动化测试和测试工具2023/4/153第三页,共73页。§1测试相关的基本概念一、软件测试的重要性二、什么是软件测试三、软件测试的特点四、测试对象五、测试的目的六、软件测试的基本原则2023/4/154第四页,共73页。一、软件测试的重要性 因为开发工作的前期不可避免地会引入错误,测试的目的是为了发现和改正错误,这对于某些涉及人的生命安全或重要的军事、经济目标的项目显得尤其重要。1963年美国飞往火星的火箭爆炸,原因是FORTRAN程序:DO5I=1,3误写为:DO5I=1.3损失1000万美元。1967年苏联“联盟一号”宇宙飞船返回时因忽略一个小数点,在进入大气层时打不开降落伞而烧毁。§1测试概念第五页,共73页。其他一些例子“冲击波”计算机病毒火星登陆事故

爱国者导弹防御系统迪斯尼的圣诞节礼物(狮子王游戏)千年虫§1测试概念2023/4/156第六页,共73页。Bug§1测试概念2023/4/157第七页,共73页。问题在哪里?

没有足够测试

缺乏测试平台

不正确的测试环境

缺少集成测试

缺少性能测试缺少强度测试缺少可靠性测试……§1测试概念2023/4/158第八页,共73页。二、什么是软件测试狭义的定义:测试是程序的执行过程,目的在于发现错误;软件测试是根据程序开发阶段的规格说明及程序内部结构而精心设计的一批测试用例(输入数据及其预期结果的集合),并利用这些测试用例去运行程序,以发现错误的过程;一个好的测试用例在于能发现至今未发现的错误;一个成功的测试是发现了至今未发现的错误的测试。§1测试概念2023/4/159第九页,共73页。广义的软件测试概念指软件生命周期中所有的检查、评审和确认工作,其中包括对分析、设计阶段,以及完成开发后的维护阶段的各类文档和代码的审查和确认。测试通常包括确认(validation)和验证(verification)两种方式。§1测试概念2023/4/1510第十页,共73页。验证和确认验证(Verification):在软件生存期各个阶段,验证是指检测各个阶段结束时的工作产品是否满足对上一阶段的结束后的工作产品所定义的规格的验证过程。需求设计编码测试验证§1测试概念2023/4/1511第十一页,共73页。验证和确认确认(Validation):在软件生命周期各个阶段,确认是指检测各个阶段结束时的工作产品是否满足在软件生命周期初期在系统需求文档中描述的各项软件规格的确认过程。需求设计编码测试确认§1测试概念2023/4/1512第十二页,共73页。确认和验证的比较验证是检测每一阶段形成的工作产品是否与前一阶段定义的规格相一致确认是检测每一阶段的工作产品是否与最初定义的软件需求规格相一致软件测试既可用于验证,又可用于确认。需求设计编码测试验证确认§1测试概念2023/4/1513第十三页,共73页。谁参与测试?客户代表最终用户软件开发人员软件测试人员高层经理的支持过程保证人员(SQA)§1测试概念2023/4/1514第十四页,共73页。三、软件测试的特点1、软件测试的开销大 按照Boehm的统计,软件测试的开销大约占总成本的30%-50%。例如:APPOLLO登月计划,80%的经费用于软件测试。2、不能进行“穷举”测试 只有将所有可能的情况都测试到,才有可能检查出所有的错误。但这是不可能的:例:程序P有两个整型输入量X、Y,输出量为Z,在32位机上运行。所有的测试数据组(Xi,Yi)的数目为:2

2=21毫秒执行1次,共需5亿年。323264PXYZ§1测试概念第十五页,共73页。测试工作量太少的测试是不负责任,过多的测试是一种罪过。100%的测试是不可能的,不同的用户采用的测试策略是不同的。Good-enough原则商业目标系统的质量等级§1测试概念2023/4/1516第十六页,共73页。3、软件测试难度大 根据上述分析,既然不能进行

“穷举”测试,又要查出尽可能多的错误,软件测试工作的难度大。只有选择— “高效的测试用例” 什么是“高效的测试用例”? 如何选择“高效的测试用例”? 这就是测试讨论的主要问题!!!§1测试概念第十七页,共73页。四、测试对象测试的对象需求规格说明概要设计规格说明详细设计规格说明源程序软件测试不等于程序测试§1测试概念2023/4/1518第十八页,共73页。五、测试的目的发现软件缺陷§1测试概念2023/4/1519第十九页,共73页。什么是缺陷?缺陷:最终产品同用户的期望不一致缺陷的分类错误遗漏超出需求的部分§1测试概念2023/4/1520第二十页,共73页。引起在运行时用户经历的在运行时存在在产品中开发人员产生在开发过程中错误缺陷故障失效?第二十一页,共73页。软件缺陷构成§1测试概念2023/4/1522第二十二页,共73页。软件缺陷在不同阶段的分布在真正的程序测试之前,通过审查、评审会可以发现更多的缺陷。规格说明书的缺陷会在需求分析审查、设计、编码、测试等过程中会逐步发现,而不能在需求分析一个阶段发现。§1测试概念2023/4/1523第二十三页,共73页。缺陷成本§1测试概念尽可能早的发现缺陷!第二十四页,共73页。软件工程软件测试V模型对软件需求分析、软件设计和编码的最终审查是为了发现错误而执行程序的过程编码需求获取

需求分析

概要设计

详细设计

确认测试

系统测试

集成测试单元测试§1测试概念第二十五页,共73页。W模型2023/4/1526第二十六页,共73页。H模型H模型揭示的原理:软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行。第二十七页,共73页。六、软件测试的基本原则1、应尽早地和不断地进行软件测试。2、程序员应避免检查自己的程序。3、测试用例应由测试输入数据和与之对应的预期输出结果两部分组成。4、测试用例的设计,应有合理的输入数据和不合理的输入数据。5、充分注意测试中的群集现象。6、严格执行测试计划,排除测试的随意性。

§1测试概念第二十八页,共73页。七、测试的基本步骤模块测试整体测试功能测试预测试系统测试验收测试安装测试概要设计审查详细设计审查代码审查测试(单元测试)(组装测试)(有效性测试)(确认测试){{§1测试简介第二十九页,共73页。静态测试应用于软件开发过程的早期阶段不实际运行被测试程序对软件进行分析、检查和测试可用于各种软件文档进行测试主要方法:审阅和检查动态测试在计算机上运行被测的程序代码通过检查程序运行情况进行测试§2测试方法2023/4/1530第三十页,共73页。静态的和动态的主持人作者记录员列席人员内审员技术专业人员用户代表不正式正式互审

走读审查会议运行程序§2测试方法2023/4/1531第三十一页,共73页。静态分析方法指以人工的、非形式化的方法对程序进行分析和测试。 桌前检查 代码会审 步行检查步行检查时,还常使用以下分析方法:①调用图 从语义的角度考察程序的控制路线。②数据流分析图 检查分析变量的定义和引用情况。§2测试方法第三十二页,共73页。①调用图

无论Y为何值,都不能够调用子程序。 READYY>0NX:=YX<0YNY调用子程序ABCDE即执行ABC后,是不可能执行路径CDE的。§2测试方法第三十三页,共73页。②数据流分析图节点—表示单个语句。有向边—表示控制结构。

d—定义

r—引用

u—未引用R:duuuuuS:uruuurY:uuddru R=0.5W=1/SY=A**WY=E*WZ=X+YC=Z*S123456只定义不用未定义引用连续定义§2测试方法第三十四页,共73页。黑盒子和白盒子功能测试数据驱动测试结构测试逻辑驱动测试

客户需求事件驱动输入输出§2测试方法2023/4/1535第三十五页,共73页。一、黑盒测试黑盒测试是从用户观点出发的测试,它又称功能测试、数据驱动测试或基于规格说明书或用户手册的测试。它所依据的是程序的外部特性。需求说明产生被测程序测试结果输出比较测试用例§2测试方法2023/4/1536第三十六页,共73页。黑盒测试方法是在程序接口上进行测试,主要是为了发现以下错误:

是否有不正确或遗漏了的功能?

在接口上,输入能否正确地接受?能否输出正确的结果?

是否有数据结构错误或外部信息(例如数据文件)访问错误?

性能上是否能够满足要求?

是否有初始化或终止性错误?

一、黑盒测试§2测试方法2023/4/1537第三十七页,共73页。用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出。但这是不可能的。一、黑盒测试§2测试方法2023/4/1538第三十八页,共73页。假设一个程序P有输入量X和Y及输出量Z。在字长为32位的计算机上运行。若X、Y取整数,按黑盒方法进行穷举测试:可能采用的测试数据组:

232×232=264

如果测试一组数据需要1毫秒,一年工作365×24小时,完成所有测试需5亿年。

一、黑盒测试§2测试方法2023/4/1539第三十九页,共73页。二、黑盒测试的设计方法等价分类法边值分析法错误推测法因果图法

不考虑程序的内部结构与特性,只根据程序功能或程序的外部特性设计测试用例。§2测试方法第四十页,共73页。1.等价类划分基本思想:把所有可能的输入数据,即程序的输入域划分成若干部分—“等价类”,然后从每一部分中选取少数有“代表性”的数据做为测试用例。

分为两步:划分等价类(列出等价类表)选取测试用例§2测试方法2023/4/1541第四十一页,共73页。等价类的分类:①有效等价类:是指对于程序的规格说明来说,是合理的,有意义的输入数据构成的集合。②无效等价类:是指对于程序的规格说明来说,是不合理的,无意义的输入数据构成的集合。1.等价类划分§2测试方法2023/4/1542第四十二页,共73页。数学含义A<=X<=BC<=Y<=D等价类划分的原则§2测试方法2023/4/1543第四十三页,共73页。等价分类法步骤应按照输入条件(如输入值的范围,值的个数,值的集合,输入条件必须如何)划分为有效等价类和无效等价类。例如:每个学生可选修1-3门课程可以划分一个有效等价类:选修1-3门课程。可以划分两个无效等价类:未选修课,选修课超过3门。又如:标识符的第一个字符必须是字母。可以划分为一个有效等价类:第一个字符是字母。可以划分一个无效等价类:第一个字符不是字母。①划分“等价类”

显然,关键是如何划分等价类A、为每个等价类编号;B、使一个测试用例尽可能覆盖多个有效等价类C、特别要注意的是:一个测试用例只能覆盖一个无效等价类。②选择测试用例第四十四页,共73页。等价类划分的原则(1)如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类。 §2测试方法2023/4/1545第四十五页,共73页。等价类划分的原则(2)如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,这时可确立一个有效等价类和一个无效等价类。例如,在Pascal语言中对变量标识符规定为“以字母打头的……串”。那么所有以字母打头的构成有效等价类,而不在此集合内(不以字母打头)的归于无效等价类。

§2测试方法2023/4/1546第四十六页,共73页。等价类划分的原则(3)如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类。(4)如果规定了输入数据的一组值,而且程序要对每个输入值分别进行处理。这时可为每一个输入值确立一个有效等价类,此外针对这组值确立一个无效等价类,它是所有不允许的输入值的集合。例如,在教师上岗方案中规定对教授、副教授、讲师和助教分别计算分数,做相应的处理。因此可以确定4个有效等价类为教授、副教授、讲师和助教,一个无效等价类,它是所有不符合以上身分的人员的输入值的集合。§2测试方法2023/4/1547第四十七页,共73页。等价类划分的原则(5)如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。例如,Pascal语言规定“一个语句必须以分号‘;’结束”。这时,可以确定一个有效等价类“以‘;’结束”,若干个无效等价类“以‘:’结束”、“以‘,’结束”、“以‘’结束”、“以LF结束”等。§2测试方法2023/4/1548第四十八页,共73页。确立等价类测试用例确立了等价类之后,建立等价类表,列出所有划分出的等价类。§2测试方法2023/4/1549第四十九页,共73页。确立等价类测试用例再从划分出的等价类中按以下原则选择测试用例:为每一个等价类规定一个唯一编号;设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。§2测试方法2023/4/1550第五十页,共73页。

在某一PASCAL语言版本中规定:“标识符是由字母开头,后跟字母或数字的任意组合构成。有效字符数为8个,最大字符数为80个。”并且规定:“标识符必须先说明,再使用。”“在同一说明语句中,标识符至少必须有一个。”

举例§2测试方法2023/4/1551第五十一页,共73页。建立输入等价类表举例§2测试方法2023/4/1552第五十二页,共73页。下面选取了9个测试用例,它们覆盖了所有的等价类。①VARx,T1234567:REAL;

BEGINx:=3.414;

T1234567:=2.732;

...…(1),(2),(4),(8),(9),(12),(14)②VAR:REAL;(3)③VARx,:REAL;(5)

举例§2测试方法2023/4/1553第五十三页,共73页。④VART12345678REAL;(6)⑤VART12345......REAL;(7)多于80个字符⑥VART$:CHAR;(10)⑦VARGOTO:INTEGER;(11)⑧VAR2T:REAL;(13)⑨VARPAR:REAL;(15)BEGIN......PAP:=SIN(3.14*0.8)/6;举例§2测试方法2023/4/1554第五十四页,共73页。2.边界值分析基本思想:选择等价类的边缘值作为测试用例,让每个等价类的边界都得到测试,选择测试用例既考虑输入亦考虑输出。

分析步骤:

A、先划分等价类。

B、选择测试用例,测试等价类边界。边界选择原则:

A、按照输入值范围的边界。

B、按照输入/输出值个数的边界。

C、输出值域的边界。

D、输入/输出有序集的边界。§2测试方法2023/4/1555第五十五页,共73页。2.边界值分析比如,在做三角形计算时,要输入三角形的三个边长:A、B和C。我们应注意到这三个数值应当满足:

A>0、B>0、C>0、

A+B>C、A+C>B、B+C>A,才能构成三角形。但如果把六个不等式中的任何一个大于号“>”错写成大于等于号“≥”,那就不能构成三角形。问题恰出现在容易被疏忽的边界附近。§2测试方法2023/4/1556第五十六页,共73页。2.边界值分析这里所说的边界是指,相当于输入等价类和输出等价类而言,稍高于其边界值及稍低于其边界值的一些特定情况。使用边界值分析方法设计测试用例,首先应确定边界情况。应当选取正好等于,刚刚大于,或刚刚小于边界的值做为测试数据,而不是选取等价类中的典型值或任意值做为测试数据。

§2测试方法2023/4/1557第五十七页,共73页。2.边界值分析数学含义A<=X<=BC<=Y<=D§2测试方法2023/4/1558第五十八页,共73页。A、按照输入值范围的边界。例如:输入值的范围是-1.0至1.0,则可选择用例–1.0、1.0、-1.001、1.001。

B、按照输入/输出值个数的边界。例如:输入文件可有1-255个记录,则设计用例:文件的记录数为0个、1个、255个、256个。

C、输出值域的边界。例如:检索文献摘要,最多4篇。设计用例:可检索0篇、1篇、4篇,和5篇(错误)。

D、输入/输出有序集(如顺序文件、线性表)的边界。应选择第一个元素和最后一个元素。边值分析法举例§2测试方法第五十九页,共73页。3.错误推测法人们也可以靠经验和直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的用例。错误推测法的基本想法是:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。一般经验----输入数据为0,输出数据为0,输入表格为空等§2测试方法2023/4/1560第六十页,共73页。4.因果图因果图:把输入条件视为“因”,把输出条件视为“果”,将黑盒看成是从因到果的网络图,采用逻辑图的形式来表达功能说明书中输入条件的各种组合与输出的关系。根据这种关系可选择高效的测试用例。因果图是一种形式化语言,是一种组合逻辑网络图。§2测试方法2023/4/1561第六十一页,共73页。4.因果图适用范围:如果在测试时必须考虑输入条件的各种组合,可使用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来设计测试用例。因果图方法最终生成的就是判定表。它适合于检查程序输入条件的各种组合情况。§2测试方法2023/4/1562第六十二页,共73页。因果图基本符号用Ci表示原因,用Ei表示结果,各结点表示状态,可取值“0”或“1”。“0”表示某状态不出现,“1”表示某状态出现。主要的原因和结果之间的关系有:§2测试方法2023/4/1563第六十三页,共73页。因果图基本符号表示约束条件的符号:为了表示原因与原因之间,结果与结果之间可能存在的约束条件,在因果图中可以附加一些表示约束条件的符号。§2测试方法2023/4/1564第六十四页,共73页。因果图基本步骤(1)分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。(2)分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的是什么关系?根据这些关系,画出因果图。

§2测试方法2023/4/1565第六十五页,共73页。因果图基本步骤(3)由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件。(4)把因果图转换成判定表。(5)把判定表的每一列拿出来作为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论