软件测试方法和技术-Ch.6集成测试和系统测试第五章回顾①单元测试的定义与进行单元测试的重要性②单元测试的目标与任务③静态测试技术的运用④动态测试技术的运用⑤调试与评估⑥单元测试的过程与文档管理⑦单元测试的常用工具简介第六章集成测试和系统测试6.1系统集成的模式与方法6.2功能测试6.3系统测试6.4压力测试、容量测试和性能测试6.5安全性、可靠性和容错性测试6.1系统集成的模式与方法软件集成测试前的准备◇人员安排◇测试计划◇测试内容◇集成模式◇测试方法为什么总是集成不起来?集成测试的模式渐增式测试模式与非渐增式测试模式非渐增式测试模式:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,如大棒模式。渐增式测试模式:把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。各自的优缺点自顶向下和自底向上集成方法驱动程序/驱动模块(driver),用以模拟被测模块的上级模块。驱动模块在集成测试中接受测试数据,把相关的数据传送给被测模块,启动被测模块,并打印出相应的结果。桩程序/桩模块(stub),也有人称为存根程序,用以模拟被测模块工作过程中所调用的模块。桩模块由被测模块调用,它们一般只进行很少的数据处理,例如打印入口和返回,以便于检验被测模块与其下级模块的接口自顶向下法(Top-downIntegration)自顶向下法的主要优缺点自底向上法(Bottom-upIntegration)自底向上法的主要优缺点混合策略(ModifiedTop-downIntegration)混合法:对软件结构中较上层,使用的是“自顶向下”法;对软件结构中较下层,使用的是“自底向上”法,两者相结合大棒集成方法(Big-bangIntegration)采用大棒集成方法,先是对每一个子模块进行测试(单元测试阶段),然后将所有模块一次性的全部集成起来进行集成测试。因为所有的模块一次集成的,所以很难确定出错的真正位置、所在的模块、错误的原因。这种方法并不推荐在任何系统中使用,适合在规模较小的应用系统中使用。三明治集成方法(SandwichIntegration)采用三明治方法的优点是:它将自顶向下和自底向上的集成方法有机地结合起来,不需要写桩程序因为在测试初自底向上集成已经验证了底层模块的正确性。采用这种方法的主要缺点是:在真正集成之前每一个独立的模块没有完全测试过。改善的三明治集成方法改进的三明治集成方法,不仅自两头向中间集成,而且保证每个模块得到单独的测试,使测试进行得比较彻底。几种集成方法性能的比较自底向上自顶向下混合策略大棒三明治改进三明治集成早早早晚早早基本程序能工作时间晚早早晚早早需要驱动程序是否是是是是需要桩程序否是是是是是工作并行性中低中高中高特殊路径测试容易难容易容易中等容易计划与控制容易难难容易难难6.2功能测试功能测试的目的和内容程序安装、启动正常,有相应的提示框、错误提示等每项功能符合实际要求系统的界面清晰、美观菜单、按钮操作正常、灵活,能处理一些异常操作能接受正确的数据输入,对异常数据的输入可以进行提示、容错处理等数据的输出结果准确,格式清晰,可以保存和读取功能逻辑清楚,符合使用者习惯系统的各种状态按照业务流程而变化,并保持稳定支持各种应用的环境能配合多种硬件周边设备软件升级后,能继续支持旧版本的数据与外部应用系统的接口有效功能测试的方法1.等价类划分法2.边界值分析法3.错误推测法4.因果图法5.组合分析法等价类划分法数学含义A=x=BC=y=D确立等价类的原则如果输入条件规定了取值范围,或者值的个数,则可以确立一个有效等价类和两个无效等价类,例如:数据范围是1~50有效等价类为“=1&&=50”两个无效等价类为“1”和“50”确立等价类的原则如果输入条件是一个布尔量,则可以确立一个有效等价类和一个无效等价类如果规定了输入数据的一组值,而且程序要对每一个输入值分别进行处理,这时要对每一个规定的输入值确立一个有效等价类,而对于这组值之外的所有值确立一个无效等价类确立等价类的原则如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(即遵守规则的数据)和若干无效等价类(从不同角度违反规则的数据),例如:测试密码域,要求密码必须是数字或字母有效等价类为“密码是数字和字母的组合”无效等价类为“密码包括中文”、“密码包括其它符号”等如果确知已划分的等价类中的各元素在程序中的处理方式不同,则应进一步划分成更小的等价类等价类测试用例设计分析输入输出划分有效等价类、无效等价类设计测试用例,使其尽可能多的覆盖有效等价类设计测试用例,使其一次只覆盖一个无效等价类使用等价类划分法测试的实例保险公司计算保费费率的程序某保险公司的人寿保险的保费计算方式为:投保额×保险费率其中,保险费率依点数不同而有别,10点及10点以上保险费率为0.6%,10点以下保险费率为0.1%;而点数又是由投保人的年龄、性别、婚姻状况和抚养人数来决定,具体规则如下:年龄性别婚姻抚养人数20~3940~59其它MF已婚未婚1人扣0.5点最多扣3点(四舍五入取整)6点4点2点5点3点3点5点计算保费费率的程序(1)分析程序规格说明中给出和隐含的对输入条件的要求,列出等价类表(包括有效等价类和无效等价类)。年龄:一位或两位非零整数,值的有效范围为1~99性别:一位英文字符,只能取值‘M’或’F’婚姻:字符,只能取值‘已婚’或‘未婚’抚养人数:空白或一位非零整数(1~9)点数:一位或两位非零整数,值的范围为1~99(2)根据(1)中的等价类表,设计能覆盖所有等价类的测试用例。输入条件有效等价类编号无效等价类编号年龄20~39岁140~59岁21~19岁60~99岁3小于112大于9913性别单个英文字符4非英文字符14非单个英文字符15‘M’5除‘M’和‘F’之外的其它单个字符16‘F’6婚姻已婚7除’已婚’和’未婚’之外的其它字符17未婚8抚养人数空白9除空白和数字之外的其它字符181~6人10小于1196~9人11大于920测试用例编号输入数据预期输出年龄性别婚姻抚养人数保险费率127F未婚空白0.6%250M已婚20.6%370F已婚70.1%40M未婚空白无法推算5100F已婚3无法推算699男已婚4无法推算71Child未婚空白无法推算845N已婚5无法推算938F离婚1无法推算1062M已婚没有无法推算1118F未婚0无法推算1240M未婚10无法推算等价类划分法某一PASCAL语言版本中规定:“标识符是由字母打头,后跟字母或数字的任意组合构成。有效字符数为8个,最大字符数为80个”,且规定标识符必须先说明,再使用在同一说明语句中,标识符至少出现一个等价类划分法划分好等价类测试:防止遗漏测试案例。例子:某城市电话号码由三部分组成,分别是:地区码——空白或三位数字;前缀——非‘0’或‘1’开头的三位数字;后缀——4位数字。假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。要求:请选择适当的黑盒测试方法,写出选择该方法的原因,并使用该方法的步骤,给出测试用例表。多于3位数字少于3位数字有非数字字符空白3位数字地区码编号无效等价类编号有效等价类输入条件前缀200~999有非数字字符起始位为’0’起始位为’1’少于3位数字多于3位数字后缀4位数字有非数字字符少于4位数字多于4位数字341256789101112131415使用等价类划分法测试用例编号输入数据预期输出地区码前缀后缀1空白1234567接受(有效)21238059876接受(有效)320A1234567拒绝(无效)4332345678拒绝(无效)512342344567拒绝(无效)61232B31234拒绝(无效)71230131234拒绝(无效)81231231234拒绝(无效)9123231234拒绝(无效)1012323451234拒绝(无效)111232341B34拒绝(无效)1212323434拒绝(无效)1312323423345拒绝(无效)覆盖等价类1,3,42,3,456789101112131415NextDate函数包含三个变量:month、day和year,函数的输出为输入日期后一天的日期。例如,输入为2006年3月7日,则函数的输出为2006年3月8日。要求输入变量month、day和year均为整数值,并且满足下列条件:①1≤month≤12②1≤day≤31③1920≤year≤2050边界值分析法数学含义A=x=BC=y=D无数的测试实践表明,大量的故障往往发生在输入定义域或输出值域的边界上,而不是在其内部。怎样用边界值分析法设计测试用例?(1)首先确定边界情况。通常输入或输出等价类的边界就是应该着重测试的边界情况。(2)选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值。举例——常见的边界值对16-bit的整数而言32767和-32768是边界屏幕上光标在最左上、最右下位置报表的第一行和最后一行数组元素的第一个和最后一个循环的第0次、第1次和倒数第2次、最后一次边界值分析边界值分析使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。边界值分析通常情况下,软件测试所包含的边界检验有几种类型:数字、字符、位置、质量、大小、速度、方位、尺寸、空间等相应地,以上类型的边界值应该在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最短/最长、空/满等情况下举例——利用边界值作为测试数据项边界值测试用例的设计思路字符起始-1个字符/结束+1个字符假设一个文本输入区域允许输入1个到255个字符,输入1个和255个字符作为有效等价类;输入0个和256个字符作为无效等价类,这几个数值都属于边界条件值。数值最小值-1/最大值+1假设某软件的数据输入域要求输入5位的数据值,可以使用10000作为最小值、99999作为最大值;然后使用刚好小于5位和大于5位的数值来作为边界条件。空间小于空余空间一点/大于满空间一点例如在用U盘存储数据时,使用比剩余磁盘空间大一点(几KB)的文件作为边界条件。内部边界值分析某些边界值条件是不需要呈现给用户的,或者说用户是很难注意到的,但同时确实属于检验范畴内的边界条件,称为内部边界值条件或子边界值条件。内部边界值条件主要有下面几种:数值的边界值检验字符的边界值检验其它边界值检验边界值分析法测试用例在边界值分析法中获取测试用例的方法是:(1)每次保留程序中一个变量,让其余的变量取正常值,被保留的变量依次取min、min+、nom、max-和max。(2)对程序中的每个变量重复(1)。边界值分析法测试用例例1:有两个输入变量x1(a≤x1≤b)和x2(c≤x2≤d)的程序F的边界值分析测试用例如下:{x1nom,x2min,x1nom,x2min+,x1nom,x2nom,x1nom,x2max,x1nom,x2max-,x1min,x2nom,x1min+,x2nom,x1max,x2nom,x1max-,x2nom}x1x2abcd边界值分析法测试用例(续)例2:有二元函数f(x,y),其中x∈[1,12],y∈[1,31]。则采用边界值分析法设计的测试用例是:{1,15,2,15,11,15,12,15,6,15,6,1,6,2,6,30,6,31}推论:对于一个含有n个变量的程序,采用边界值分析法测试程序会产生4n+1个测试用例。练习:有函数f(x,y,z),其中x∈[1900,2100],y∈[1,12],z∈[1,31]的。请写出该函数采用边界值分析法设计的测试用例。{2000,6,1,2000,6,2,2000,6,30