软件测试理论知识学习PPT记录

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

一、测试方法分类:(1)静态测试技术常用静态测试方法:代码复查代码检查(CodeInspection)代码走查(Walkthrough)桌面检查(DeskChecking)代码审查(CodeReview)静态分析(主要由软件工具自动进行)(2)动态测试技术1)白盒(覆盖率)测试已知产品内部工作流程,通过测试来检测产品的内部动作是否按照详细设计规格说明的规定正常进行,而不管它的功能;也称为结构测试或逻辑驱动测试;目标是对所有逻辑路径进行测试,穷举路径;依据详细设计规范;一种验证技术。基本覆盖基于控制流的测试a.语句覆盖程序中每条可执行语句至少被执行一次;C1覆盖、行覆盖、段覆盖、基本块覆盖;语句覆盖的盲点(=0;循环;条件);语句覆盖是最起码的测试要求;b.分支(判定)覆盖程序中的每一个判定的取真分支和取假分支至少通过一次;C2覆盖、决策覆盖;分支覆盖的盲点:短路估值使分支覆盖不必考虑所有条件;忽略了从复合谓词引出的隐含路径;分支覆盖不能保证所有入口-出口路径都被执行;c.条件覆盖每个判定的每个条件的可能取值至少评价一次不要求测试所有可能的分支d.条件/判定覆盖设计足够多的测试用例,使得判定语句中每个条件的所有可能取值至少评价一次,同时每个判定语句本身的所有可能分支也至少评价一次。e.条件组合覆盖每个判定的所有可能条件取值组合至少执行一次。达到了条件组合覆盖,所有的语句、分支和条件都将覆盖,但不保证路径覆盖。在实际测试中,由于谓词表达式的短路估值和排它性条件使得达到所有条件组合不可能。f.基本路径覆盖:设计足够多的测试用例,执行程序中所有可能的路径。圈复杂度C=e-n+2基本路径覆盖要求测试C条不同的入口-出口路径在某些程序中,分支覆盖可在少于C条路径的情况下获得基本路径覆盖可能既没有获得语句覆盖也没有获得分支覆盖。g.循环覆盖每种循环结构都有一个不同的控制流图简单循环、嵌套循环、顺序循环、面条循环从最内层循环开始测试,直到最外层数据流覆盖通过一定的覆盖准则检查程序中每个数据对象的每次定义、使用和消除。数据流模型(DUK)数据流覆盖策略变元覆盖(mutationcoverage)测试覆盖被测实现的指定的变体,如测试探测到变元,则变体“退役”,如测试探测不到变元,则修正测试包。变元是指为程序植入小的变化,一般是常出现的错误,如将=改写成。用于检查系统的容错能力和测试套件的充分性。覆盖分析器覆盖分析器是分析测试覆盖率的工具覆盖分析器工作原理:通过对源代码的词法分析,插入可跟踪代码,再编译连接;当装配过可跟踪代码的软件执行时,就会产生一个跟踪文件;测试完成后,利用跟踪文件生成覆盖报告;覆盖率的作用不可执行的路径或条件不可能到达或冗余的代码不充分的测试用例集覆盖率与缺陷查找覆盖与发现缺陷之间没有必然联系获得任何覆盖目标都不意味着没有缺陷:需求相关的缺陷;丢失的代码;中断相关的缺陷;兼容性/配置相关的缺陷;路径测试(Book70)分支结构的路经测试嵌套型分支结构和串联型分支结构循环结构的路径测试2)黑盒测试已知软件产品应该具有的功能,通过测试来检测每个功能是否都能正常使用;黑盒法着眼于程序外部结构,不考虑内部逻辑结构;穷举输入/状态测试,测试情况有无穷多个;依据需求规范;检查程序实现的功能,是一种确认技术;也称为功能测试或数据驱动测试。黑盒测试的不彻底性:不可能测试所有的输入有效的输入无效的输入输入的编辑特性输入时间的考虑不可能测试多个输入的所有组合黑盒测试的常用方法:边界值分析(boundaryanalysis)边界值测试任何程序都可以看做是一个函数,程序的输入构成函数的定义域,程序的输出构成函数的值域。可基于定义域或值域进行边界值测试;边界值测试更适合于非强类型语言,如C;边界区域是错误高发区;边界值测试融入了一定程度的否定测试设计;边界值测试通过边界值分析获得测试用例。基本思想最小值、略高于最小值、正常值、略低于最大值、最大值等价类划分(equivalenceclasspartitioning)含义:把输入域划分成若干部分,从每个部分中选取有代表性的数据作为测试用例。选择有限子集来“代表”所有可能的输入全集;将被测软件的输入和输出分成区许多区域,对于一个区中的任何值,软件的行为是等价的;等价类划分假设任何单一区内的所有值具有相同的测试目的,因此,每个区测试一个值;等价类划分属于肯定类测试设计技术;等价类划分受测试者主观因素的影响。等价类划分步骤:划分等价类考虑有效等价类和无效等价类确定测试用例给每个等价类一个唯一编号设计一个新的测试用例,使其覆盖未被覆盖的有效等价类,直到所有有效等价类都被覆盖为止。设计一个新的测试用例,使其覆盖未被覆盖的无效等价类,直到所有无效等价类都被覆盖为止。等价类测试的类型(Book90)弱一般等价类测试强一般等价类测试弱健壮等价类测试强健壮等价类测试组合逻辑测试(combinationallogictesting)方法因果图(详解Book101)判定表(详解Book98)逻辑函数基于状态转换的测试(state-basedtesting)(Book104)状态转换测试用于被设计成状态机的软件,或者被测软件实现了模型化成状态机的需求。通过建立导致转换的事件的方法来设计测试用例,测试状态之间的转换。使用状态和事件的非法组合来设计否定类的测试用例。随机测试(randomtesting)测试输入数据是在所有可能输入值中随机选取。随机选取用随机模拟的方法,包括用伪随机数发生器、硬件随机模拟器产生输入数据。在测试次数很大时,可在数据输入空间按均匀分布选用。在测试次数较少时,最好在常用的输入数据域以及最可能发生错误的输入数据域选用。基于场景测试(Book109)场景/条件由基本流和备选流组成。二、测试用例设计举例等价类方法测试用例设计举例(Book92、93也有):1.设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在1990年1月~2049年12月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的日期检查功能。(不考虑2月的问题)1)划分等价类并编号,下表等价类划分的结果输入等价类有效等价类无效等价类日期的类型及长度①6位数字字符②有非数字字符③少于6位数字字符④多于6位数字字符年份范围⑤在1990~2049之间⑥小于1990⑦大于2049月份范围⑧在01~12之间⑨等于00⑩大于122)设计测试用例,以便覆盖所有的有效等价类在表中列出了3个有效等价类,编号分别为①、⑤、⑧,设计的测试用例如下:测试数据期望结果覆盖的有效等价类200211输入有效①、⑤、⑧3)为每一个无效等价类设计一个测试用例,设计结果如下:测试数据期望结果覆盖的无效等价类95June无效输入②20036无效输入③2001006无效输入④198912无效输入⑥200401无效输入⑦200100无效输入⑨200113无效输入⑩2.NextDate函数包含三个变量:month、day和year,函数的输出为输入日期后一天的日期。例如,输入为2006年3月7日,则函数的输出为2006年3月8日。要求输入变量month、day和year均为整数值,并且满足下列条件:①1≤month≤12②1≤day≤31③1920≤year≤20501)有效等价类为:M1={月份:1≤月份≤12}D1={日期:1≤日期≤31}Y1={年:1812≤年≤2012}2)若条件①~③中任何一个条件失效,则NextDate函数都会产生一个输出,指明相应的变量超出取值范围,比如month的值不在1-12范围当中。显然还存在着大量的year、month、day的无效组合,NextDate函数将这些组合作统一的输出:无效输入日期。其无效等价类为:M2={月份:月份1}M3={月份:月份12}D2={日期:日期1}D3={日期:日期31}Y2={年:年1812}Y3={年:年2012}弱一般等价类测试用例月份日期年预期输出61519121912年6月16日强一般等价类测试用例同弱一般等价类测试用例注:弱--有单缺陷假设;健壮--考虑了无效值(一)弱健壮等价类测试用例ID月份日期年预期输出WR161519121912年6月16日WR2-1151912月份不在1~12中WR313151912月份不在1~12中WR46-11912日期不在1~31中WR56321912日期不在1~31中WR66151811年份不在1812~2012中WR76152013年份不在1812~2012中(二)强健壮等价类测试用例ID月份日期年预期输出SR1-1151912月份不在1~12中SR26-11912日期不在1~31中SR36151811年份不在1812~2012中SR4-1-11912两个无效一个有效SR56-11811两个无效一个有效SR6-1151811两个无效一个有效SR7-1-11811三个无效边界值方法测试用例设计举例(Book95)1.现有一个学生标准化考试批阅试卷,产生成绩报告的程序。其规格说明如下:程序的输入文件由一些有80个字符的记录组成,如右图所示,所有记录分为3组:1)标题:这一组只有一个记录,其内容为输出成绩报告的名字。2)试卷各题标准答案记录:每个记录均在第80个字符处标以数字2。该组的第一个记录的第1至第3个字符为题目编号(取值为1一999)。第10至第59个字符给出第1至第50题的答案(每个合法字符表示一个答案)。该组的第2,第3……个记录相应为第51至第100,第101至第150,…题的答案。3)每个学生的答卷描述:该组中每个记录的第80个字符均为数字3。每个学生的答卷在若干个记录中给出。如甲的首记录第1至第9字符给出学生姓名及学号,第10至第59字符列出的是甲所做的第1至第50题的答案。若试题数超过50,则第2,第3……纪录分别给出他的第51至第100,第101至第150……题的解答。然后是学生乙的答卷记录。4)学生人数不超过200,试题数不超过999。5)程序的输出有4个报告:a)按学号排列的成绩单,列出每个学生的成绩、名次。b)按学生成绩排序的成绩单。c)平均分数及标准偏差的报告。d)试题分析报告。按试题号排序,列出各题学生答对的百分比。解答:分别考虑输入条件和输出条件,以及边界条件。给出下表所示的输入条件及相应的测试用例。输出条件及相应的测试用例表。基于判定表的测试用例设计举例(Book99)判定表通常由四个部分组成:条件桩(ConditionStub):列出了问题得所有条件。通常认为列出的条件的次序无关紧要。动作桩(ActionStub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。条件项(ConditionEntry):列出针对它左列条件的取值。在所有可能情况下的真假值。动作项(ActionEntry):列出在条件项的各种取值情况下应该采取的动作。(1)划分等价类:输入条件有效等价类无效等价类是否三角形的三条边a0(1)b0(2)c0(3)a+bc(4)b+ca(5)a+cb(6)a-bc(7)b-ca(8)a-cb(9)a=0(10)b=0(11)c=0(12)a+b=c(13)b+c=a(14)a+c=b(15)a-b=c(16)b-c=a(17)a-c=b(18)是否等腰三角形a=b(19)b=c(20)a=c(21)a≠bANDb≠cANDa≠c(22)是否等边三角形a=bANDb=cANDa=c(23)a≠b(24)b≠c(25)a≠c(26)(2).测试用例设计:序号abc覆盖等价类输出1245123456789构成一般三角形2345678910-2233-1221-11231-32-3123121425311

1 / 41
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功