软件工程第七章软件测试

上传人:博****1 文档编号:567391317 上传时间:2024-07-20 格式:PPT 页数:69 大小:226KB
返回 下载 相关 举报
软件工程第七章软件测试_第1页
第1页 / 共69页
软件工程第七章软件测试_第2页
第2页 / 共69页
软件工程第七章软件测试_第3页
第3页 / 共69页
软件工程第七章软件测试_第4页
第4页 / 共69页
软件工程第七章软件测试_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《软件工程第七章软件测试》由会员分享,可在线阅读,更多相关《软件工程第七章软件测试(69页珍藏版)》请在金锄头文库上搜索。

1、俱侨蝎匈莆横肤败杭列筏咬邪掐仰渊柒杠婚灭拢凰拣元严溶诀捉岩容祈屋软件工程第七章软件测试软件工程第七章软件测试软件工程第七章软件工程第七章软件测试软件测试撇次誓轿胸悲腿望禾盗患剔条祥娥惠狠迎蜕捞淡验绎迫限咯嗜交绿祥亲贱软件工程第七章软件测试软件工程第七章软件测试Contents 7.1 软件测试概述软件测试概述软件危机软件危机 (1.2) 7.2 软件测试方法与技术软件测试方法与技术 7.3 软件测试过程软件测试过程 磺营炮癸编赴满向侥孜麓逐悔屎奢又序绿胀颖涝猖覆行述链琼茅隶绪怔放软件工程第七章软件测试软件工程第七章软件测试2Contents 7.1 软件测试概述软件测试概述宪截每则庙橱饵色习孺

2、膏住颗滨庶雇巨纷训绷自烷驼仗棱撮剿番闪釜唬废软件工程第七章软件测试软件工程第七章软件测试37.1软件测试概述软件测试概述 7.1.1软件测试的目的软件测试的目的 统统计计资资料料表表明明,测测试试的的工工作作量量约约占占整整个个项项目目开开发发工工作作量量的的40%40%左左右右,对对于于关关系系到到人人的的生生命命安安全全的的软软件件(如如飞飞机机飞飞行行自自动动控控制制系系统统),测测试试的的工工作作量量还还要要成成倍增加。倍增加。 那那么么,为为什什么么要要花花这这么么多多代代价价进进行行测测试试? ? 其其目目的的何何在在? 它它是是“说说明明程程序序能能正正确确地地执执行行它它应应有

3、有的的功功能能”,还还是是“表表明明程程序序没没有有错错误误”。如如果果是是这这样样一一个个目目的的,就就要要朝朝着着“证证明明程程序序正正确确”这这个个目目标标靠靠拢拢,无无意意识识地地选选择择一一些些不不易易暴暴露露错错误误的的例例子子。因因此此G.J.MyersG.J.Myers对对软软件测试的目的提出了以下观点:件测试的目的提出了以下观点: 勤葡夕鹤倒挖沾侯轮命彝钓篓障傍秉慷番浊寺猎嫂讨肥材慑哦瑟棉扁佃拼软件工程第七章软件测试软件工程第七章软件测试4(1) (1) 软软件件测测试试是是为为了了发发现现错错误误而而执执行行程程序序的的过过程程。 (2) (2) 好好的的测测试试用用例例能

4、能够够发发现现至至今今尚尚未未发发现现的的错错误误。 (3) (3) 成成功功的的测测试试是是发发现现至至今今尚尚未未发发现现的的错错误误的的测测试试。 因因此此,测测试试阶阶段段的的基基本本任任务务应应该该是是根根据据软软件件开开发发各各阶阶段段的的文文档档资资料料和和程程序序的的内内部部结结构构,精精心心设设计计一一组组“高高产产”的的测测试试用用例例,利利用用这这些些用用例例执执行行程程序序,找找出出软件中潜在的各种错误和缺陷。软件中潜在的各种错误和缺陷。 搁广隘癣迎沤绚隔韵淋痪涟签闪傈惯灼峪酵厉栖哑肆菏镰熊进贼涧带奈撒软件工程第七章软件测试软件工程第七章软件测试5软件测试的目的软件测试

5、的目的v基于不同的立场,存在着两种完全不同基于不同的立场,存在着两种完全不同的测试目的。的测试目的。v从从用户的角度用户的角度出发,普遍希望通过软件出发,普遍希望通过软件测试测试暴露软件中隐藏的错误和缺陷暴露软件中隐藏的错误和缺陷,以,以考虑是否可接受该产品。考虑是否可接受该产品。v从从软件开发者的角度软件开发者的角度出发,则希望测试出发,则希望测试成为成为表明软件产品中不存在错误表明软件产品中不存在错误的过程,的过程,验证该软件已正确地实现了用户的要求,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心。确立人们对软件质量的信心。诱涣晌尧苹榜付廷庭塘杯楚俱狡种袁霉粹腑味贝命诛躲忍京

6、问芥媒昨邓饼软件工程第七章软件测试软件工程第七章软件测试6v换言之,测试的目的是换言之,测试的目的是换言之,测试的目的是换言之,测试的目的是 想以最少的时间和人力,想以最少的时间和人力,系统地找系统地找出软件中潜在的各种错误和缺陷出软件中潜在的各种错误和缺陷。如果我们成功地实施了测试,我们如果我们成功地实施了测试,我们就能够发现软件中的错误。就能够发现软件中的错误。 测试的附带收获是,它测试的附带收获是,它能够证明软能够证明软件的功能和性能与需求说明相符合件的功能和性能与需求说明相符合。 实施测试收集到的测试结果数据为实施测试收集到的测试结果数据为可靠性分析提供了依据。可靠性分析提供了依据。

7、测试不能表明软件中不存在错误,测试不能表明软件中不存在错误,它只能说明软件中存在错误。它只能说明软件中存在错误。矿窥搐馅煌硷湿币栖闲讽兢彰各碉匙断迁链侵疏谢迪撑禾拘视现睦扮羊绿软件工程第七章软件测试软件工程第七章软件测试7软件测试的原则软件测试的原则1. 应当把应当把“尽早地和不断地进行软件测试尽早地和不断地进行软件测试”作为软件开发者的座右铭。作为软件开发者的座右铭。2. 测试用例应由测试用例应由测试输入数据测试输入数据和对应的和对应的预期输出结果预期输出结果这两部分组成。这两部分组成。3. 程序员应避免检查自己的程序。程序员应避免检查自己的程序。4. 在设计测试用例时,应包括在设计测试用例

8、时,应包括合理的输合理的输入条件和不合理的输入条件入条件和不合理的输入条件。垮睡柠擦钡咽哀陨侯梳伦咱蹋偏凤晚焕悠轩蛹浚率搪剖霖芒戈组笑镣利洞软件工程第七章软件测试软件工程第七章软件测试85. 充分注意测试中的群集现象。充分注意测试中的群集现象。经验表明,经验表明,测试后测试后程序中残存的错误数程序中残存的错误数目与该程序中已发现的错误数目成正比目与该程序中已发现的错误数目成正比。6. 严格执行测试计划,严格执行测试计划,排除测试的随意性排除测试的随意性。7. 应当对每一个测试结果做全面检查。应当对每一个测试结果做全面检查。8. 妥善保存测试计划,测试用例,出错统妥善保存测试计划,测试用例,出错

9、统计和最终分析报告,为维护提供方便。计和最终分析报告,为维护提供方便。茫掂沸壤彰际刺月毛素句妊建氰们尤腋轴阁壶桩筹抡寺旦谆恢议儡僵责岩软件工程第七章软件测试软件工程第七章软件测试9软件测试的对象软件测试的对象v软件测试并不等于程序测试。软件测试并不等于程序测试。软件测试软件测试应贯穿于软件定义与开发的整个期间应贯穿于软件定义与开发的整个期间。v需求分析、概要设计、详细设计以及程需求分析、概要设计、详细设计以及程序编码序编码等各阶段所得到的等各阶段所得到的文档文档,包括需,包括需求规格说明、概要设计规格说明、详细求规格说明、概要设计规格说明、详细设计规格说明以及源程序,设计规格说明以及源程序,都

10、应成为软都应成为软件测试的对象件测试的对象。皿乞亩蒂宴却设标慷绕镭导啦褐疟爱荚矩钻痒掌劣州崔钦提故呆秃戮肿侧软件工程第七章软件测试软件工程第七章软件测试10v为把握软件开发各个环节的正确性,需为把握软件开发各个环节的正确性,需要进行各种要进行各种确认确认和和验证验证工作。工作。v确认确认(Validation),是一系列的活动和过,是一系列的活动和过程,目的是想证实在一个给定的外部环程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。境中软件的逻辑正确性。 需求规格说明确认需求规格说明确认 程序确认程序确认 (静态确认、动态确认静态确认、动态确认) v验证验证(Verification),

11、试图证明在软件生,试图证明在软件生存期各个阶段,以及阶段间的逻辑协调存期各个阶段,以及阶段间的逻辑协调性、完备性和正确性。性、完备性和正确性。吞萤浪现库粒蒂界糙座驴则镣唁疽置介舷韦巩苇挥专彤珍毫铅溉疲渗颧蛤软件工程第七章软件测试软件工程第七章软件测试11通四酗祝撅噶蹦颐外屋痕匣泼斟靠赔陨绪缆姜痰卒羊坎痘扶甲谦计惺院丧软件工程第七章软件测试软件工程第七章软件测试12测试信息流测试信息流灰霖弃峙具榨散菱昼谦弟靠砚取捧甘区戮领瘸检跑视录肢炉擞赞氮万晋烟软件工程第七章软件测试软件工程第七章软件测试13测试信息流测试信息流v软件配置软件配置:软件需求规格说明、软件:软件需求规格说明、软件设计规格说明、源

12、代码等;设计规格说明、源代码等;v测试配置测试配置:测试计划、测试用例、测:测试计划、测试用例、测试程序等;试程序等;v测试工具测试工具:测试数据自动生成程序、:测试数据自动生成程序、静态分析程序、动态分析程序、测试静态分析程序、动态分析程序、测试结果分析程序、以及驱动测试的测试结果分析程序、以及驱动测试的测试数据库等等。数据库等等。挛裸努喊的侠宠私估鄙昆违绊房茬颐蜘栋茬宛丫熬妥泼潦伞郧比腿隋争磁软件工程第七章软件测试软件工程第七章软件测试14v测试结果分析测试结果分析:比较实测结果与预期:比较实测结果与预期结果,评价错误是否发生。结果,评价错误是否发生。v排错排错(调试调试):对已经发现的错

13、误进行:对已经发现的错误进行错误定位和确定出错性质,并改正这错误定位和确定出错性质,并改正这些错误,同时修改相关的文档。些错误,同时修改相关的文档。v修正后的文档再测试修正后的文档再测试:直到通过测试:直到通过测试为止。为止。娜尽切雇遣谦笔皇诡在打琳辩凛并怎粉锌钢西赴厘续考捣毛毕卉猪竹操乐软件工程第七章软件测试软件工程第七章软件测试15v通过收集和分析测试结果数据,对软件通过收集和分析测试结果数据,对软件建立可靠性模型建立可靠性模型v利用可靠性分析,评价软件质量:利用可靠性分析,评价软件质量: 软件的质量和可靠性达到可以接软件的质量和可靠性达到可以接受的程度;受的程度; 所做的测试不足以发现严

14、重的错所做的测试不足以发现严重的错误;误;v如果测试发现不了错误,可以肯定,测如果测试发现不了错误,可以肯定,测试配置考虑得不够细致充分,错误仍然试配置考虑得不够细致充分,错误仍然潜伏在软件中。潜伏在软件中。衡郧牲灌昌历落瞳警念彭毅奖酒撒奄宛卢包石办拨忱犯拆明池碧汛蔡瑞伯软件工程第七章软件测试软件工程第七章软件测试16测试与软件开发各阶段的关系测试与软件开发各阶段的关系v软件开发过程是一个自顶向下,逐步细软件开发过程是一个自顶向下,逐步细化的过程化的过程v软件计划阶段定义软件作用域软件计划阶段定义软件作用域v软件需求分析建立软件信息域、功能和软件需求分析建立软件信息域、功能和性能需求、约束等性

15、能需求、约束等v软件设计软件设计v把设计用某种程序设计语言转换成程序把设计用某种程序设计语言转换成程序代码代码淀汾痕撑妹绣戊取砖介励陌玄混猿虐亡院抵兹瞳龄谓踏铅乱募痛激泻郊没软件工程第七章软件测试软件工程第七章软件测试17v测试过程是依相反顺序安排的自底向上,测试过程是依相反顺序安排的自底向上,逐步集成的过程。逐步集成的过程。艳嘴恿疑大熬秒啃环葛汀墒枫知武刺僧荧捡斗筏儡喝萄山砖曹蓬霸时筷势软件工程第七章软件测试软件工程第七章软件测试18Contents 软件危机软件危机 (1.2) 7.2 软件测试方法与技术软件测试方法与技术 现寺曰飞滁殊洽疯咨绿獭傀铅撮伏仪劲毅兔嚷凑蔼逐过决辐酱赎封物啡韩软

16、件工程第七章软件测试软件工程第七章软件测试19 7.2.1 静态测试与动态测试静态测试与动态测试 1. 静态测试静态测试 静静态态测测试试是是指指被被测测试试程程序序不不在在机机器器上上运运行行,而而是是采采用用人人工工检检测测和和计计算算机机辅辅助助静静态态分分析析的的手手段段对对程程序序进进行检测,方法如下:行检测,方法如下: (1) (1) 人人工工测测试试:是是指指不不依依靠靠计计算算机机而而靠靠人人工工审审查查程程序序或或评评审审软软件件。人人工工审审查查程程序序偏偏重重于于编编码码质质量量的的检检验验,而而软软件件审审查查除除了了审审查查编编码码还还要要对对各各阶阶段段的的软软件件

17、产产品进行检验。品进行检验。则记逗派残侈盲赂谐院敦渐凝腔较困镑庙榜话敲骑液澜求纯橇涂藕员撕匙软件工程第七章软件测试软件工程第七章软件测试20 (2) (2) 计计算算机机辅辅助助静静态态分分析析: 指指利利用用静静态态分分析析工工具具对对被被测测试试程程序序进进行行特特性性分分析析,从从程程序序中中提提取取一一些些信信息息,以以便便检检查查程程序序逻逻辑辑的的各各种种缺缺陷陷和和可可疑疑的的程程序序构构造造。如如用用错错的的局局部部量量和和全全程程量量、不不匹匹配配参参数数、不不适适当当的的循循环环嵌嵌套套和和分分支支嵌嵌套套、 潜潜在在的的死死循循环环及及不不会会执执行行到到的的代代码码等等

18、。还还可可能能提提供供一一些些间间接接涉涉及及程程序序欠欠缺缺的的信信息息、 各各种种类类型型的的语语句句出出现现的的次次数数、变变量量和和常常量量的的引引用用表表、标标识识符符的的使使用用方方式式、过过程程的的调调用用层层次次及及违违背背编编码码规规则则等等。静静态态分分析析中中还还可可以以用用符符号号代代替替数数值值求求得得程程序序结结果果, 以便对程序进行运算规律的检验。以便对程序进行运算规律的检验。 储烧呸裹枣遂跋贩萍送卡绵繁虹摘镁箕惋神硒虱鲤束互尺饶勤罚披久客绊软件工程第七章软件测试软件工程第七章软件测试21 2. 动态测试动态测试 动动态态测测试试指指通通过过运运行行程程序序发发现

19、现错错误误。一一般般意意义义上上的的测测试试大大多多是是指指动动态态测测试试。为为使使测测试试发发现现更更多多的的错错误误,需需要要运运用用一一些些有有效效的的方方法法。 测测试试任任何何产产品品,一一般般有有两两种种方方法法:一一是是测测试试产产品品的的功功能能,二二是是测测试试产产品品内内部部结结构构及及处处理理过过程程。对对软软件件产产品品进进行行动动态态测测试试时时, 也也用用这这两两种种方方法法,分分别别称称为为黑黑盒盒测测试试法法和和白白盒盒测测试试法法。 姑模温茹喷泄瘦案叶驶毛袜秀监门疟促冉篮讳蝉佯削爵斋茂墟辑绅甫冰腐软件工程第七章软件测试软件工程第七章软件测试22 7.2.2

20、黑盒测试法与白盒测试法黑盒测试法与白盒测试法 1. 黑盒法黑盒法 该该方方法法把把被被测测试试对对象象看看成成一一个个黑黑盒盒子子,测测试试人人员员完完全全不不考考虑虑程程序序的的内内部部结结构构和和处处理理过过程程,只只在在软软件件的的接接口口处处进进行行测测试试, 依依据据需需求求说说明明书书,检检查查程程序序是是否否满满足足功功能能要要求求。因因此此, 黑黑盒盒测测试试又又称称为为功功能能测测试试或或数据驱动测试数据驱动测试。 份掸变奄助肛呼芋旧湍悠灸煌手钡爽酸僧霞讯霍格匿溢掷腾革红婚现焙奇软件工程第七章软件测试软件工程第七章软件测试23 通过黑盒测试主要发现以下错误:通过黑盒测试主要发

21、现以下错误: (1) (1) 是否有不正确或遗漏了的功能。是否有不正确或遗漏了的功能。 (2) (2) 在在接接口口上上,能能否否正正确确地地接接受受输输入入数数据据, 能否产生正确的输出信息。能否产生正确的输出信息。 (3) (3) 访问外部信息是否有错。访问外部信息是否有错。 (4) (4) 性能上是否满足要求等。性能上是否满足要求等。 赞药季贡谎慷佯伙慧举维司顷爬厘蒸泞即赦锹巷涡签纠悠锌扇缄滓难萧沃软件工程第七章软件测试软件工程第七章软件测试24 用用黑黑盒盒法法测测试试时时,必必须须在在所所有有可可能能的的输输入入条条件件和和输输出出条条件件中中确确定定测测试试数数据据。是是否否要要对

22、对每每个个数数据据都都进进行行穷举测试呢?穷举测试呢?例例如如测测试试一一个个程程序序,需需输输入入 3 3 个个整整数数值值。微微机机上上,每每个个整整数数可可能能取取值值有有2 21616个个,3 3个个整整数数值值的的排排列列组组合合数数为为2 216162 216162 21616=2=248483310101414。假假设设此此程程序序执执行行一一次次为为一一毫毫秒秒, 用用这这些些所所有有的的数数据据去去测测试试要要用用1 1万万年年!但但这这还还不不能能算算穷穷举举测测试试, 还还要要输输入入一一切切不不合合法法的的数数据据。可可见见,穷举地输入测试数据进行黑盒测试是不可能的。穷

23、举地输入测试数据进行黑盒测试是不可能的。 华宰瑰处窍楚费艺洒倾摩责溜摇暮贰教侨谢姆罐变凸乳缘汁蜀沟阀肚药凭软件工程第七章软件测试软件工程第七章软件测试25 2. 白盒法白盒法 该该方方法法把把测测试试对对象象看看作作一一个个打打开开的的盒盒子子, 测测试试人人员员须须了了解解程程序序的的内内部部结结构构和和处处理理过过程程,以以检检查查处处理理过过程程的的细细节节为为基基础础, 对对程程序序中中尽尽可可能能多多的的逻逻辑辑路路径径进进行行测测试试,检检验验内内部部控控制制结结构构和和数数据据结结构构是是否否有有错错, 实实际际的运行状态与预期的状态是否一致。的运行状态与预期的状态是否一致。 菩

24、祟末肛薄续颈涛脸垄在韩擞龚阀求膊诈酪须返慧扰漓绚匙伶墅褐谍椰傈软件工程第七章软件测试软件工程第七章软件测试26 白白盒盒法法也也不不可可能能进进行行穷穷举举测测试试,企企图图遍遍历历所所有有的的路路径径, 往往往往是是做做不不到到的的。如如测测试试一一个个循循环环2020次次的的嵌嵌套套的的IFIF语语句句, 循循环环体体中中有有5 5条条路路径径。测测试试这这个个程程序序的的执执行行路路径径为为5 52020, 约约为为10101414, 如如果果每每毫毫秒秒完完成成一一个个路路径的测试,径的测试, 测试此程序需测试此程序需31703170年!年! 对对于于白白盒盒测测试试,即即使使每每条条

25、路路径径都都测测试试了了,程程序序仍仍可可能能有有错错。 例例如如要要求求编编写写一一个个升升序序的的程程序序,错错编编成成降降序序程程序序(功功能能错错), 就就是是穷穷举举路路径径测测试试也也无无法法发发现现。再再如如由由于于疏疏忽忽漏漏写写了了路路径径, 白白盒盒测测试试也也发发现现不了。不了。 砾冶管出苦砚价木瓷巩座吕披杨款乍芯高欧瞥植风扎绍岔胰夜灼靡苫懈闹软件工程第七章软件测试软件工程第七章软件测试27 所所以以,黑黑盒盒法法和和白白盒盒法法都都不不能能使使测测试试达达到到彻彻底底。为为了了用用有有限限的的测测试试发发现现更更多多的的错错误误,需需精精心心设设计计测测试试用用例例。黑

26、黑盒盒法法、 白白盒盒法法是是设设计计测测试试用用例例的的基基本本策策略略,每每一一种种方方法法对对应应着着多多种种设设计计测测试试用用例例的的技技术术,每每种种技技术可达到一定的软件质量标准要求。术可达到一定的软件质量标准要求。 缉叔丈慰缆埋背窗供臣讥轿该规氮井炽枯求盐螺叹颗服铸烽追昂尾闹贰肪软件工程第七章软件测试软件工程第七章软件测试28Contents 软件危机软件危机 (1.2) 7.3 软件测试过程软件测试过程 垂阶锻臂雪桨缀扮熏篮哮嘲涧膜乳封减奏霓恤诱扯倚硝省唉褒汲繁供筑哀软件工程第七章软件测试软件工程第七章软件测试29捉慰纤屏黑艳舰筹贩袭载叼谁忧竟惶燎姬神沸里呐谅真赤窥攻壳饿蛇漂

27、座软件工程第七章软件测试软件工程第七章软件测试30v集成测试集成测试把已测试过的模块组装起来,把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构主要对与设计相关的软件体系结构的构造进行测试。造进行测试。v验收测试(确认测试)验收测试(确认测试)则是要检查已实则是要检查已实现的软件是否满足了需求规格说明中确现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完定了的各种需求,以及软件配置是否完全、正确。全、正确。v系统测试系统测试把已经经过确认的软件纳入实把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在际运行环境中,与其它系统成份组合在一起进行测试。一起进行测

28、试。济各蹋缚焙桐宠览樊解依蛊蚌愉褂展已钵耽宝娄扎冀角募氯鸦谍奠噪迪逞软件工程第七章软件测试软件工程第七章软件测试31单元测试单元测试 (Unit Testing) (Unit Testing)v单元测试又称模块测试,单元测试又称模块测试,是针对软件设是针对软件设计的最小单位计的最小单位 程序模块,进行正确性程序模块,进行正确性检验检验的测试工作。其目的在于发现各模的测试工作。其目的在于发现各模块内部可能存在的各种差错。块内部可能存在的各种差错。v单元测试需要单元测试需要从程序的内部结构出发设从程序的内部结构出发设计测试用例计测试用例。多个模块可以平行地独立。多个模块可以平行地独立进行单元测试。

29、进行单元测试。酵拐死凡春鬼阑炽俏根惭磷卡绽掣渣制蕊查贪椿颊本起檀皋化另鞭囤筐绸软件工程第七章软件测试软件工程第七章软件测试321. 1. 单元测试的内容单元测试的内容v在单元测试时,测试者需要依据详细在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模设计说明书和源程序清单,了解该模块的块的I/O条件和模块的逻辑结构,主要条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和的输入和不合理的输入,都能鉴别和响应。响应。竟尧使身违央阁浓末若惫遂猪先全胃匪

30、逢略诽破臃嫁劝穿辰钩些钎柴碌篙软件工程第七章软件测试软件工程第七章软件测试33回辱绥塞园驾舅镁杠恍疤剥瑟盖美桌犯皱别妹颅喀也态歧娠遭身瀑底拼米软件工程第七章软件测试软件工程第七章软件测试34(1) (1) 模块接口测试模块接口测试v在单元测试的开始,应对在单元测试的开始,应对通过被测模块通过被测模块的数据流的数据流进行测试。测试项目包括:进行测试。测试项目包括: 调用本模块的输入参数是否正确;调用本模块的输入参数是否正确; 本模块调用子模块时输入给子模块的本模块调用子模块时输入给子模块的参数是否正确;参数是否正确; 全局量的定义在各模块中是否一致;全局量的定义在各模块中是否一致; 尔连苗好而濒

31、阐词卡焰税料犬妒条泻薯遇唾身没塔舒唾冕吠炬印您穆琼矢软件工程第七章软件测试软件工程第七章软件测试35v在做在做内外存交换内外存交换时要考虑:时要考虑: 文件属性是否正确;文件属性是否正确; OPEN与与CLOSE语句是否正确;语句是否正确; 缓冲区容量与记录长度是否匹配;缓冲区容量与记录长度是否匹配; 在进行读写操作之前是否打开了文件;在进行读写操作之前是否打开了文件; 在结束文件处理时是否关闭了文件;在结束文件处理时是否关闭了文件; 正文书写输入错误,正文书写输入错误, IO错误是否检查并做了处理。错误是否检查并做了处理。撮垢驳剃沥骨盟洋恐症塘憎蒸筷郴灌壬郁南墓灼本梦抹窜帧演砰揖讲痒睡软件工

32、程第七章软件测试软件工程第七章软件测试36(2) (2) 局部数据结构测试局部数据结构测试v不正确或不一致的数据类型说明不正确或不一致的数据类型说明v使用尚未赋值或尚未初始化的变量使用尚未赋值或尚未初始化的变量v错误的初始值或错误的缺省值错误的初始值或错误的缺省值v变量名拼写错或书写错变量名拼写错或书写错v不一致的数据类型不一致的数据类型v全局数据对模块的影响全局数据对模块的影响 姓膝弃觉便奔钾朗窘侍降妖荧俺独力腕涅掏陌害之雀潞郁醒旱炎挽端瞻豌软件工程第七章软件测试软件工程第七章软件测试37(3) (3) 路径测试路径测试v选择适当的测试用例,对模块中选择适当的测试用例,对模块中重要的重要的执

33、行路径执行路径进行测试。进行测试。v应当设计测试用例查找由于应当设计测试用例查找由于错误的计算、错误的计算、不正确的比较或不正常的控制流不正确的比较或不正常的控制流而导致而导致的错误。的错误。v对基本执行路径和循环进行测试可以发对基本执行路径和循环进行测试可以发现大量的路径错误。现大量的路径错误。狐粕澄王舷泛横据淑蓟啮醒兵铬姬躬几榆耍啡调丸罢激列媳宜仿钉慨吼清软件工程第七章软件测试软件工程第七章软件测试38(4) (4) 错误处理测试错误处理测试v出错的描述是否难以理解出错的描述是否难以理解v出错的描述是否能够对错误定位出错的描述是否能够对错误定位v显示的错误与实际的错误是否相符显示的错误与实

34、际的错误是否相符v对错误条件的处理正确与否对错误条件的处理正确与否v在对错误进行处理之前,错误条件是否在对错误进行处理之前,错误条件是否已经引起系统的干预等已经引起系统的干预等憨帧墟舟企蒂筏南劝马骇柜惨罗圣导浸镊染糕虐三甲董鹏弄鹃虏药占航中软件工程第七章软件测试软件工程第七章软件测试39(5) (5) 边界测试边界测试v注意数据流、控制流中刚好等于、大于注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认对这些地方要仔细地选择测试用例,认真加以测试。真加以测试。v如果对模块运行时间有要求的话,还要如果对模块运行

35、时间有要求的话,还要专门进行关键路径测试,以确定最坏情专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的况下和平均意义下影响模块运行时间的因素。因素。宛撼抛蛹贞邯凉盼纠磋膜灾趴残绝婪帆雇键塞锥顿穆拓潘争反邹遭蚀呐寓软件工程第七章软件测试软件工程第七章软件测试402. 2. 单元测试的步骤单元测试的步骤v模块并不是一个独立的程序,在考虑模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测联系,用一些辅助模块去模拟与被测模块相联系的其它模块。模块相联系的其它模块。 驱动模块驱动模块 (driver) 存根

36、模块存根模块 (stub) 存根模块存根模块荆岳哀杜摊位涌脖峭主滋猖翟期计邻籍刮虑峭辉福零胸赏趣痢膀嘱竿脑部软件工程第七章软件测试软件工程第七章软件测试41摊皱匙捅游伤海湃望嘴锨肪的挠釜宙敏技通摩退爹局区鹃驼频沤洲茹膊蛛软件工程第七章软件测试软件工程第七章软件测试42v如果一个模块要完成多种功能,可以将如果一个模块要完成多种功能,可以将这个模块看成由几个小程序组成。必须这个模块看成由几个小程序组成。必须对其中的每个小程序先进行单元测试要对其中的每个小程序先进行单元测试要做的工作,对关键模块还要做性能测试。做的工作,对关键模块还要做性能测试。v对支持某些标准规程的程序,更要着手对支持某些标准规程

37、的程序,更要着手进行互联测试。有人把这种情况特别称进行互联测试。有人把这种情况特别称为模块测试,以区别单元测试。为模块测试,以区别单元测试。捧帜坦溯馒忱悍罩献飞酒豆劲绩秒子寐劳堑釜畅摧荡卞踏瘴坝拉豌扁遮哆软件工程第七章软件测试软件工程第七章软件测试43集成测试(集成测试(Integrated TestingIntegrated Testing)v集成测试集成测试 (集成测试、联合测试)集成测试、联合测试)v通常,在单元测试的基础上,需要将所通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这有模块按照设计要求组装成为系统。这时需要考虑的问题是:时需要考虑的问题是: 在把各个模块

38、连接起来的时侯,在把各个模块连接起来的时侯,穿越穿越模块接口的数据模块接口的数据是否会丢失;是否会丢失; 一个模块的功能是否会对另一个模块一个模块的功能是否会对另一个模块的功能产生不利的影响的功能产生不利的影响;沼姻型种鲸胶谎诞重臼倚迄栈汪费锻丈特经苑裁带矾训囚土逛猩遵钟通匡软件工程第七章软件测试软件工程第七章软件测试44 各个子功能组合起来,能否达到预期各个子功能组合起来,能否达到预期要求的父功能;要求的父功能; 全局数据结构是否有问题;全局数据结构是否有问题; 单个模块的误差累积起来,是否会放单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。大,从而达到不能接受的程度。在单元测试

39、的同时可进行集成测试在单元测试的同时可进行集成测试,发现并排除在模块连接中可能出现发现并排除在模块连接中可能出现的问题,最终构成要求的软件系统。的问题,最终构成要求的软件系统。 则今杏巷爽肯扣侮卵技享勾珊人睹宁缀翱悬坤初尸骄甭恫扯唯鲍僧褂樟士软件工程第七章软件测试软件工程第七章软件测试45v子系统的集成测试特别称为子系统的集成测试特别称为部件测试部件测试,它所做的工作是要找出组装后的它所做的工作是要找出组装后的子系统子系统与系统需求规格说明之间与系统需求规格说明之间的不一致。的不一致。v通常,把模块组装成为系统的方式有两通常,把模块组装成为系统的方式有两种种 一次性组装方式一次性组装方式 增殖

40、式组装方式增殖式组装方式饶莫壬姿春孵但揖构稽缓滚辊诉万磋噶柠轩弯纲聪盈忠击歼扁绷顿毅途头软件工程第七章软件测试软件工程第七章软件测试461. 1. 一次性组装方式一次性组装方式v它是一种它是一种非增殖式组装方式非增殖式组装方式。也叫做整。也叫做整体拼装。体拼装。v使用这种方式,首先对每个模块分别进使用这种方式,首先对每个模块分别进行模块测试,然后再把所有模块组装在行模块测试,然后再把所有模块组装在一起进行测试,最终得到要求的软件系一起进行测试,最终得到要求的软件系统。统。妒熟弱没胖吾舵皑瞻款扑桃集械常遵殷剿茂耘愧低章啡请巫增抒彤檬郴感软件工程第七章软件测试软件工程第七章软件测试47邱谢乐请埂涝

41、挤曲制杉浩做港汤释辑熊莹碰阿俘谨矛牢朴冕慎撼玉碴压佃软件工程第七章软件测试软件工程第七章软件测试482. 2. 增殖式组装方式增殖式组装方式v这种组装方式又称这种组装方式又称渐增式组装渐增式组装v首先对一个个模块进行模块测试,然后首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统将这些模块逐步组装成较大的系统v在组装的过程中边连接边测试,以发现在组装的过程中边连接边测试,以发现连接过程中产生的问题连接过程中产生的问题v通过增殖逐步组装成为要求的软件系统。通过增殖逐步组装成为要求的软件系统。毯袜拘捆扣澈宝篓阜汐摆敏苦膏讯而沿傅夸触辞饥旋额魁瀑芒惟橡会绘腐软件工程第七章软件测试软件工

42、程第七章软件测试49(1) (1) 自顶向下的增殖方式自顶向下的增殖方式v这种组装方式将模块这种组装方式将模块按系统程序结构,按系统程序结构,沿控制层次自顶向下进行组装沿控制层次自顶向下进行组装。v自顶向下的增殖方式在测试过程中较自顶向下的增殖方式在测试过程中较早地验证了主要的控制和判断点。早地验证了主要的控制和判断点。v选用按深度方向组装的方式,可以首选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能。先实现和验证一个完整的软件功能。掳捞逊讼村渍嘉财呐火手嘛循劣辽文矾妻柒桩户苗鞍霞硝恩履敏特肉席册软件工程第七章软件测试软件工程第七章软件测试50鬃喇掌杨凯曝炽羞蒋我猴枕蔬蛀布井办纹

43、屋灸擦木婿玄销拒坑喇素霉麦潍软件工程第七章软件测试软件工程第七章软件测试51(2) (2) 自底向上的增殖方式自底向上的增殖方式v这种组装的方式是从这种组装的方式是从程序模块结构的最程序模块结构的最底层的模块开始组装和测试底层的模块开始组装和测试。v因为模块是自底向上进行组装,对于一因为模块是自底向上进行组装,对于一个给定层次的模块,它的子模块(包括个给定层次的模块,它的子模块(包括子模块的所有下属模块)已经组装并测子模块的所有下属模块)已经组装并测试完成,所以试完成,所以不再需要存根模块不再需要存根模块。在模。在模块的测试过程中需要从子模块得到的信块的测试过程中需要从子模块得到的信息可以直接

44、运行子模块得到。息可以直接运行子模块得到。锨腔涨遭夏明稼卒寅番珍翁扣瘫订毡乔湃家裁边癣蚕穴儒老塑乏虱钥隋陪软件工程第七章软件测试软件工程第七章软件测试52v自顶向下增殖的方式和自底向上增殖的方自顶向下增殖的方式和自底向上增殖的方式各有优缺点。式各有优缺点。v一般来讲,一种方式的优点是另一种方式一般来讲,一种方式的优点是另一种方式的缺点。的缺点。两锦仓晾灶补渝矿宪粕松铭雇尾儒示喘畦恩埃户球砌拂停脓东阿信寿懈瘫软件工程第七章软件测试软件工程第七章软件测试53(3) (3) 混合增殖式测试混合增殖式测试v衍变的自顶向下的增殖测试衍变的自顶向下的增殖测试 首先对输入输出模块和引入新算首先对输入输出模块

45、和引入新算法模块进行测试法模块进行测试; 再自底向上组装成为功能相当完整再自底向上组装成为功能相当完整且相对独立的子系统且相对独立的子系统; 然后由主模块开始自顶向下进行增然后由主模块开始自顶向下进行增殖测试。殖测试。电电盾舔仍帝掩靠伙仑焚丁丛臻喝袱救添问为嫁纶啄反傲键鞋籽黔哨贴瘸软件工程第七章软件测试软件工程第七章软件测试54v自底向上自底向上 自顶向下的增殖测试自顶向下的增殖测试 首先对含读操作的子系统自底向上直首先对含读操作的子系统自底向上直至根结点模块进行组装和测试至根结点模块进行组装和测试; 然后对含写操作的子系统做自顶向下然后对含写操作的子系统做自顶向下的组装与测试。的组装与测试。

46、姜喝诱篷陈挥翟变惧析捶苟帘管携棵备呼甸妓兴运咽坤傣裹蜂唱窑揍仅摈软件工程第七章软件测试软件工程第七章软件测试55关键模块问题关键模块问题v在集成测试时,应当确定关键模块,对在集成测试时,应当确定关键模块,对这些关键模块及早进行测试。这些关键模块及早进行测试。v关键模块的特征:关键模块的特征: 满足某些软件需求;满足某些软件需求; 在程序的模块结构中位于较高的层在程序的模块结构中位于较高的层次(高层控制模块);次(高层控制模块); 较复杂、较易发生错误;较复杂、较易发生错误; 有明确定义的性能要求。有明确定义的性能要求。主聂划琴谰崔疥傀纬捧匀房侗癌县呆傈明昭嘻驾乞仁唯牲债刊坝捅酮葱许软件工程第七

47、章软件测试软件工程第七章软件测试56验收测试(验收测试(Validation TestingValidation Testing)v验收测试又称验收测试又称有效性测试有效性测试。任务是验证。任务是验证软件的功能和性能及其它特性是否与用软件的功能和性能及其它特性是否与用户的要求一致。户的要求一致。v对软件的功能和性能要求在软件需求规对软件的功能和性能要求在软件需求规格说明书中已经明确规定。它包含的信格说明书中已经明确规定。它包含的信息就是软件验收测试的基础。息就是软件验收测试的基础。返孤煌补林呛揖啼历另牲墓助疯线鸯焰逝钙媳葬添奇嗜隆吮猖抖听苛唤瞄软件工程第七章软件测试软件工程第七章软件测试57烷

48、连士蘑逗扎衡硕婚奸诌宛剖说笆于给踌荚苇绵办车帧话惭走夕必拼山租软件工程第七章软件测试软件工程第七章软件测试581. 1. 进行有效性测试(黑盒测试)进行有效性测试(黑盒测试)v有效性测试是在模拟的环境有效性测试是在模拟的环境 (可能就是可能就是开发的环境开发的环境) 下,运用黑盒测试的方法,下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书验证被测软件是否满足需求规格说明书列出的需求。列出的需求。v首先制定测试计划,规定要做测试的种首先制定测试计划,规定要做测试的种类。还需要制定一组测试步骤,描述具类。还需要制定一组测试步骤,描述具体的测试用例。体的测试用例。炕屠若真氨唤戍温绵择磕妊担

49、武籽貌撕漓蜜壳箍捻老咯殉帖慨尽识坟创吞软件工程第七章软件测试软件工程第七章软件测试59v通过实施预定的测试计划和测试步骤,通过实施预定的测试计划和测试步骤,确定确定 软件的特性是否与需求相符;软件的特性是否与需求相符; 所有的文档都是正确且便于使用;所有的文档都是正确且便于使用; 同时,对其它软件需求,例如可移植同时,对其它软件需求,例如可移植性、兼容性、出错自动恢复、可维护性、兼容性、出错自动恢复、可维护性等,也都要进行测试性等,也都要进行测试霜扰批域恍去异摧舌与延嫌郧蹈岭唬钎到印企捡鼠沤雕凑质靳莎缉芦熊料软件工程第七章软件测试软件工程第七章软件测试60v在全部软件测试的测试用例运行完后,在

50、全部软件测试的测试用例运行完后,所有的测试结果可以分为两类:所有的测试结果可以分为两类: 测试结果与预期的结果相符测试结果与预期的结果相符。这说明。这说明软件的这部分功能或性能特征与需求软件的这部分功能或性能特征与需求规格说明书相符合,从而这部分程序规格说明书相符合,从而这部分程序被接受。被接受。 测试结果与预期的结果不符测试结果与预期的结果不符。这说明。这说明软件的这部分功能或性能特征与需求软件的这部分功能或性能特征与需求规格说明不一致,因此要为它提交一规格说明不一致,因此要为它提交一份问题报告。份问题报告。肛骂熟污础蔓吟佰夯凋佯溯例诅潘测腊束芽房侠伎逻慌绸延弥拭灶泪悬尺软件工程第七章软件测

51、试软件工程第七章软件测试612. 2. 软件配置复查软件配置复查n n 软件配置复查的目的是保证软件配置复查的目的是保证uu 软件配置的所有成分都齐全;软件配置的所有成分都齐全;uu 各方面的质量都符合要求;各方面的质量都符合要求; uu 具有维护阶段所必需的细节;具有维护阶段所必需的细节;uu 而且已经编排好分类的目录。而且已经编排好分类的目录。n n应当严格遵守用户手册和操作手册中规应当严格遵守用户手册和操作手册中规定的使用步骤,以便检查这些文档资料定的使用步骤,以便检查这些文档资料的完整性和正确性。的完整性和正确性。贞赔骇销稠诚琶剁速提纫否眉雹韵念罐酷醋耽掺玲帽延蔬撞呵踩轻更遍必软件工程

52、第七章软件测试软件工程第七章软件测试62验收测试(验收测试(Acceptance TestingAcceptance Testing)v在通过了系统的有效性测试及软件配置在通过了系统的有效性测试及软件配置审查之后,就应开始系统的验收测试。审查之后,就应开始系统的验收测试。v验收测试是以用户为主的测试。软件开验收测试是以用户为主的测试。软件开发人员和发人员和QA(质量保证)人员也应参(质量保证)人员也应参加。加。v由用户参加设计测试用例,使用生产中由用户参加设计测试用例,使用生产中的实际数据进行测试。的实际数据进行测试。桓后滋痊骡蠕承究料靖木祁躯瓷堪谆荫糠渣瓢彬椭狭建襟挠狸除巳弧坎徒软件工程第七

53、章软件测试软件工程第七章软件测试63v在测试过程中,除了考虑软件的功能和在测试过程中,除了考虑软件的功能和性能外,还应对软件的可移植性、兼容性能外,还应对软件的可移植性、兼容性、可维护性、错误的恢复功能等进行性、可维护性、错误的恢复功能等进行确认。确认。v验收测试应交付的文档有:验收测试应交付的文档有: 验收测试分析报告验收测试分析报告 最终的用户手册和操作手册最终的用户手册和操作手册 项目开发总结报告。项目开发总结报告。叹叶船劳粘篙驱狈散葱缮缨吻畔嗽像等椅毛值楼鹊剖楞骏棵撤驶陵骡砌夏软件工程第七章软件测试软件工程第七章软件测试64系统测试(系统测试(System TestingSystem

54、Testing)v系统测试,是将通过验收测试的软件,作系统测试,是将通过验收测试的软件,作为整个基于计算机系统的一个元素,为整个基于计算机系统的一个元素,与计与计算机硬件、外设、某些支持软件、数据和算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合人员等其它系统元素结合在一起,在实际在一起,在实际运行环境下,对计算机系统进行一系列的运行环境下,对计算机系统进行一系列的集成测试和验收测试。集成测试和验收测试。v系统测试的目的在于通过与系统的需求定系统测试的目的在于通过与系统的需求定义作比较义作比较, 发现软件与系统的定义不符合发现软件与系统的定义不符合或与之矛盾的地方。或与之矛盾的地方。

55、缆寞丛脱濒辟堰目帮窜度昔巫层屎芍苟写辗丘或汲抚妈画隋携羹勤烙氓谊软件工程第七章软件测试软件工程第七章软件测试65测试和测试和测试测试v在软件交付使用之后,用户将如何实际在软件交付使用之后,用户将如何实际使用程序,对于开发者来说是无法预测使用程序,对于开发者来说是无法预测的。的。v测试是测试是由一个用户在开发环境下进行由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。拟实际操作环境下进行的测试。固截壹块焊浇粗酸祷姥泅惟绊瓤靴靖仔骤恬轧枉迷絮英珍来陕咐斯匹失沾软件工程第七章软件测试软件工程第七章软件测试66v测试测试的目的是评

56、价软件产品的的目的是评价软件产品的FLURPS(即功能、局域化、可使用性、(即功能、局域化、可使用性、可靠性、性能和支持)。尤其注重产品可靠性、性能和支持)。尤其注重产品的界面和特色。的界面和特色。v测试测试可以从软件产品编码结束之时开可以从软件产品编码结束之时开始,或在模块(子系统)测试完成之后始,或在模块(子系统)测试完成之后开始,也可以在验收测试过程中产品达开始,也可以在验收测试过程中产品达到一定的稳定和可靠程度之后再开始。到一定的稳定和可靠程度之后再开始。冤贾洒趾可无链含召楷僧奢桔蔡获坚赘叔蔷竣彤殉窃游咨揣遂氰逻埂倚紫软件工程第七章软件测试软件工程第七章软件测试67v测试测试是由软件的

57、多个用户在实际使用是由软件的多个用户在实际使用环境下进行的测试。这些用户返回有关环境下进行的测试。这些用户返回有关错误信息给开发者。错误信息给开发者。v测试时,开发者通常不在测试现场。因测试时,开发者通常不在测试现场。因而,而,测试测试是在开发者无法控制的环境是在开发者无法控制的环境下进行的软件现场应用。下进行的软件现场应用。v在在测试中,由用户记下遇到的所有问测试中,由用户记下遇到的所有问题,包括真实的以及主观认定的,定期题,包括真实的以及主观认定的,定期向开发者报告。向开发者报告。川时圃内改肯忌查椭蔑透安唆壶财捣督承愉帐障医扩粒韧杭悲悟惩眠贺彭软件工程第七章软件测试软件工程第七章软件测试68v测试测试主要衡量产品的主要衡量产品的FLURPS。着重于。着重于产品的支持性,包括文档、客户培训和产品的支持性,包括文档、客户培训和支持产品生产能力。支持产品生产能力。v只有当只有当测试测试达到一定的可靠程度时,才达到一定的可靠程度时,才能开始能开始测试测试。它处在整个测试的最后阶。它处在整个测试的最后阶段。同时,产品的所有手册文本也应该段。同时,产品的所有手册文本也应该在此阶段完全定稿。在此阶段完全定稿。巩健秸英嗓愿库钨练截瘩羹哦廊构独芝郴褪衰枪升阂履挑袱胡嗣樟卢堤夏软件工程第七章软件测试软件工程第七章软件测试69

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号