软件测试方法和技术幻灯片.ppt
软件测试方法和技术第1页,共97页,编辑于2022年,星期三第五章回顾单元测试的定义与进行单元测试的重要性单元测试的定义与进行单元测试的重要性单元测试的目标与任务单元测试的目标与任务静态测试技术的运用静态测试技术的运用动态测试技术的运用动态测试技术的运用调试与评估调试与评估单元测试的过程与文档管理单元测试的过程与文档管理单元测试的常用工具简介单元测试的常用工具简介第2页,共97页,编辑于2022年,星期三第六章 集成测试和系统测试6.1 系统集成的模式与方法6.2 功能测试6.3 系统测试6.4 压力测试、容量测试和性能测试6.5安全性、可靠性和容错性测试第3页,共97页,编辑于2022年,星期三6.16.1系统集成的模式与方法系统集成的模式与方法 软件集成测试前的准备软件集成测试前的准备 人员安排人员安排测试计划测试计划测试内容测试内容集成模式集成模式测试方法测试方法第4页,共97页,编辑于2022年,星期三为什么总是集成不起来?为什么总是集成不起来?第5页,共97页,编辑于2022年,星期三集成测试的模式集成测试的模式渐增式测试模式与非渐增式测试模式渐增式测试模式与非渐增式测试模式非渐增式测试模式非渐增式测试模式:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,如大棒模式。渐增式测试模式渐增式测试模式:把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。各自的优缺点各自的优缺点第6页,共97页,编辑于2022年,星期三自顶向下和自底向上集成方法自顶向下和自底向上集成方法驱动程序驱动程序/驱动模块驱动模块(driver),用以模拟被测模块的上级模块。驱动模块在集成测试中接受测试数据,把相关的数据传送给被测模块,启动被测模块,并打印出相应的结果。桩程序桩程序/桩模块桩模块(stub),),也有人称为存根程序,用以模拟被测模块工作过程中所调用的模块。桩模块由被测模块调用,它们一般只进行很少的数据处理,例如打印入口和返回,以便于检验被测模块与其下级模块的接口第7页,共97页,编辑于2022年,星期三自顶向下法自顶向下法(Top-down Integration)自顶向下法的主要优缺点自顶向下法的主要优缺点第8页,共97页,编辑于2022年,星期三自底向上法自底向上法(Bottom-up Integration)自底向上法的主要优缺点自底向上法的主要优缺点第9页,共97页,编辑于2022年,星期三混合策略混合策略(Modified Top-down Integration)混合法:对软件结构中较上层,使用的是混合法:对软件结构中较上层,使用的是“自顶向下自顶向下”法;对软件结构中较下层,使用的法;对软件结构中较下层,使用的是是“自底向上自底向上”法,两者相结合法,两者相结合第10页,共97页,编辑于2022年,星期三大棒集成方法大棒集成方法(Big-bang Integration)采用大棒集成方法采用大棒集成方法,先是对每一个子模块进行测试(单元测试阶段),然后将所有模先是对每一个子模块进行测试(单元测试阶段),然后将所有模块一次性的全部集成起来进行集成测试块一次性的全部集成起来进行集成测试。因为所有的模块一次集成的,所以很难确定出错的真正位置、所在的模块、错误的原因。这种方法并不推荐在任何系统中使用,适合在规模较小的应用系统中使用。第11页,共97页,编辑于2022年,星期三三明治集成方法三明治集成方法(Sandwich Integration)采用三明治方法的优点是:它将自顶向下和自底向上的集成方法有机地结合起来,不需要写桩程序因为在测试初自底向上集成已经验证了底层模块的正确性。采用这种方法的主要缺点是:在真正集成之前每一个独立的模块没有完全测试过。第12页,共97页,编辑于2022年,星期三改善的三明治集成方法改善的三明治集成方法改进的三明治集成方法,不仅自两头向中间集成,而且保证每个模块得到单独的改进的三明治集成方法,不仅自两头向中间集成,而且保证每个模块得到单独的测试,使测试进行得比较彻底测试,使测试进行得比较彻底。第13页,共97页,编辑于2022年,星期三几种集成方法性能的比较几种集成方法性能的比较自底向上自底向上自自顶顶向下向下混合策略混合策略大棒大棒三明治三明治改改进进三明治三明治集成集成早早早早早早晚晚早早早早基本程序能工作基本程序能工作时间时间晚晚早早早早晚晚早早早早需要需要驱动驱动程序程序是是否否是是是是是是是是需要需要桩桩程序程序否否是是是是是是是是是是工作并行性工作并行性中中低低中中高高中中高高特殊路径特殊路径测试测试容易容易难难容易容易容易容易中等中等容易容易计计划与控制划与控制容易容易难难难难容易容易难难难难第14页,共97页,编辑于2022年,星期三6.2功能测试功能测试功能测试的目的和内容功能测试的目的和内容n程序安装、启动正常,有相应的提示框、错误提示等n每项功能符合实际要求n系统的界面清晰、美观n菜单、按钮操作正常、灵活,能处理一些异常操作n能接受正确的数据输入,对异常数据的输入可以进行提示、容错处理等n数据的输出结果准确,格式清晰,可以保存和读取n功能逻辑清楚,符合使用者习惯n系统的各种状态按照业务流程而变化,并保持稳定n支持各种应用的环境n能配合多种硬件周边设备n软件升级后,能继续支持旧版本的数据n与外部应用系统的接口有效第15页,共97页,编辑于2022年,星期三功能测试的方法功能测试的方法n1.等价类划分法等价类划分法n2.边界值分析法边界值分析法n3.错误推测法错误推测法n4.因果图法因果图法n5.组合分析法组合分析法第16页,共97页,编辑于2022年,星期三等价类划分法等价类划分法n数学含义A=x=BC=y=1&=50”n两个无效等价类为“50”第18页,共97页,编辑于2022年,星期三确立等价类的原则确立等价类的原则n如果输入条件是一个布尔量,则可以确立一个有效等价类和一个无效等价类n如果规定了输入数据的一组值,而且程序要对每一个输入值分别进行处理,这时要对每一个规定的输入值确立一个有效等价类,而对于这组值之外的所有值确立一个无效等价类第19页,共97页,编辑于2022年,星期三确立等价类的原则确立等价类的原则n如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(即遵守规则的数据)和若干无效等价类(从不同角度违反规则的数据),例如:n测试密码域,要求密码必须是数字或字母n有效等价类为“密码是数字和字母的组合”n无效等价类为“密码包括中文”、“密码包括其它符号”等n如果确知已划分的等价类中的各元素在程序中的处理方式不同,则应进一步划分成更小的等价类第20页,共97页,编辑于2022年,星期三等价类测试用例设计等价类测试用例设计n分析输入输出n划分有效等价类、无效等价类n设计测试用例,使其尽可能多的覆盖有效等价类n设计测试用例,使其一次只覆盖一个无效等价类第21页,共97页,编辑于2022年,星期三使用等价类划分法测试的实例n保险公司计算保费费率的程序保险公司计算保费费率的程序 某保险公司的人寿保险的保费计算方式为:投保额保险费率其中,保险费率依点数不同而有别,10点及10点以上保险费率为0.6%,10点以下保险费率为0.1%;而点数又是由投保人的年龄、性别、婚姻状况和抚养人数来决定,具体规则如下:年龄年龄 性别性别婚姻婚姻抚养人数抚养人数 20392039 40594059 其它其它 MM FF 已婚已婚 未婚未婚 11人扣人扣0.50.5点点 最多扣最多扣3 3点点(四舍五入取整)(四舍五入取整)6 6点点 4 4点点 2 2点点 5 5点点 3 3点点 3 3点点5 5点点第22页,共97页,编辑于2022年,星期三计算保费费率的程序(1)分析程序规格说明中给出和隐含的对输入条件的要求,列出等价类表(包括有效等价类和无效等价类)。n年龄:一位或两位非零整数,值的有效范围为199n性别:一位英文字符,只能取值M或Fn婚姻:字符,只能取值已婚或未婚n抚养人数:空白或一位非零整数(19)n点数:一位或两位非零整数,值的范围为199(2)根据(1)中的等价类表,设计能覆盖所有等价类的测试用例。第23页,共97页,编辑于2022年,星期三输入条件输入条件有效等价类有效等价类编号编号无效等价类无效等价类编号编号年龄年龄2039岁岁14059岁岁2119岁岁6099岁岁3小于小于112大于大于9913性别性别单个英文字符单个英文字符4非英文字符非英文字符14非单个英文字符非单个英文字符15M5除除M和和F之外之外的的其它单个字符其它单个字符16F6婚姻婚姻已婚已婚7除除已婚已婚和和未婚未婚之外的其它字符之外的其它字符17未婚未婚8抚养人数抚养人数空白空白9除空白和数字之外除空白和数字之外的其它字符的其它字符1816人人10小于小于11969人人11大于大于920第24页,共97页,编辑于2022年,星期三测试用例测试用例编号编号输入数据输入数据预期输出预期输出年龄年龄性别性别婚姻婚姻抚养人数抚养人数保险费率保险费率127F未婚未婚空白空白0.6%250M已婚已婚20.6%370F已婚已婚70.1%40M未婚未婚空白空白无法推算无法推算5100F已婚已婚3无法推算无法推算699男男已婚已婚4无法推算无法推算71Child未婚未婚空白空白无法推算无法推算845N已婚已婚5无法推算无法推算938F离婚离婚1无法推算无法推算1062M已婚已婚没有没有无法推算无法推算1118F未婚未婚0无法推算无法推算1240M未婚未婚10无法推算无法推算第25页,共97页,编辑于2022年,星期三等价类划分法等价类划分法n某一PASCAL语言版本中规定:“标识符是由字母打头,后跟字母或数字的任意组合构成。有效字符数为8个,最大字符数为80个”,且规定n标识符必须先说明,再使用n在同一说明语句中,标识符至少出现一个第26页,共97页,编辑于2022年,星期三等价类划分法等价类划分法划分好等价类测试:防止遗漏测试案例。划分好等价类测试:防止遗漏测试案例。第27页,共97页,编辑于2022年,星期三例子:某城市电话号码由三部分组成,分别是:地区码空白或三位数字;前缀非0或1开头的三位数字;后缀4位数字。假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。要求:请选择适当的黑盒测试方法,写出选择该方法的原因,并使用该方法的步骤,给出测试用例表。第28页,共97页,编辑于2022年,星期三多于3位数字少于3位数字有非数字字符空白3位数字地区码编号无效等价类编号有效等价类输入条件前缀前缀200999有非数字字符有非数字字符起始位为起始位为0起始位为起始位为1少于少于3位数字位数字多于多于3位数字位数字后缀后缀4位数字位数字有非数字字符有非数字字符少于少于4位数字位数字多于多于4位数字位数字341256789101112131415使用等价类划分法第29页,共97页,编辑于2022年,星期三测试用例测试用例编号编号输入数据输入数据预期输出预期输出地区码地区码前缀前缀后缀后缀1空白空白1234567接受(有效)接受(有效)21238059876接受(有效)接受(有效)320A1234567拒绝(无效)拒绝(无效)4332345678拒绝(无效)拒绝(无效)512342344567拒绝(无效)拒绝(无效)61232B31234拒绝(无效)拒绝(无效)71230131234拒绝(无效)拒绝(无效)81231231234拒绝(无效)拒绝(无效)9123231234拒绝(无效)拒绝(无效)1012323451234拒绝(无效)拒绝(无效)111232341B34拒绝(无效)拒绝(无效)1212323434拒绝(无效)拒绝(无效)1312323423345拒绝(无效)拒绝(无效)覆盖等价类覆盖等价类1,3,42,3,456789101112131415第30页,共97页,编辑于2022年,星期三NextDate函数包含三个变量:month、day和year,函数的输出为输入日期后一天的日期。例如,输入为2006年3月7日,则函数的输出为2006年3月8日。要求输入变量month、day和year均为整数值,并且满足下列条件:1month121day311920year2050第31页,共97页,编辑于2022年,星期三边界值分析法边界值分析法n数学含义A=x=BC=y=D第32页,共97页,编辑于2022年,星期三n无数的测试实践表明,大量的故障往往发生在输入定义域或输出值域的边界上,而不是在其内部。n怎样用边界值分析法设计测试用例?(1)首先确定边界情况。通常输入或输出等价类的边界就是应该着重测试的边界情况。(2)选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值。第33页,共97页,编辑于2022年,星期三举例常见的边界值n对16-bit的整数而言32767和-32768是边界n屏幕上光标在最左上、最右下位置n报表的第一行和最后一行n数组元素的第一个和最后一个n循环的第0次、第1次和倒数第2次、最后一次第34页,共97页,编辑于2022年,星期三边界值分析n边界值分析使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。第35页,共97页,编辑于2022年,星期三边界值分析n通常情况下,软件测试所包含的边界检验有几种类型:数字、字符、位置、质量、大小、速度、方位、尺寸、空间等n相应地,以上类型的边界值应该在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最短/最长、空/满等情况下第36页,共97页,编辑于2022年,星期三举例利用边界值作为测试数据项边界值测试用例的设计思路字符起始-1个字符/结束+1个字符假设一个文本输入区域允许输入1个到255个字符,输入1个和255个字符作为有效等价类;输入0个和256个字符作为无效等价类,这几个数值都属于边界条件值。数值最小值-1/最大值+1假设某软件的数据输入域要求输入5位的数据值,可以使用10000作为最小值、99999作为最大值;然后使用刚好小于5位和大于5位的数值来作为边界条件。空间小于空余空间一点/大于满空间一点例如在用U盘存储数据时,使用比剩余磁盘空间大一点(几KB)的文件作为边界条件。第37页,共97页,编辑于2022年,星期三内部边界值分析n某些边界值条件是不需要呈现给用户的,或者说用户是很难注意到的,但同时确实属于检验范畴内的边界条件,称为内部边界值条件或子边界值条件。n内部边界值条件主要有下面几种:n数值的边界值检验n字符的边界值检验n其它边界值检验第38页,共97页,编辑于2022年,星期三边界值分析法测试用例n在边界值分析法中获取测试用例的方法是:(1)每次保留程序中一个变量,让其余的变量取正常值,被保留的变量依次取min、min+、nom、max-和max。(2)对程序中的每个变量重复(1)。第41页,共97页,编辑于2022年,星期三边界值分析法测试用例n例例1:有两个输入变量x1(ax1b)和x2(cx2d)的程序F的边界值分析测试用例如下:,x1x2abcd第42页,共97页,编辑于2022年,星期三边界值分析法测试用例(续)n例例2:有二元函数f(x,y),其中x1,12,y1,31。则采用边界值分析法设计的测试用例是:,n推论:对于一个含有推论:对于一个含有n个变量的程序,采用边界值个变量的程序,采用边界值分析法测试程序会产生分析法测试程序会产生4n+1个测试用例。个测试用例。第43页,共97页,编辑于2022年,星期三n练习:练习:有函数f(x,y,z),其中x1900,2100,y1,12,z1,31的。请写出该函数采用边界值分析法设计的测试用例。,第44页,共97页,编辑于2022年,星期三健壮性测试n健壮性测试是作为边界值分析的一个简单的扩充,它除了对变量的5个边界值分析取值外,还需要增加一个略大于最大值(max+)以及略小于最小值(min-)的取值,检查超过极限值时系统的情况。因此,对于有n个变量的函数采用健壮性测试需要6n+1个测试用例。n前面例1中的程序F的健壮性测试如下图所示:x1x2abcdn练习:请为例2中的函数f(x,y)写出相应的健壮性测试用例。第45页,共97页,编辑于2022年,星期三n实例1三角形问题的边界值分析测试用例在三角形问题描述中,除了要求边长是整数外,没有给出其它的限制条件。在此,我们将三角形每边边长的取范围值设值为1,100。说明:如果程序规格说明中没有显式地给出边界值,则可以在设计测试用例前先设定取值的下限值和上限值。n实例2NextDate函数的边界值分析测试用例在NextDate函数中,隐含规定了变量mouth和变量day的取值范围为1mouth12和1day31,并设定变量year的取值范围为1912year2050。边界值分析法测试举例第46页,共97页,编辑于2022年,星期三边界值分析法边界值分析法例如:测试一个排序程序的边界值分析法的例子,其边界条件有:n排序序列为空;n排序序列仅有一个数据;n排序序列为满,用猜错法补充一下测试用例;n排序序列已经按要求排好序;n排序序列的顺序与要求的顺序恰好相反;n排序序列中的所有数据全部相等。因为错误最容易发生在边界值附近,所以边界值分析法对于多变量函数的测试很有效,尤其是对于像C/C+数据类型要求不是很严格的语言有利。第49页,共97页,编辑于2022年,星期三错误推测法错误推测法这个错误到底在哪?这个错误到底在哪?第50页,共97页,编辑于2022年,星期三因果图n因果图法最终生成的是决策表。利用因果图生成测试用例的基本步骤如下:(1)分析软件规格说明中哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。(2)分析软件规格说明中的语义,找出原因与结果之间、原因与原因之间对应的关系,根据这些关系画出因果图。(3)由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。(4)把因果图转换为决策表。(5)根据决策表中的每一列设计测试用例。第51页,共97页,编辑于2022年,星期三因果图法测试举例n实例用因果图法测试以下程序。程序的规格说明要求:输入的第一个字符必须是#或*,第二个字符必须是一个数字,此情况下进行文件的修改;如果第一个字符不是#或*,则给出信息N,如果第二个字符不是数字,则给出信息M。n解题步骤:(1)分析程序的规格说明,列出原因和结果。(2)找出原因与结果之间的因果关系、原因与原因之间的约束关系,画出因果图。(3)将因果图转换成决策表。(4)根据(3)中的决策表,设计测试用例的输入数据和预期输出。第52页,共97页,编辑于2022年,星期三因果图法测试举例(续)(1)分析程序规格说明中的原因和结果:(2)画出因果图(编号为10的中间结点是导出结果的进一步原因):原因结果c1:第一个字符是#e1:给出信息Nc2:第一个字符是*e2:修改文件c3:第二个字符是一个数字e3:给出信息Mc1c2c3e110e2e3E第53页,共97页,编辑于2022年,星期三因果图法测试举例(续)(3)将因果图转换成如下所示的决策表:12345678条件:条件:C1C2C310111110101110010111010100100000动作:动作:e1e2e3不可能不可能测试用例测试用例#3#A*6*BA1GT规则选项第54页,共97页,编辑于2022年,星期三因果图法测试举例(续)(4 4)根据决策表中的每一列设计测试用例:)根据决策表中的每一列设计测试用例:测试用例编号测试用例编号输入数据输入数据预期输出预期输出1 1#3#3修改文件修改文件2 2#A#A给出信息给出信息MM3 3*6*6修改文件修改文件4 4*B*B给出信息给出信息MM5 5A1A1给出信息给出信息N N6 6GTGT给出信息给出信息N N和信息和信息MM第55页,共97页,编辑于2022年,星期三示例:为一个自动售货机(售出单价为5角钱的饮料)设计测试用例,其规格说明如下:若投入5角钱或1元钱的硬币,押下橙汁或啤酒的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示零钱找完的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示零钱找完的红灯灭,在送出饮料的同时退还5角硬币。第56页,共97页,编辑于2022年,星期三n分析这一段说明,列出原因和结果结果:21.售货机零钱找完灯亮22.退还1元硬币23.退还5角硬币24.送出橙汁饮料25.送出啤酒饮料原因:1.售货机有零钱找2.投入1元硬币3.投入5角硬币4.押下橙汁按钮5.押下啤酒按钮中间结点:11.投入1元硬币且押下饮料按钮12.押下橙汁或啤酒的按钮13.应当找5角零钱并且售货机有零钱找14.钱已付清第57页,共97页,编辑于2022年,星期三画出因果图:第58页,共97页,编辑于2022年,星期三转换成判定表:第59页,共97页,编辑于2022年,星期三决策表法n在所有的黑盒测试方法中,基于决策表(也称判定表)的测试是最为严格、最具有逻辑性的测试方法。n决策表的概念:决策表是分析和表达多逻辑条件下执行不同操作的情况的工具。第60页,共97页,编辑于2022年,星期三规则选项12345678问问题题觉得疲倦?觉得疲倦?YYYYNNNN感兴趣吗?感兴趣吗?YYNNYYNN糊涂吗?糊涂吗?YNYNYNYN建建议议重读重读继续继续跳下一章跳下一章休息休息“阅读指南”决策表第61页,共97页,编辑于2022年,星期三n决策表的优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用决策表能够设计出完整的测试用例集合。n在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。决策表很适合于处理这类问题。第62页,共97页,编辑于2022年,星期三决策表的组成n决策表通常由以下4部分组成:n条件桩列出问题的所有条件n条件项针对条件桩给出的条件列出所有可能的取值n动作桩列出问题规定的可能采取的操作n动作项指出在条件项的各组取值情况下应采取的动作 条件桩动作桩条件项动作项规则将任何一个条件组合的特定取值及相应要执行的动作称为一条规则。在决策表中贯穿条件项和动作项的一列就是一条规则。第63页,共97页,编辑于2022年,星期三决策表的生成n构造决策表的5个步骤:(1)确定规则的个数。n有n个条件的决策表有2n个规则(每个条件取真、假值)。(2)列出所有的条件桩和动作桩。(3)填入条件项。(4)填入动作项,得到初始决策表。(5)简化决策表,合并相似规则。n若表中有两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并。n合并后的条件项用符号“-”表示,说明执行的动作与该条件的取值无关,称为无关条件。第64页,共97页,编辑于2022年,星期三三角形问题的决策表规则选项规则规则1-8规则规则9规则规则10规则规则11规则规则12规则规则13规则规则14规则规则15规则规则16条件:条件:c1:a,b,c构成构成 三角形?三角形?c2:a=b?c3:a=c?c4:b=c?N-YYYY YYYN YYNY YYNN YNYY YNYN YNNY YNNN动动作:作:a1:非三角形非三角形a2:一般三角形一般三角形a3:等腰三角形等腰三角形a4:等等边边三角形三角形a5:不可能不可能 第65页,共97页,编辑于2022年,星期三决策表应用nNextDate函数的决策表测试用例设计n问题分析:NextDate函数的三个变量之间在输入定义域中存在一定的逻辑依赖关系,由于等价类划分和边界值分析测试都假设了变量是独立的,如果采用上述两种方法设计测试用例,那么这些依赖关系在机械的选取输入值时可能会丢失。而采用决策表法则可以通过使用“不可能动作”的概念表示条件的不可能组合,来强调这种依赖关系。n说明:当决策表规模(指规则的数目,n个条件的决策表有2n个规则)较大时,可以通过扩展条目决策表(条件使用等价类)、代数简化表、将大表“分解”为小表等方法。第66页,共97页,编辑于2022年,星期三NextDate函数n为了获得下一个日期,NextDate函数执行如下操作:n如果输入日期不是当月最后一天,则把day变量的值加1;n如果输入日期是111月份中某月的最后一天,则把day变量的值复位为1,month变量的值加1;n如果输入日期是12月的最后一天,则day变量和month变量的值都复位为1,year变量的值加1。n关于最后一天的判断:n如果是有31天的月份(1,3,5,7,8,10,12),day变量值为31;n如果是有30天的月份(4,6,9,11),day变量值为30;n如果是有29天的月份(闰年的2月),day变量值为29;n如果是有28天的月份(非闰年的2月),day变量值为28。第67页,共97页,编辑于2022年,星期三NextDate函数的动作桩和条件桩n根据所执行的操作,可列出NextDate函数的动作桩:a1:不可能;a2:day加1;a3:day复位;a4:month加1;a5:month复位;a6:year加1n考虑到决策表的规模,条件使用month、day、year变量的等价类,在以下等价类集合上建立决策表:n对于month变量的取值M1:month:month有30天;M2:month:month有31天,12月除外;M3:month:month是12月;M4:month:month是2月;n对于day变量的取值D1:day:1day27;D2:day:day=28;D3:day:day=29;D4:day:day=30;D5:day:day=31;n对于year变量的取值Y1:year:year是闰年;Y2:year:year不是闰年第68页,共97页,编辑于2022年,星期三第69页,共97页,编辑于2022年,星期三决策表应用(续)n决策表测试法适用于具有以下特征的应用程序:if-then-else逻辑突出;输入变量之间存在逻辑关系;涉及输入变量子集的计算;输入与输出之间存在因果关系。n适用于使用决策表设计测试用例的条件:n规格说明以决策表形式给出,或较容易转换为决策表。n条件的排列顺序不会也不应影响执行的操作。n规则的排列顺序不会也不应影响执行的操作。n当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。n如果某一规则的条件要执行多个操作,这些操作的执行顺序无关紧要。第70页,共97页,编辑于2022年,星期三场景法n现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。n这种在软件设计方面的思想也可以引入到软件测试中,可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,同时使测试用例更容易理解和执行。第71页,共97页,编辑于2022年,星期三图中经过用例的每条路径都用基本流和备选流来表示,直黑线表示基本流,是经过用例的最简单的路径。备选流用不同的色彩表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中(如备选流1和3);也可能起源于另一个备选流(如备选流2),或者终止用例而不再重新加入到某个流(如备选流2和4)。第72页,共97页,编辑于2022年,星期三例子描述:ATM的流程示意图。第73页,共97页,编辑于2022年,星期三场景设计:下表所示是生成的场景场景1成功提款基本流场景2ATM内没有现金基本流 备选流2场景3ATM内现金不足基本流 备选流3场景4PIN有误(还有输入机会)基本流 备选流4场景5PIN有误(不再有输入机会)基本流 备选流4场景6账户不存在/账户类型有误基本流 备选流5场景7账户余额不足基本流 备选流6注:为方便起见,备选流3和6(场景3和7)内的循环以及循环组合未纳入上表。第74页,共97页,编辑于2022年,星期三用例设计对于这7个场景中的每一个场景都需要确定测试用例。可以采用矩阵或决策表来确定和管理测试用例。下面显示了一种通用格式,其中各行代表各个测试用例,而各列则代表测试用例的信息。本示例中,对于每个测试用例,存在一个测试用例ID、条件(或说明)、测试用例中涉及的所有数据元素(作为输入或已经存在于数据库中)以及预期结果。第75页,共97页,编辑于2022年,星期三TC(测试用例)ID号场景/条件PIN账号输入(或选择)的金额账面金额ATM内的金额预期结果CW1场景1:成功提款VVVVV成功提款CW2场景2:ATM内没有现金VVVVI提款选项不可用,用例结束CW3场景3:ATM内现金不足VVVVI警告消息,返回基本流,输入金额CW4场景4:PIN有误(还有不止一次输入机会)IVn/aVV警告消息,返回基本流,输入PINCW5场景4:PIN有误(还有一次输入机会)IVn/aVV警告消息,返回基本流,输入PINCW6场景4:PIN有误(不再有输入机会)IVn/aVV警告消息,卡予保留,用例结束第76页,共97页,编辑于2022年,星期三数据设计一旦确定了所有的测试用例,则应对这些用例进行复审和验证以确保其准确且适度,并取消多余或等效的测试用例。测试用例一经认可,就可以确定实际数据值(在测试用例实施矩阵中)并且设定测试数据。第77页,共97页,编辑于2022年,星期三TC(测试用例)ID号场景/条件PIN账号输入(或选择)的金额(元)账面金额(元)ATM内的金额(元)预期结果CW1场景1:成功提款4987809-49850.00500.002000成功提款。账户余额被更新为450.00CW2场景2:ATM内没有现金4987809-498100.00500.000.00提款选项不可用,用例结束CW3场景3:ATM内现金不足4987809-498100.00500.0070.00警告消息,返回基本流,输入金额CW4场景4:PIN有误(还有不止一次输入机会)4978809-498n/a500.002000警告消息,返回基本流,输入PINCW5场景4:PIN有误(还有一次输入机会)4978809-498n/a500.002000警告消息,返回基本流,输入PINCW6场景4:PIN有误(不再有输入机会)4978809-498n/a500.002000警告消息,卡予保留,用例结束第78页,共97页,编辑于2022年,星期三6.3系统测试系统测试压力测试压力测试(Stress test)容量测试容量测试(Capacity test)性能测试性能测试(Performancetest)安全测试安全测试(Securitytest)容错测试容错测试(Recoverytest)第79页,共97页,编辑于2022年,星期三回归测试的目的回归测试的目的 n所做的修改达到了预定的目的,如错误得到了改正,新功能得到了实现,能够适应新的运行环境等;n不影响软件原有功能的正确性。回归测试的方法回归测试的方法n再测试全部用例n基于风险选择测试n基于操作剖面选择测试n再测试修改的部分回归测试回归测试2000回归测试的组织和实施回归测试的组织和实施第80页,共97页,编辑于2022年,星期三回归测试回归测试第81页,共97页,编辑于2022年,星期三6.4 压力测试、容量测试和性能测试压力测试、容量测试和性能测试压力测试、容量测试和性能测试的测试目的虽然有所不同,但其手段和方法在一定程度压力测试、容量测试和性能测试的测试目的虽然有所不同,但其手段和方法在一定程度上比较相似,通常会使用特定的测试工具,来模拟超常的数据量、负载等,监测系统的各上比较相似,通常会使用特定的测试工具,来模拟超常的数据量、负载等,监测系统的各项性能指标,如项性能指标,如CPU和内存的使用情况、响应时间、数据传输量等。和内存的使用情况、响应时间、数据传输量等。一定要设法一定要设法破坏它破坏它!第82页,共97页,编辑于2022年,星期三性能测试概念和目的性能测试概念和目的n性能测试的目的:性能测试的目的:为了验证系统是否达到用户提出的性能指标,同时发现系统中存在的性能瓶颈,起到优化系统的目的。n性能测试指标的来源:性能测试指标的来源:用户对各项指标提出的明确需求;如果用户没有提出性能指标则根据用户需求、测试设计人员的经验来设计各项测试指标。(需求+经验)n主要的性能指标:主要的性能指标:服务器的各项指标(CPU、内存占用率等)、后台数据库的各项指标、网络流量、响应时间第83页,共97页,编辑于2022年,星期三性能测试要点性能测试要点测试环境应尽量与用户环境保持一致与用户环境保持一致,应单独运行单独运行尽量避免与其他软件同时使用。性能测试一般使用测试工具测试工具和测试人员编制测试脚本来完成。性能测试的重点在于前期数据的设计前期数据的设计与后期数据的分析后期数据的分析。性能测试的用例主要涉及到整个系统架构的问题,所以测试用例一旦生成,改动一般不大,所以做性能测试的重复性能测试的重复使用率一般比较高使用率一般比较高。第84页,共97页,编辑于2022年,星期三性能测试的方法和技巧性能测试的方法和技巧两种负载类型两种负载类型n“flat”测试nramp-up测试第85页,共97页,编辑于2022年,星期三两种负载类型两种负载类型“FlatFlat”测试测试:对于一次给定的测试一次给定的测试,应该取响应时间和吞吐量的平均值平均值。精确地获得这些值的唯一方法是一次加载所有的用户,然后在预定的时间段内持续运行。这称为“flat”测试。Ramp-upRamp-up测试测试:用户是交错上升的(每几秒增加一些新用户)。ramp-up测试不能产生精确和可重现的平均值,这是因为由于用户的增加是每次一部分,系统的负载在不断地变化系统的负载在不断地变化。ramp-up测试的优点是,可以看出随着系统负载的改变,测量值是如何改变随着系统负载的改变,测量值是如何改变的的。然后可以据此选择以后要运行的flat测试的范围。第86页,共97页,编辑于2022年,星期三Examplen我们先以一套简单的服务器构造为例来说明服务器发生故障时的情况第87页,共97页,编辑于2022年,星期三Example在这个构造中,当其中一台应用服务器出现故障,连接此应用服务器的 两个web服务器将不再获得从负载平衡服务器上请求,这样,所有的负载都会传递到剩余的两台web服务器,见下图:第88页,共97页,编辑于2022年,星期三6.4压力测试压力测试压力测试是在一种需要反常数量、频率或资源的方式下,执行可重复的负载测试,以检查程序对异常情况的抵抗能力,找出性能瓶颈性能瓶颈。异常情况主要指的是峰值(瞬间使用高峰)、大量数据的处理能力、长时间运行等情况。压力测试总是迫使系统在异常的资源配置下运行。第89页,共97页,编辑于2022年,星期三容量测试容量测试容量测试目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下还能保持主要功能正常运行。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。第90页,共97页,编辑于2022年,星期三性能测试性能测试看看在各种情况下看看在各种情况下CPU使用的效率使用的效率第91页,共97页,编辑于2022年,星期三6.5安全性测试,可靠性和容错性测试安全性测试,可靠性和容错性测试安全性测试、可靠性测试和容错性测试的测试目的不同,其手段和方法也不同,但都属于系统测试的范畴,有一定的联系,如软件可靠性要求通常包括了安全性的要求。安全性测试、可靠性测试和容错性测试的技术比较深、实施比较难,但在计算机应用系统中其作用越来越大。第92页,共97页,编辑于2022年,星期三安全性测试安全性测试根据根据ISO