版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件测试方法和技术软件测试方法和技术 - Ch.14 测试用例的设计测试用例的设计主讲教师:郭晓燕主讲教师:郭晓燕第14章 软件测试用例的设计14.1 测试用例概述测试用例概述14.2 白盒测试用例设计方法白盒测试用例设计方法14.3 黑盒测试用例设计方法黑盒测试用例设计方法14.4 测试用例的组织和跟踪测试用例的组织和跟踪 测试用例概述p如何以最少的人力、资源投入,在最短的时间内完成测试,发现软件系统的缺陷,保证软件的优良品质,则是软件公司探索和追求的目标。p测试用例是测试工作的指导,是软件测试的必须遵守的准则,更是软件测试质量稳定的根本保障。 什么是测试用例p测试用例可以独立进行测试执行的
2、最小单元p测试内容的一系列情景和每个情景中必须依靠输入和输出,而对软件的正确性进行判断的测试文档,称为测试用例。p测试用例就是将软件测试的行为活动,做一个科学化的组织归纳。p软件测试是有组织性、步骤性和计划性的,为了能将软件测试的行为转换为可管理的、具体量化的模式,需要创建和维护测试用例为什么需要测试用例n在开始实施测试之前设计好测试用例,避免盲目测试并提高测试效率,减少测试的不完全性;n测试用例的使用令软件测试的实施重点突出、目的明确;n根据测试用例的多少和执行难度,估算测试工作量,便于测试项目的时间和资源管理与跟踪;n减少回归测试的复杂程度,在软件版本更新后只需修正少量的测试用例便可展开测
3、试工作,降低工作强度、缩短项目周期;为什么需要测试用例(2)n功能模块的测试用例的通用化和复用化则会使软件测试易于开展,并随着测试用例的不断细化其效率也不断攀升;n根据测试用例的操作步骤和执行结果,为分析软件缺陷和程序模块质量提供依据;可以方便地书写软件测试缺陷报告;n可以根据测试用例的执行等级,实施不同级别的测试;n便于大型软件测试项目外包测试指导基础;良好测试用例的特征n可以最大程度地找出软件隐藏的缺陷n可以最高效率的找出软件缺陷n可以最大程度地满足测试覆盖要求n既不过分复杂、也不能过分简单n使软件缺陷的表现可以清楚的判定n测试用例包含期望的正确的结果n待查的输出结果或文件必须尽量简单明了
4、n不包含重复的测试用例n测试用例内容清晰、格式一致、分类组织测试用例的组成元素与范例n测试用例编号IDn测试用例标题n测试的模块测试输入条件期望的输出结果其它说明ID类型类型标题标题测试步骤测试步骤期望的结果期望的结果说明说明001登录输入正确密码用户在登录界面输入正确的密码后,按回车键程序提示登录成功002登录输入错误密码用户在登录界面输入错误的密码后,按回车键程序提示输入密码错误,请重新输入003登录不输入的空密码用户在登录界面没有输入任何密码使密码为空后,按回车键程序提示用户没有输入密码,请输入程序应该告知用户没有输入密码,而不是密码错误白盒测试用例设计方法n白盒测试用例的设计方法白盒测
5、试用例的设计方法n逻辑覆盖:以程序的内部逻辑结构为基础,分为语句覆盖、判定覆盖、判定-条件覆盖、条件组合覆盖等n基本路径测试:在程序控制流程的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。n白盒测试用例注意事项白盒测试用例注意事项n由于测试路径可能非常多,由于时间和资源问题,选出足够多的路径测试n由于深入到程序编码,通常开发人员协助测试人员书写白盒测试用例基本路径测试Goal: exercise each independent path at least once.1.Using the code, draw a corresponding flow graph
6、 (First drawing the activity diagram for the code may help, but is not required)2.Determine the cyclomatic complexity of the flow graph.3.Determine a basis set of linearly independent paths.4.Prepare test cases that force the execution of each path in the basis set.Example Procedure: process records
7、1.Do While records remain2.Read record;3.If record field 1 = 0 Then4.store in buffer;5.increment counter;6.Else If record field 2 = 0 Then7.reset counter;8.Else store in file;9.End If10.End If11. End DoEndExample (continued)1910112457836V(G) = 4基本路径测试:流程图12,387694,51011流程图复杂度确定流程图复杂度确定 V(G) =number
8、of regions (areas bounded by nodes and edgesarea outside the graph is also a region) V(G) = number of edges - the number of nodes + 2 V(G) = number of (simple) predicate nodes + 1 Cyclomatic complexity: a quantitative measure of the logical complexity of code, provides an upper bound on the number o
9、f paths that need to be tested in the codeV(G)modulesmodules in this range are more error prone 流程图复杂度例子流程图复杂度例子V(G)=412,378694,51011Region 1Region 2Region 3Region 4确定线性独立的路径集合确定线性独立的路径集合 Independent path any path that introduces at least one new set of processing statements or a new condition Basis
10、 set set of independent paths through the code Test cases derived from a basis set are guaranteed to execute every statement at least one time during testing Basis set is not unique Path1: 1-2-3-6-7-9-10-1-11Basis path test example Path2: 1-2-3-6-8-9-10-1-11 Path3: 1-2-3-4-5-10-1-11Path4: 1-11191011
11、2458736测试用例覆盖集合中每条路径测试用例覆盖集合中每条路径Basis path testing does not test all possible combinations of all paths through the code; it just tests every path at least once. you do not need an activity diagram, but the picture will help when you trace component paths count each logical testcompound tests count
12、 as the number of Boolean operators + 1 (i.e., count each simple predicate) basis path testing should be applied to all components, if possible, and to critical components always条件测试条件测试Goal: further exercises the true and false value of each simple logical condition in a component.nLogical conditio
13、nsSimple condition:(a rel-op b) where rel-op= (may be negated with NOT), e.g., ab; NOT(ab)Compound condition: two or more simple conditions connected with AND, OR, e.g., (ab) AND (c(a+b+c)nerrors to test for include (incorrect/missing/extra):nBoolean operator relational operatornBoolean variable ari
14、thmetic expressionnBoolean parenthesis条件测试条件测试 (2)Domain testingnfor an expression E1 rel-op E2, test for E1 = E2nguarantees detection of rel-op error if E1 and E2 are correctnto detect errors in E1 / E2, the difference between E1 and E2 for the tests E1 than E2 should be as small as possiblenfor an
15、 expression with n variables, 2n tests are requiredBranch testingfor a compound condition C, test true and false branches of C and every simple condition of Ce.g., for C = (ab) AND (cb TRUE, FALSEcd TRUE, FALSEC TRUE, FALSETrue AND TrueT. And F., F. And T.,F. And F.条件测试条件测试 - ExampleBut ( i = result
16、 = 0 ) :maxint N iN result=maxint -1 1 true false 1 0 false truegives condition coveragefor all conditionsBut it does not preservedecision coverage always take care thatcondition coveragepreserves decision coverage :decision / condition coveragei:=i+1;result:=result+i;(iN) and(result=maxint)result=m
17、axintN 0N := -N;output(result);output(too large);exitstartyesnonoyesyesno 分支测试分支测试Branch CoverageExecute the enough test cases,attempting to cover all the paths in the software:- Get both “True” and “False”- Go through each branch。For exampleIF b THEN s1 ELSE s2CASE x OF1 : .2 : .3 : .分支测试分支测试 - exa
18、mple1PROGRAM som ( maxint, N : INT )2INT result := 0 ; i := 0 ;3IF N 04THEN N := - N ;5WHILE ( i N ) AND ( result = maxint )6DOi := i + 1 ;7result := result + i ;8OD;9IF result = maxint10THEN OUTPUT ( result )11ELSE OUTPUT ( “too large” )12END.分支测试分支测试 - continuedi:=i+1;result:=result+i;(iN) and(res
19、ult=maxint)result=maxintN 0N := -N;output(result);output(too large);exitstartyesnonoyesyesnoN =0)result=0 i=0nGoal: execute loops at their boundaries and within their bounds.循环测试循环测试 11.Simple Loops (n iterations) skip the loop entirely only one pass through the loop two passes through the loop m pa
20、sses through the loop where m n n-1, n, n+1 passes through the loop循环测试循环测试 22. Nested LoopsBeizerBEI90 Conduct simple loop tests for the innermost loop while holding the outer loops at their minimum iteration Work outward, conducting tests for the nextinnermost loop Continue until all the loops hav
21、e been testedtests grow geometrically as the level of nesting increases循环测试循环测试 34.Unstructured Loops redesign!3. Concatenated Loopsindependent loops simple loop testingdependent loops nested loop testing等价类测试用例设计方法n黑黑盒测试用例的设计方法之一盒测试用例的设计方法之一n等价类划分等价类划分:n在分析需求规格说明的基础上划分等价类,列出等价类表。 n将程序可能的输入数据分成若干个子集
22、,从每个子集选取一个代表性的数据作为测试用例,等价类是某个输入域的子集,在该子集中每个输入数据的作用是等效的。n等价类的分类:有效等价类和无效等价类。有效等价类是有意义的、合理的输入数据,可以检查程序是否实现了规格说明中所规定的功能和性能。无效等价类与有效等价类的意义相反。设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验。经过正反的测试才能确保软件具有更高的可靠性。all inputsi1i4i2i3确定等价类的方法n在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。in rangegreater than ran
23、geless than rangevaluegreater than valueless than valuen在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类。n在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类确定等价类的方法(2)not member of setmember of setBooleanNon-Boolean确定等价类的方式 (3)n在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。n在规定了输入数据必须遵守的规则的情况下,可确立一
24、个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。 个人月收入- x 税率 x =1600 0% 1600 x 2100 5% 500 = x 3600 10% 3600 = x 6600 15% 6600 = x 21600 20% 21600 = x 101600 45%等价类测试用例-Example等价类1: Integer等价类2: Decimal fraction等价类3: Negative等价类4: Invalid input根据等价类创建测试用例的步骤n建立等价类表,列出所有划分出的等价类:输入条件有效等价类无效等价类 为每个等价类规定一个唯一的编号; 设计一个新
25、的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,最后使得所有有效等价类均被测试用例所覆盖; 设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步使所有无效等价类均被覆盖。边界值测试用例设计方法n程序的很多错误发生在输入或输出范围的边界上,因此针对各种边界情况设置测试用例,可以发现不少程序缺陷。n设计方法:n确定边界情况(输入或输出等价类的边界)n选取正好等于、刚刚大于或刚刚小于边界值作为测试数据确定边界值的方法n如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。n如果输入条件规定了值的个数,则用最大个数、最小个数、比
26、最小个数少一、比最大个数多一的数作为测试数据。abab确定边界值的方法(2)n如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。n如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。n Test cases for ABS(x) :class x = 0, arbitrary value x = 100classes x = 0, on boundary :x = 0classes x = 0, below and above: x = -1, x = 1nTest cases :Class arbitrar
27、y value: X1 = 123123Class boundary value: X2 = 12345Class boundary value: X3 = 1234567Class boundary value: X4 = 1Class boundary value: X5 = 0Class invalid value: X6 = -123123Class invalid value: X7 = asdasdOthers?BVA Example 2Test a function which limit user input to 6-digit positive integer Class
28、invalid value: X8 = 000123 X9 = asd123 X10 = EmptyBVA Example 3Test cases :Class arbitrary value: Random select some options Class boundary value: Select all options Class boundary value: Select none option Class boundary value: Select 1 option二进制二进制Term Range or Value BitNibbleByteWordKiloMegaGigaT
29、era0 or 10-15 0-2550-65535 or 0-42949672951024104857610737418241099511627776ASCII TableCharacterASCII ValueCharacter ASCII ValueNullSpace/0129;A0324748495057586465BYZabyz66899091969798121122123字符编辑域一些特殊的边界值一些特殊的边界值First-1/Last+1Min-1/max+1Start-1/Finish+1Less than empty/ more than fulljust Over/Just
30、 Under错误推测法测试用例设计n基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例。n发现程序经常出现的错误的方法:n单元测试中发现的模块错误;n产品的以前版本曾经发现的错误;n输入数据为0或字符为空;n当软件要求输入时(比如在文本框中),不是没有输入正确的信息,而是根本没有输入任何内容,单单按了Enter键;n这种情况在产品说明书中常常忽视,程序员也可能经常遗忘,但是在实际使用中却时有发生。程序员总会习惯性的认为用户要么输入信息,不管是看起来合法的或非法的信息,要不就会选择Cancel键放弃输入,测试场景法设计测试用例n现在的软件几乎都是用事件触发来控制流程的,事
31、件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。这种在软件设计方面的思想也可引入到软件测试中,可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,同时使测试用例更容易理解和执行。因果图法测试用例设计n多种输入条件的组合,产生多种结果设计测试用例。n设计方法:n分析软件规格说明文档描述的哪些是原因(输入条件),哪些是结果(输出条件),给每个原因和结果赋予一个标示符。n找出原因与结果,原因与原因之间的对应关系,划出因果图n在因果图上标上哪些不可能发生的因果关系,表明约束或限制条件n根据因果图,创建判定表,将复杂的逻辑关系和多种条件组合很具体明确的表示出来
32、n把判定表的每一行作为依据设计测试用例。因果图法Sample 1n Valid equivalence classes :conditionvalid eq. classes .abs(N) N 0, N 0maxint k maxint, k maxintn Test Cases :maxintNresult maxint Nresult55105510000 5410error100-11 56105510011 000Given inputs maxint and N compute result :K=0|N|kresult = if this 0,B0,C0,且A+BC,B+CA,A
33、+CB;如果是等腰的,还要判断A=B,或B=C,或A=C;如果是等边的,则需判断是否A=B,且B=C,且A=C。案例研究1:判断三角形的形状(续1)创建等价类表:创建等价类表:输入条件有效等价类无效等价类是否三角形的三条边(A0), (1)(B0), (2)(C0), (3)(A+BC), (4)(B+CA), (5)(A+CB), (6)(A0), (7)(B0), (8)(C0), (9)(A+BC), (10)(B+CA), (11)(A+CB), (12)是否等腰三角形(A=B), (13)(B=C), (14)(C=A), (15)(AB)and(BC)and(CA) (16)是否等
34、边三角形(A=B)and(B=C)and(C=A) (17)(AB), (18)(BC), (19)(CA), (20)案例研究1:判断三角形的形状(续2)确定等价类输入数据:确定等价类输入数据:序号序号【A A,B B,C C】覆盖等价类覆盖等价类输出输出1【3,4,5】(1),(2),(3),(4),(5),(6)一般三角形2【0,1,2】(7)不能构成三角形3【1,0,2】(8)4【1,2,0】(9)5【1,2,3】(10)6【1,3,2】(11)7【3,1,2】(12)8【3,3,4】(1),(2),(3),(4),(5),(6),(13)等腰三角形9【3,4,4】(1),(2),(3
35、),(4),(5),(6),(14)10【3,4,3】(1),(2),(3),(4),(5),(6),(15)11【3,4,5】(1),(2),(3),(4),(5),(6),(16)非等腰三角形12【3,3,3】(1),(2),(3),(4),(5),(6),(17)是等边三角形13【3,4,4】(1),(2),(3),(4),(5),(6),(14),(18)非等边三角形14【3,4,3】(1),(2),(3),(4),(5),(6),(15),(19)15【3,3,4】(1),(2),(3),(4),(5),(6),(13),(20)案例研究2:测试用户登录对话框的功能测试场景:测试场景
36、:在各种输入条件下,测试程序的登录对话框功能用户名和密码的规则如下:用户名和密码的规则如下: 用户名长度为6至10位(含6位和10位) 用户名由字符(a-z、A-Z)和数字(0-9)组成 不能为空、空格和特殊字符 密码规则同用户名规则案例研究2:登录对话框的功能(续1)确定输入数据的情形:确定输入数据的情形:操作步骤操作步骤预期结果预期结果输入正确的用户名和口令(均为6位),点击OK按钮进入系统输入正确的用户名和口令(均为10位) ,点击OK按钮进入系统输入正确的用户名和口令(均为6至8位之间),进入系统用户名为空,提示输入用户名不能进入系统用户名为空格,提示无效用户名不能进入系统用户名小于6
37、位,提示用户名太短不能进入系统案例研究2:登录对话框的功能(续2)确定具体的输入数据:确定具体的输入数据:“用户名用户名”“口令口令”“预期结果预期结果”说明说明“user10”“pass10”进入系统正确的用户名和口令(6位)“user789”“pass789”进入系统正确的用户名和口令(7-9位)“user000010”“pass000010”进入系统正确的用户名和口令(10位)“”“pass”提示输入用户名不能进入系统用户名为空“空格”“pass”提示无效用户名不能进入系统用户名为空格“user”“userpass”提示用户名太短不能进入系统用户名小于6位“user0000011”“us
38、erpass”提示用户名太长不能进入系统用户名大于10位案例研究3:压力/负载测试用例设计设计目的设计目的: 验证程序在承受某种负载或压力下是否能够正常运行 找出程序安全运行的临界值适用情形适用情形: 服务器/客户机局域网 服务器/浏览器互联网设计方法设计方法:设计出不同等级的压力条件压力压力/负载分类与代号负载分类与代号: CPU速度CSCPU使用量CU磁盘空间DS物理内存PM虚拟内存使用量VM登录用户的数量UN传输带宽BW传输数据的大小DN案例研究3:压力/负载测试用例设计(续1)编号编号CSCUDSPMVMUNBWDN应该产生的行为应该产生的行为结果结果说明说明01PIII 80010%
39、50MB64MB50%301M5M正常02PIV180080%100MB128MB30%1000.5M10M无法响应03PII 50025%600MB256MB15%102.5M20M正常04PIV280035%400MB512MB80%5000.5M50M无法响应05PIV320050%200MB1024MB65%20001.5M100M无法响应案例研究4:测试软件对话框的界面设计Deployment Testcase Test Case ID:62Title:UserExitFormPath:DeploymentGeneralAuthor: xxxxxPurpose : make sure
40、 the dialog to test is properly designed, look for truncations, wrong tab orders, duplicated hotkeys, overlappings and any other possible issues Steps: Pre-steps:1. Launch App.2. Go to “Tools” / “Import/Export Settings”3. Select “General development settings”4. Click Reset Settings5. If you are prom
41、pted to save your settings, click “Dont save”6. A dialog appears telling you that the operation had been successful 案例研究5:测试中断安装软件的功能Purpose:Verify the app can be canceled during installationTest Steps:1. Launch App Name2. From the drop down menu select File, New and Project3. The New project Dialog box should appear4. In “Project Types”, select “Other Project Types” and under this, “Setup and deployment”. From the “Templates” select a setup pr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《地铁空调水系统》课件
- 《珍爱生命禁毒防艾》课件
- 人教版小学英语毕业语法复习课件
- 《宏观经济学教学课件》cha
- 2021胃溃疡合并出血(药物治疗)临床路径
- 《拿来主义》学案(统编版必修上册 导学案)
- 超市安全出口
- 【辽海版】《综合实践活动》九年级上册8.1 信息生活初体验
- 湿地公园景观建设工程合同
- 金融服务招投标法律法规应用
- 2024《鱼塘承包流转合同》鱼塘承包流转合同
- 劳动关系协调员测试题及答案
- 交警高清监控系统施工方案
- 体彩三人合伙协议书模板
- 新公司法修订要点和解读
- 幼儿园课件天气的变化
- 丽水市初中学业水平考试理化生实验操作考试标准化考点建设方案
- 幼儿园中班我变成一只喷火龙了课件
- 2024三年级英语下册阅读理解课件人教精通版三起
- 2023九年级数学下册 第三章 圆7 切线长定理教案 (新版)北师大版
- 10kV架空线路专项施工方案
评论
0/150
提交评论