1、Copyright Tsinghua UniversityDec, 2006Page 1董渊 ( System Software & Software Engineering)Department of Computer Science & TechnologyTsinghua University软件验证与确认Copyright Tsinghua UniversityDec, 2006Page 2内容提要内容提要基本概念Fagan Inspection软件测试基本概念软件测试的分类软件测试用例设计测试自动化总结Copyright Tsinghua UniversityDec, 2006Pag
2、e 3透视软件质量问题透视软件质量问题软件缺陷开销需求定义需求定义设计设计编码编码测试测试维护维护152050100需求, 56%设计, 27%编码, 7%其它, 10%缺陷分布Copyright Tsinghua UniversityDec, 2006Page 4验证与确认(验证与确认(V&V)验证(Verification)Are we building the product right?Software conforms to its specification保证:软件软件正确实现特定功能(软件SPEC)确认(Validation)Are we building the right
3、product?Software meets the users needs保证:软件的实现满足用户需求(需求SPEC)Copyright Tsinghua UniversityDec, 2006Page 5Static vs. Dynamic V&V审查(Inspection)Analyze and check system representation such as requirements documents, design diagrams and the program source code.All the stages of software life cycle测试(Test
4、ing)Execution with test data and examining operational behaviourCopyright Tsinghua UniversityDec, 2006Page 6内容提要内容提要基本概念Fagan Inspection软件测试基本概念软件测试的分类软件测试用例设计测试自动化总结Copyright Tsinghua UniversityDec, 2006Page 7软件审查软件审查非正式的文档/代码走查(Walkthrough)作者和评估者,二人讨论正式的软件审查Fagan 76, Gilb 94审查前活动审查会议审查后活动审查角色:作者、审
5、查员、测试员Copyright Tsinghua UniversityDec, 2006Page 8Fagan审查审查IBM, Michael Fagan, 1976IBM Huston,航天飞机软件,200万行代码,审查发现85%的错误,测试发现另15%IBM North Harbor,审查发现93%的缺陷,生产力提高9%Copyright Tsinghua UniversityDec, 2006Page 9Fagan审查审查主要角色主要角色主审员规划审查,主持会议,遵循Fagan方针,解决冲突,记录缺陷,确保后继活动实施讲解员讲解交付品,参与评审产品设计者准备数据和材料,修正缺陷测试员分析
6、测试需求Copyright Tsinghua UniversityDec, 2006Page 10Fagan审查审查主要方针主要方针6 / 304 / 10-15测试计划测试计划125 / 500100 / 300代码代码6 / 304 / 10-15设计设计6 / 304 / 10-15需求需求审审查查时时间间6 / 304 / 10-15测试计划测试计划125 / 500100 / 300代码代码6 / 304 / 10-15设计设计6 / 304 / 10-15需求需求准准备备时时间间最多最多/每小(页)每小(页)总计总计/每小(页)每小(页)区域区域活动活动严格标准/放宽标准Copyr
7、ight Tsinghua UniversityDec, 2006Page 11Fagan审查审查主要步骤主要步骤1.计划:时间、地点、人员、材料2.概述:背景材料3.准备:交付品和其它相关文档4.审查:缺陷识别,建立缺陷数据库以便进行度量和历史分析5.分析/过程改进:确定过程中存在的问题6.修改:缺陷修改7.后继活动:确保缺陷修正,问题得到解决Copyright Tsinghua UniversityDec, 2006Page 12Fagan审查审查进入进入/退出标准退出标准1.设计满足需求设计满足需求2.设计满足设计标准设计满足设计标准3.设计缺陷得到纠正设计缺陷得到纠正1.需求通过审查并
8、结束需求通过审查并结束2.设计文档就绪设计文档就绪3.具有足够领域知识的具有足够领域知识的审查者就绪审查者就绪设计设计1.需求满足客户需求需求满足客户需求2.所有需求缺陷得到纠所有需求缺陷得到纠正正1.具有足够的评审文档具有足够的评审文档专业技能的审查者准专业技能的审查者准备就绪备就绪2.需求文档就绪需求文档就绪需求需求退出标准退出标准进入标准进入标准审查类型审查类型Copyright Tsinghua UniversityDec, 2006Page 13Fagan审查审查进入进入/退出标准退出标准1.代码满足设计和需求代码满足设计和需求2.代码遵循程序编码标代码遵循程序编码标准准3.代码通过
9、完全的编译代码通过完全的编译4.缺陷排除缺陷排除1.需求及设计通过审查并需求及设计通过审查并结束结束2.程序概述就绪程序概述就绪3.具有足够领域知识的审具有足够领域知识的审查者就绪查者就绪4.代码列表就绪代码列表就绪5.源代码清晰并可编译源代码清晰并可编译6.代码满足程序编码标准代码满足程序编码标准代码代码退出标准退出标准进入标准进入标准审查类型审查类型Copyright Tsinghua UniversityDec, 2006Page 14Fagan审查审查进入进入/退出标准退出标准1.测试计划足以胜任需求测试计划足以胜任需求的测试的测试2.测试计划遵循测试标准测试计划遵循测试标准3.缺陷排
10、除缺陷排除1.需求需求/设计结束设计结束2.概述就绪概述就绪3.具有足够领域知识具有足够领域知识的审查者就绪的审查者就绪测试计划测试计划退出标准退出标准进入标准进入标准审查类型审查类型Copyright Tsinghua UniversityDec, 2006Page 15Fagan审查审查问题严重性问题严重性待调查的项目,暂时不能确认是否为缺陷待调查的项目,暂时不能确认是否为缺陷调查(调查(INV)根据主要缺陷分析得到的过程改进建议根据主要缺陷分析得到的过程改进建议过程改进(过程改进(PI)产品中的非主要问题产品中的非主要问题次要问题(次要问题(m)产品中的一种缺陷,如果缺陷没有被发现,产品
11、中的一种缺陷,如果缺陷没有被发现,将会导致客户抱怨将会导致客户抱怨主要问题(主要问题(M)定义定义问题严重性问题严重性Copyright Tsinghua UniversityDec, 2006Page 16Fagan审查审查缺陷分类缺陷分类逻辑设计需求可维护性接口数据用量性能标准代码注释系统接口系统接口可移植性可移植性可靠性可靠性可维护性可维护性错误处理错误处理其他其他产品目标产品目标文件文件硬件接口硬件接口竞争分析竞争分析功能功能软件接口软件接口性能性能拼写拼写可用性可用性Copyright Tsinghua UniversityDec, 2006Page 17内容提要内容提要基本概念Fa
12、gan Inspection软件测试基本概念软件测试的分类软件测试用例设计测试自动化总结Copyright Tsinghua UniversityDec, 2006Page 18基本概念基本概念-自测题目自测题目假设一程序实现以下功能:读入3个数据,分别代表三角形的三条边,判断并输出三角形的形状,即:不等边三角形,等边三角形,等腰三角形。请列出可以用来测试该程序的测试用例。Copyright Tsinghua UniversityDec, 2006Page 19自测参考测试用例自测参考测试用例1.正确的不等边三角形2.正确的等边三角形3.正确的等腰三角形4.不正确的三角形,两边长度之和等于第三
13、边5.不正确的三角形,两边长度之和小于第三边6.不正确的三角形,至少有一边长度小于或等于07.输入数据少于或多于3个8.输入非数据字符Copyright Tsinghua UniversityDec, 2006Page 20基本概念基本概念-测试的目的测试的目的G. MyersTesting is the process of executing a program with the intent of finding an error.(测试是程序执行的过程,目的在于发现错误)A good test case is one that has a high probability of fin
14、ding an as-yet undiscovered error. (好的测试用例在于能发现至今未发现的错误)A successful test is one that uncovers an as-yet undiscovered error.(成功的测试是发现了至今未发现的错误)Copyright Tsinghua UniversityDec, 2006Page 21测试的目的测试的目的(续)(续)以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷。实施测试收集到的测试结果数据为可靠性分析提供依据。测试不能表明软件中不存在错误,它只能说明软件中存在错误。Copyright Tsin
15、ghua UniversityDec, 2006Page 22基本概念基本概念-测试的原则测试的原则“尽早地和不断地进行软件测试”,测试贯穿于整个软件生命周期测试需按计划进行,测试计划需根据需求尽早编写彻底的、无遗漏的测试是不可能的应包括“合理的输入”及“不合理的输入”Copyright Tsinghua UniversityDec, 2006Page 23测试的原则测试的原则(续)(续)80-20法则(the Pareto principle),注意测试的群集现象测试应以用户需求为标准第三方测试(软件分工)妥善保存测试文档,为维护提供方便Copyright Tsinghua Universi
16、tyDec, 2006Page 24内容提要内容提要基本概念Fagan Inspection软件测试基本概念软件测试的分类软件测试用例设计测试自动化总结Copyright Tsinghua UniversityDec, 2006Page 25软件测试的分类软件测试的分类基本分类黑盒测试,白盒测试按照测试的不同阶段划分单元测试,组合测试,集成测试,系统测试按照不同的测试目的划分功能测试,性能测试,安全测试按照不同的测试对象划分C/S测试,GUI测试,实时软件测试Copyright Tsinghua UniversityDec, 2006Page 26Copyright Tsinghua Univ
17、ersityDec, 2006Page 27单元测试单元测试目的针对程序模块,发现各独立模块的错误特点依据详细设计说明书和源程序清单从程序的内部结构出发,设计测试用例以白盒测试为主Copyright Tsinghua UniversityDec, 2006Page 28Copyright Tsinghua UniversityDec, 2006Page 29集成测试集成测试在单元测试的基础上,将所有模块根据设计要求组装为系统,并测试组装后的模块集,以发现单元测试中不能发现的集成错误模块间的接口错误模块间是否存在不利的相互影响模块间的功能组合是否达到预期的功能全局数据结构是否正确Copyrigh
18、t Tsinghua UniversityDec, 2006Page 30集成测试集成测试非增量式组装增量式组装自顶向下自底向上混合式Copyright Tsinghua UniversityDec, 2006Page 31Copyright Tsinghua UniversityDec, 2006Page 32系统测试系统测试在实际的运行环境中,测试整个计算机系统计算机硬件外设支持软件数据人员Copyright Tsinghua UniversityDec, 2006Page 33性能测试性能测试确保系统的性能满足需求负载测试在长期、重负载的情况下,监测系统的响应时间和资源占用状况压力测试在
19、短时间内,重负载(大数据量、大用户量)的情况下,监测系统的响应时间和资源占用状况疲劳测试长期、正常负载情况下,监测系统的稳定运行状况Copyright Tsinghua UniversityDec, 2006Page 34验收测试验收测试由有用户参与的专门测试小组,来验证软件产品所展示的各种功能/非功能性能Copyright Tsinghua UniversityDec, 2006Page 35内容提要内容提要基本概念Fagan Inspection软件测试基本概念软件测试的分类软件测试用例设计测试自动化总结Copyright Tsinghua UniversityDec, 2006Page
20、36测试用例测试用例软件测试的基本依据组成部分:输入数据动作约束条件期望的输出结果测试用例01输入输入: 1.输入数字3; 2.输入加号; 3.输入数字4。期望的输出期望的输出:7Copyright Tsinghua UniversityDec, 2006Page 37测试用例的设计原则测试用例的设计原则有效性可能发现软件缺陷经济性尽可能少的资源耗费发现尽可能多的软件错误可仿效性同时测试多项内容,以减少测试用例数量Copyright Tsinghua UniversityDec, 2006Page 38测试用例的设计原则测试用例的设计原则(续)(续)多重性既考虑合理的输入,又考虑不合理的输入无
21、冗余性不同的测试用例,不同的测试目的完备性既要检查软件应具有的功能,又要检查不应有的功能Copyright Tsinghua UniversityDec, 2006Page 39测试用例的基本设计方法黑盒测试方法等价类划分(Equivalent Partition)边界值分析(Boundary Value Analysis)白盒测试方法逻辑覆盖法基本路径测试Copyright Tsinghua UniversityDec, 2006Page 40黑盒测试方法黑盒测试方法目的从用户的角度发现应用程序的功能性错误,如:遗漏的、误解的功能或接口定义主要特点不考虑程序内部的逻辑结构和内部特性依照需求规
22、格说明书检查程序功能主要问题输入空间不可能穷举Copyright Tsinghua UniversityDec, 2006Page 41PXYZ输入输出处理X、Y:32位整数可能采用的测试数据组:232x232=264测试时间(假设每个测试用例1毫秒,一年工作365x24小时):5亿年Copyright Tsinghua UniversityDec, 2006Page 42等价类划分等价类划分特点典型的黑盒测试方法,不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。主要方法将所有可能的输入数据,即程序的输入域,划分为若干部分,从每一部分中选取少数有代表性的数据作为测试用例。主要步骤划分
23、等价类选取测试用例Copyright Tsinghua UniversityDec, 2006Page 43等价类输入域的子集合。在该子集合中,每一个数据对于揭露程序的错误上是等效的。有效等价类对于程序的规格说明来说,是合理的用以检验程序是否满足了规格说明无效等价类对于程序的规格说明来说,是不合理的用以检验程序的意外处理能力,可靠性测试用例的生成方法从每一个等价类中选取代表性的数据Copyright Tsinghua UniversityDec, 2006Page 44P输入数字输出字母功能:1.将1-26的正整数按从小到大的次序 依次转换成A-Z大写的英文字母2.将101-126的正整数按从
24、小到大的次序 依次转换成a-z小写的英文字母Copyright Tsinghua UniversityDec, 2006Page 45-1.2, 3.5小数小数+, =, /其他其他 a, D, lsd字母字母00-7, -123负整数负整数127, 800正整数正整数12630, 79正整数正整数27-100101, 110, 120正整数正整数101-1261, 2, 25, 26正整数正整数1-26测试用例测试用例等价类等价类有效有效等价类等价类无效无效等价类等价类Copyright Tsinghua UniversityDec, 2006Page 46边界值分析边界值分析特点由于大量的
25、错误常常发生在输入/输出的边界上,选取边界值作为测试用例能有效的检测出错误。是对等价类分析方法的补充:选取边界值,而不是等价类中的任意值不仅考虑输入域,还考虑输出域Copyright Tsinghua UniversityDec, 2006Page 47主要方法主要方法确定输入等价类及输出等价类确定输入等价类及输出等价类确定边界值确定边界值选取正好等于,刚刚大于,和刚刚小于边界选取正好等于,刚刚大于,和刚刚小于边界值的数据作为测试用例。值的数据作为测试用例。例如例如用边界值分析法测试用边界值分析法测试Y2K问题问题2000.1.1, 2000.2.29 用边界值分析法测试三角形判断问题用边界值
26、分析法测试三角形判断问题A=0, B=0, C=0, A+B=C, A+C=B, B+C=ACopyright Tsinghua UniversityDec, 2006Page 48白盒测试方法白盒测试方法根据程序的内部逻辑结构及有关信息,设计或选择测试用例。对程序模块的所有独立的执行路径至少测试一次对所有的逻辑判定,取“真”与取“假”的两种情况都至少测一次在循环的边界和运行界限内执行循环体测试内部数据结构的有效性Copyright Tsinghua UniversityDec, 2006Page 49穷举测试:穷举测试:不同执行路径:520假设每条路径测试时间为1毫秒,每年的工作时间为24*
27、365小时,则测试时间为3170年。Copyright Tsinghua UniversityDec, 2006Page 50白盒测试白盒测试-逻辑覆盖法逻辑覆盖法语句覆盖判定覆盖条件覆盖判定-条件覆盖路径测试Copyright Tsinghua UniversityDec, 2006Page 51(A1) and (B=0)X=X/A(A=2) or (X1)X=X+1L1: a-c-eL2: a-b-dL3: a-b-eL4: a-c-dCopyright Tsinghua UniversityDec, 2006Page 52语句覆盖语句覆盖设计测试用例,运行所测程序,使得每一条可执行语句
28、至少执行一次例:可执行语句:X=X/A, X=X+1路径L1:a-c-e逻辑条件:(A1)(B=0)(A=2)V(X1)测试用例:输入:A=2, B=0, X=4 输出 :A=2, B=0, X=3问题:可能不能发现判断中逻辑运算中的错误如:(A1) and (B=0) 误写为 (A1) or (B=0)Copyright Tsinghua UniversityDec, 2006Page 53判定(分支)覆盖判定(分支)覆盖使得程序中每个判定的取真分支和取假分支至少执行一次A=1B=1X=1A=2B=1X=1A=3B=0X=3A=2B=0X=4测试用例测试用例a-b-da-b-ea-c-da-
29、c-e路径路径0101(A=2)V(X1)0011(A1)(B=0)a-c-e, a-b-d; 或者 a-c-d, a-b-e 问题:无法检查条件错误,x1 误写为xb-e1010A=2,B=1,X=1a-b-e0101测试用例测试用例路径路径X1A=2B=0A1Copyright Tsinghua UniversityDec, 2006Page 55判定判定-条件覆盖条件覆盖使得程序中每个判断中所有条件的所有可能取值至少执行一次所有可能的判断结果至少执行一次A=1,B=1,X=1a-b-d0000A=2,B=0,X=4a-c-e1111测试用例测试用例路径路径X1A=2B=0A1问题:逻辑表
30、达式错误不一定能检查出来Copyright Tsinghua UniversityDec, 2006Page 56路径覆盖路径覆盖使得程序中所有可能的路径都执行至少一次A=3,B=0,X=3a-c-d0011A=1,B=1,X=2a-b-e1000A=1,B=1,X=1a-b-d0000A=2,B=0,X=4a-c-e1111测试用例测试用例路径路径X1A=2B=0A1Copyright Tsinghua UniversityDec, 2006Page 57白盒测试白盒测试-基本路径测试基本路径测试将覆盖的路径数压缩到一定限度内,在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可
31、执行路径集合(基本路径集、基本集)保证被测程序的每一条可执行语句至少执行一次Copyright Tsinghua UniversityDec, 2006Page 58程序控制流图程序控制流图描述程序的控制流节点:表示一个或多个无分支的语句有向边:控制流方向区域:边和接点圈定的区域Copyright Tsinghua UniversityDec, 2006Page 59Copyright Tsinghua UniversityDec, 2006Page 60复合逻辑的控制流图Copyright Tsinghua UniversityDec, 2006Page 61程序环路复杂性程序环路复杂性Mc
32、Cabe程序复杂性度量程序控制流图中,有向图G所封闭的环路个数V(G):V(G) = G中的边数-G中的节点数+2= G中的判定的节点数+1= G中的区域数Copyright Tsinghua UniversityDec, 2006Page 6216243578IIIIIIIVV=3+1=4Copyright Tsinghua UniversityDec, 2006Page 63独立路径独立路径基本路径集合的成员某一程序的独立路径是从程序入口到出口的多次执行中,每次至少一个语句是新的(包括运算、赋值、输入输出或判断)。在控制流图中,从入口进入后,至少要经历一个从未走过的弧。程序中至少引进一个新
33、的处理语句集合或一个条件的任一路径。Copyright Tsinghua UniversityDec, 2006Page 64基本集基本集V(G)提供了组成基本集独立路径的上界。基本集并不唯一。基本集测试:每一条语句至少执行一次;每一个条件执行时都将分别去T和F。基本导出:控制流图遍历Copyright Tsinghua UniversityDec, 2006Page 65独立路径:L1: 1-11L2: 1-(2,3)-(4,5)-10-1-11L3: 1-(2,3)-6-8-9-10-1-11L4: 1-(2,3)-6-7-9-10-1-11Copyright Tsinghua Unive
34、rsityDec, 2006Page 66生成测试用例生成测试用例适用于模块的详细设计及源代码以详细设计或源代码为基础,导出程序的控制流图计算得到的控制流图的环路复杂性确定线性无关的基本路径集生成测试用例,确保基本路径集中每条路径的执行Copyright Tsinghua UniversityDec, 2006Page 67(A1) and (B=0)X=X/A(A=2) or (X1)X=X+1L1: a-c-eL2: a-b-dL3: a-b-eL4: a-c-dCopyright Tsinghua UniversityDec, 2006Page 68X=X/A(A1)(B=0)(A=2)
35、(X1)X=X+1Copyright Tsinghua UniversityDec, 2006Page 69环路复杂性:V=11-8+2=4+1=5基本路径集I:L1: 1-2-5-6-8L2: 1-2-3-5-6-8L3: 1-2-3-4-5-6-8L4: 1-2-3-4-5-6-7-8L5: 1-2-3-4-5-7-82853IIIIIIIVV1476基本路径集II:L1: 1-2-5-7-8L2: 1-2-3-5-6-7-8L3: 1-2-3-4-5-6-8Copyright Tsinghua UniversityDec, 2006Page 70 编编号号路径路径测试用例测试用例L11-
36、2-5-6-81,0,11,0,1L21-2-3-5-6-83,1,13,1,1L31-2-3-4-5-6-83,0,33,0,1L41-2-3-4-5-6-7-83,0,63,0,2L51-2-3-4-5-7-82,0,22,0,2 2853IIIIIIIVV1476Copyright Tsinghua UniversityDec, 2006Page 71内容提要内容提要基本概念Fagan Inspection软件测试基本概念软件测试的分类软件测试用例设计测试自动化总结Copyright Tsinghua UniversityDec, 2006Page 72测试周期测试周期相关项目文档测试计
37、划测试脚本测试计划测试计划测试策略测试设计测试设计测试运行测试运行-缺陷跟踪缺陷跟踪测试结果结果分析结果分析缺陷报告分析报告测试管理测试管理Copyright Tsinghua UniversityDec, 2006Page 73回归测试回归测试概念:当发现软件存在缺陷后,首先要把错误定位,其次提出修改方案,审定后进行正式修改.然后将原有的测试用例重新测试,并验证测试结果.NOTE: 不能简单地只执行发现缺陷的测试用例,有时在修改程序时,会造成软件其它地方的错误.*: 每次修改后重新执行所有测试用例!Copyright Tsinghua UniversityDec, 2006Page 74软件
38、测试自动化软件测试自动化优势重复工作, 回归测试手工测试难以执行的操作测试设计/数据复用提高测试效率更好利用资源局限测试有效性可维护性与被测系统的互操作性测试工具的技术支持Copyright Tsinghua UniversityDec, 2006Page 75测试工具测试工具静态分析工具动态分析工具覆盖工具测试设计工具测试执行与结果比较工具性能模拟工具测试管理工具Copyright Tsinghua UniversityDec, 2006Page 76本章回顾本章回顾验证与确认用户需求,规格说明软件审查静态检查,人工行为软件测试动态检查,实际运行目的是发现错误,最好由第三方进行自动测试: 连续集成/连续测试