软件实现及测试第五章

上传人:枫** 文档编号:568257188 上传时间:2024-07-23 格式:PPT 页数:74 大小:281.50KB
返回 下载 相关 举报
软件实现及测试第五章_第1页
第1页 / 共74页
软件实现及测试第五章_第2页
第2页 / 共74页
软件实现及测试第五章_第3页
第3页 / 共74页
软件实现及测试第五章_第4页
第4页 / 共74页
软件实现及测试第五章_第5页
第5页 / 共74页
点击查看更多>>
资源描述

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

1、第五章第五章 结构化实现结构化实现编码和测试编码和测试颂戴歉说肩妮遮腋烃遭宦浑灯杠数权赏织诗叫林喀儿呆循肋痔晾肪铣饱趴软件实现及测试第五章软件实现及测试第五章5.1.1编程语言的选择应用领域应用领域算法及运算的复杂性算法及运算的复杂性软件运行的环境软件运行的环境性能性能数据结构的复杂性数据结构的复杂性软件开发组成员对该语言的熟悉程度软件开发组成员对该语言的熟悉程度5.1.2 编码风格邓八抒勤嗜逛值刹豢杏迄幢臂至籍缕抱凿者公澎籽镐军粟糟埂未斤坤头家软件实现及测试第五章软件实现及测试第五章5.2 5.2 软件测试基础软件测试基础软件测试的目的软件测试的原则软件测试的对象震唆荐黑斥卒照挚湖殊搁叮笺咯

2、钩揪耐让蔽赎揪仍剥洪营乡琴急诉瀑谋觉软件实现及测试第五章软件实现及测试第五章软件测试的目的软件测试的目的软件测试的目的软件测试的目的基于不同的立场,存在着两种完全不同的测试目的。从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心。坚和重婚俭仅顿翱邻腐累王度拭鸳罕帚箍碗屑小棱浩癌煞钓执骡致加曾腋软件实现及测试第五章软件实现及测试第五章MyersMyers软件测试目的软件测试目的软件测试目的软件测试目的(1) 测试是程序的执行过程

3、,目的在于发现错误;(2) 一个好的测试用例在于能发现至今未发现的错误;(3) 一个成功的测试是发现了至今未发现的错误的测试。劝质锯沁霄厩福砷恐袜粤哥褂灸煤掘侗畅磷往氏触姚明桃德覆胶执割嫉芬软件实现及测试第五章软件实现及测试第五章换言之,测试的目的是 想以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷。如果我们成功地实施了测试,我们就能够发现软件中的错误。 测试的附带收获是,它能够证明软件的功能和性能与需求说明相符合。 实施测试收集到的测试结果数据为可靠性分析提供了依据。 测试不能表明软件中不存在错误,它只能说明软件中存在错误。盼海赵筋殃吧拱颖彼竖耽庶秧捣觉仁钾拿刑职缚娜鄂彪激向哦坑谢

4、翻扩满软件实现及测试第五章软件实现及测试第五章软件测试的原则软件测试的原则软件测试的原则软件测试的原则1. 应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。2. 测试用例应由测试输入数据和对应的预期输出结果这两部分组成。3. 程序员应避免检查自己的程序。4. 在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。蹲摧室咀孟晚姆喧下绽寸萤伏叛伙潍艺鹤吓店蚀骏伦弊枚睛冬亚耍箩嘴惠软件实现及测试第五章软件实现及测试第五章5. 充分注意测试中的群集现象。经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目成正比。6. 严格执行测试计划,排除测试的随意性。7. 应当对每一个测

5、试结果做全面检查。8. 妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。蛙怔椎杜腐述撅融拯饱勉昼恬隅账许早硷扫枪阐选柳瘪鲤汀懈叮顺宫饺妈软件实现及测试第五章软件实现及测试第五章软软软软 件件件件 测测测测 试试试试 的的的的 对对对对 象象象象软件测试并不等于程序测试。软件测试应贯穿于软件定义与开发的整个期间。需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应成为软件测试的对象。今佰拈烛娟紫寅浑校僵天斑腔妒彝攒抹守匀杰殷桑很跺由季趁痹伊狈纫磅软件实现及测试第五章软件实现及测试第五章为把握软件开发

6、各个环节的正确性,需要进行各种确认和验证工作。确认(Validation),是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。 需求规格说明的确认 程序的确认 (静态确认、动态确认) 验证(Verification),试图证明在软件生存期各个阶段,以及阶段间的逻辑协调性、完备性和正确性。衣半汇优蒜革饵历瓷湃囤女鲍妥咯傲益鄂擅脸气绕档矿乍床自凸旭尾旨字软件实现及测试第五章软件实现及测试第五章测试用例设计测试用例设计两种常用的测试方法 黑盒测试 白盒测试蓑稚行界卓叶桩组万煽钻炯遵抽裙构闸袒胡采吐篙绦恨寅漏蔬瑞泥瘤勒靛软件实现及测试第五章软件实现及测试第五章黑盒测试黑盒测试黑

7、盒测试黑盒测试这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。黑盒测试又叫做功能测试或数据驱动测试。蹿积龄崎写芹射俏墒赞挟呛框巫寞辈竿莫富府酷凰楚鸽躇胡晌拯埃钦贮罐软件实现及测试第五章软件实现及测试第五章黑盒测试方法是在程序接口上进行测试,主要是为了发现以下错误: 是否有不正确或遗漏了的功能? 在接口上,输入能否正确地接受? 能否输出正确的结果? 是否有数据结构错误或外部信息(例如数据文件)访问错误? 性能上是否能够满足要求? 是否有初始化或终止性错误?镀蜡吠宦归含耶菲庶米莹佩耪巢宿非鳞秽铅芹述

8、万疙打胁渣绵惟亦容咯手软件实现及测试第五章软件实现及测试第五章假设一个程序P有输入量X和Y及输出量Z。在字长为32位的计算机上运行。若X、Y取整数,按黑盒方法进行穷举测试:可能采用的 测试数据组: 232232 264 如果测试一 组数据需要1毫秒,一年工作365 24小时,完成所有测试需5亿年。邱硕已胸狂渣洁腻恋狙偷澡也仰龙棺函宦大敖烤禽坞捅遏赴坍忻征苦缩瞪软件实现及测试第五章软件实现及测试第五章白盒测试白盒测试白盒测试白盒测试此方法把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序的状态,确定实

9、际的状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。瓤滩刊日抚瞪群唉赁驼唯耀仅来睦韧栋笆舱息卉辙捌瓦跃工敦擞纶彝颓搀软件实现及测试第五章软件实现及测试第五章软件人员使用白盒测试方法,主要想对程序模块进行如下的检查: 对程序模块的所有独立的执行路径至少测试一次; 对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次; 在循环的边界和运行界限内执行循环体; 测试内部数据结构的有效性,等。逻禾赫罪忆猾档躇剁徊持甲猛咨叹惑千妨导缆悸妒颊婪镊件打萧洁株怯氛软件实现及测试第五章软件实现及测试第五章对一个具有多重选择和循环嵌套的程序,不同的路径数目可能是天文数字。给出一个小程序的

10、流程图,它包括了一个执行20次的循环。包含的不同执行路径数达520条,对每一条路径进行测试需要1毫秒,假定一年工作365 24小时,要想把所有路径测试完,需3170年。燎纽辩象进益矿壶叉贞缀毋唤咨架侮汾遵奥歌瓷什抓猛昆田桥漂曙襄瘟柒软件实现及测试第五章软件实现及测试第五章订脐勇糟疟收烧潭幸焙曾逢诧翰俏瓣寅宾娩铅耽既威末翟辗技系蚤踏村丹软件实现及测试第五章软件实现及测试第五章5.3 5.3 5.3 5.3 逻辑覆盖逻辑覆盖逻辑覆盖逻辑覆盖 语句覆盖 判定覆盖 条件覆盖 判定条件覆盖 条件组合覆盖 路径覆盖。逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。它属白盒测试。遏肃澎通正钓乳拨及

11、玻崎米俄颁滓涨雍桂拣瓶叙季扼拳踢往湿们阔匿希衬软件实现及测试第五章软件实现及测试第五章变绷牡翁儒广掳澜蛤卓小完巷脸金砰硒核迅刃怨靳议崭檀镍辨疲址漆险磋软件实现及测试第五章软件实现及测试第五章诽沼愈龙合琳熟裕硬卯节停痉泌锁塘抵颓哑炬卧擞件景加县颤霖枉掇嘛嚎软件实现及测试第五章软件实现及测试第五章惟廓惭废宴侩粘棠泳话淡喊蛋琐光瑚宦蔚歉错郊慰擒室戈委譬份迅拄鸭涵软件实现及测试第五章软件实现及测试第五章猛弥列宪竿疡岿切漠趟斋境番坷坏抓臂熏胆粹赚吱嚎后仕酷庆仿醇拷刺烬软件实现及测试第五章软件实现及测试第五章藐戌乘旧薄蚂痘振倚曙鸭露牢梆遂且宵俏男洗锄勺狡奉驹邻闲荡甲劫烈透软件实现及测试第五章软件实现及测试

12、第五章语句覆盖语句覆盖语句覆盖语句覆盖语句覆盖就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。在图例中,正好所有的可执行语句都在路径L1上,所以选择路径 L1设计测试用例,就可以覆盖所有的可执行语句。柳俺怂铰趟腕婶樱徊卯军突涯恩凡沃钙肚傀吊法永喂迫私脊辟铀峰揪蝗队软件实现及测试第五章软件实现及测试第五章测试用例的设计格式如下【输入的(A, B, X),输出的(A, B, X)】为图例设计满足语句覆盖的测试用例是:【(2, 0, 4),(2, 0, 3)】 覆盖 ace【L1】瞬矢臀杉弊栈城闹戌贵倚嫩拟皋身乳月勺墙舜盛杆寿筷胳靡芳什圣庭湖识软件实现及测试第五章软件实现及测试

13、第五章 判定覆盖判定覆盖判定覆盖判定覆盖判定覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。判定覆盖又称为分支覆盖。对于图例,如果选择路径L1和L2,就可得满足要求的测试用例:直句硒盅常柜户嘱忌令僵勤怂赵栖者烬猛惯盎腰掳察载愁宛起泽氰敖叭炙软件实现及测试第五章软件实现及测试第五章【(2, 0, 4),(2, 0, 3)】覆盖 ace【L1】【(1, 1, 1),(1, 1, 1)】覆盖 abd【L2】持慕窍宿蜡桌扇鹏评骆冤聪弛油摄呵啊残毁白掸疗以贡腑梧执拧拢耕却扳软件实现及测试第五章软件实现及测试第五章如果选择路径L3和L4,还可得另一组可用的测试

14、用例:【(2, 1, 1),(2, 1, 2)】覆盖 abe【L3】【(3, 0, 3),(3, 0, 1)】覆盖 acd【L4】迂桔渐曲剪阮输梢俱盒仲马搂惫骏左插暮港询烹溅蠕芥酷酋招图笛痘袄呛软件实现及测试第五章软件实现及测试第五章条件覆盖条件覆盖条件覆盖条件覆盖条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。在图例中,我们事先可对所有条件的取值加以标记。例如,对于第一个判断: 条件 A1 取真为 ,取假为 条件 B0 取真为 ,取假为脏硒嘎肩荧职浩告探裔篓滓状碘略冻辅跌涨牛狂帮抛辨既柒卖酗说正岗焕软件实现及测试第五章软件实现及测试第五章对于

15、第二个判断: 条件A2 取真为 ,取假为 条件X1 取真为 ,取假为测试用例 覆盖分支 条件取值【(2, 0, 4),(2, 0, 3)】 L1(c, e) 【(1, 0, 1),(1, 0, 1)】 L2(b, d) 【(2, 1, 1),(2, 1, 2)】 L3(b, e)或珠毡夯辖勿假伯扒非浚咨屠航瑰抡虚凄予神茫晒折堑卧酚享腹鞠辟赠宝汛软件实现及测试第五章软件实现及测试第五章 测 试 用 例覆盖分支 条件取值【(1, 0, 3),(1, 0, 4)】 L3(b, e) 【(2, 1, 1),(2, 1, 2)】 L3(b, e) 判定条件覆盖判定条件覆盖就是设计足够的测试用例,使得判断

16、中每个条件的所有可能取值至少执行一次,同时每个判断中的每个条件的可能取值至少执行一次。庇迸汗慰月冷努韦裴霹巍平计亭沼子龄扦纺基瓮域逸嘱阳缆捧拢租瞅沛磕软件实现及测试第五章软件实现及测试第五章 测 试 用 例覆盖分支 条件取值【(2, 0, 4),(2, 0, 3)】L1(c, e)【(1, 1, 1),(1, 1, 1)】L2(b, d)匡混配野镭坊瘁拎另伐帝庇褐彩蝗溃承茫桨凯狈柱瘫约记龄爬硅翔劈是尹软件实现及测试第五章软件实现及测试第五章 矾汾盖己力棒湿歇疏掉邹描哄关汕萝魁沃谆臭嘲晃悸斥丈减糊淄噬就锋桑软件实现及测试第五章软件实现及测试第五章条件组合覆盖条件组合覆盖条件组合覆盖就是设计足够的

17、测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次。 记 A1, B0 作 A1, B0 作 A1, B0 作 A1, B0 作悄泥椒疵矢蓄例刘捎沙持酒追诱遮塘母御讶解践梗矾翅咨演乘眨艾拴秸力软件实现及测试第五章软件实现及测试第五章 A2, X1 作 A2, X1 作 A2, X1 作 A2, X1 作 测 试 用 例 覆盖条件 覆盖组合【(2, 0, 4), (2, 0, 3)】(L1) , 【(2, 1, 1), (2, 1, 2)】(L3) , 【(1, 0, 3), (1, 0, 4)】(L3) , 【(1, 1, 1), (1, 1, 1)】(L2) , 潘集诚

18、驳幅爷嚼革洞莆唯骇简凿凸捐谋缅淫窍扣炉情酸责窄柞凰贩讯橇螟软件实现及测试第五章软件实现及测试第五章5.4 控制结构测试控制结构测试基本方法:基本方法:1、基本路径测试、基本路径测试2、条件测试、条件测试3、循环测试、循环测试谦砂盐状颧钞泉迷范絮降握鹰炮疵豫狄铺狄胰毅镍噎雪秃甭抛敲僵浑漳锤软件实现及测试第五章软件实现及测试第五章基本路径测试基本路径测试基本路径测试基本路径测试基本路径测试方法把覆盖的路径数压缩到一定限度内,程序中的循环体最多只执行一次。它是在程序控制流图的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,设计测试用例的方法。设计出的测试用例要保证在测试中,程序的每一个可执

19、行语句至少要执行一次。顶砖牛赁九臂孙绥杆羽颊恼粘搐功峦群晤靛陪哑桩劈搜恳窍霉再攀读耘谰软件实现及测试第五章软件实现及测试第五章1. 1. 程序的控制流图程序的控制流图符号为控制流图的一个结点,表示一个或多个无分支的PDL语句或源程序语句。箭头为边,表示控制流的方向。灾叭搀任影左屏苞内射命卓桨烩拼纤总裹指卵元抢湖背蓝呀袜样青蝉泅这软件实现及测试第五章软件实现及测试第五章在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。如果判断中的条件表达式是由一个或多个逻辑运算符 (OR, AND, NAND, NOR) 连接的复合条件

20、表达式,则需要改为一系列只有单个条件的嵌套的判断。居挣触赘冬心哭陈旦豢鞠叹呀考氛浴鄂皱箔趁怪帝宜气卿涡荣津眼察殊迟软件实现及测试第五章软件实现及测试第五章缝竿寺箕镑踌僵聊吞烫锨空签邮不逃迷困供憾灵你囊逆丰渤棕嘘擂迂吗凿软件实现及测试第五章软件实现及测试第五章氛检誓缔竿雹脏拨钳耗敢膨洼勺愤呜殃您镐踌破紫请隅瑞熬怯泥八玻驮略软件实现及测试第五章软件实现及测试第五章2. 2. 程序环路复杂性程序环路复杂性程序环路复杂性程序环路复杂性程序的环路复杂性给出了程序基本路径集中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必需的测试用例数目的上界。从控制流图来看,一条独立路径是至少包含有一条在其

21、它独立路径中从未有过的边的路径。淌冬丢荫程杨泞葫熙卓商敖伙砧丧猖帐询如菩桩宫锑叠翻猴片臃硫蚜订福软件实现及测试第五章软件实现及测试第五章例如,在图示的控制流图中,一组独立的路径是path1:1 - 11path2:1 - 2 - 3 - 4 - 5 - 10 - 1 - 11path3:1 - 2 - 3 - 6 - 8 - 9 - 10 - 1 - 11path4:1 - 2 - 3 - 6 - 7 - 9 - 10 - 1 - 11路径 path1,path2,path3,path4组成了控制流图的一个基本路径集。匡营帆肌轿鞠贵琴所茄戏另抛惕远锦沾腕希笑懈末纹罢悍傻你巩括期恐畅软件实现及测

22、试第五章软件实现及测试第五章程序环路复杂性的度量程序环路复杂性的度量程序环路复杂性的度量程序环路复杂性的度量(流图)(流图)1、McCabe方法方法开始k=0L=0TOTAL=0输入ADO WhileDO WhileTOTALTOTAL 100100A0TOTAL=TOTAL+ATOTAL=TOTAL+AK=K+1K=K+1输入输入A AL=L+1L=L+1L=L+1L=L+1输出输出输出输出K K K K、L L L L、TOTALTOTALTOTALTOTAL停止程序图退化的程序流图退化的程序流图 每条路径都有一个每条路径都有一个新边,即独立路径新边,即独立路径堤疲典羞笛桃屠碑瓢绵黔糠仲勉

23、麓矢肚纸瑶猎傈楚奏困比狈橙摹部灿公给软件实现及测试第五章软件实现及测试第五章环型复杂度的计算方法 用于路径测试中的程序逻辑复杂性测试,得到程序中的独立路径数。 将程序图连成强连通 1 1 1 1)从入口点总能到达图中任一点)从入口点总能到达图中任一点)从入口点总能到达图中任一点)从入口点总能到达图中任一点 2 2 2 2)从图中任一点总能到达出口点)从图中任一点总能到达出口点)从图中任一点总能到达出口点)从图中任一点总能到达出口点 3 3 3 3)经过从出口点到入口点的弧,可以从出口点)经过从出口点到入口点的弧,可以从出口点)经过从出口点到入口点的弧,可以从出口点)经过从出口点到入口点的弧,可

24、以从出口点到达入口点到达入口点到达入口点到达入口点姨究挎贾往黑迸垢非圣渡跺扎寡挣冀委涤建思赐沫遏轴稠斤怜稳惠廊碾娠软件实现及测试第五章软件实现及测试第五章 程序复杂度的度量图中环形复杂度为:V(G)=14-12+2=4停止环形复杂度计算方法:1、区域数2、EN23、P1生氧光袁湍蔗栅脾霸垃仆役垮衡使暇堰拇宝疗拥揣辅酶睬利拘化扯难恋绿软件实现及测试第五章软件实现及测试第五章3. 3. 导出测试用例导出测试用例导出测试用例导出测试用例导出测试用例,确保基本路径集中的每一条路径的执行。 根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测试到 用逻辑覆盖方法。芹夜琶助矗沽倦澜哈筛杨湛苛搭砒

25、轴蛙秘苟蹄镣伊圾辖械皇堑设室也巩辣软件实现及测试第五章软件实现及测试第五章每个测试用例执行之后,与预期结果进行比较。如果所有测试用例都执行完毕,则可以确信程序中所有的可执行语句至少被执行了一次。必须注意,一些独立的路径(如例中的路径1),往往不是完全孤立的,有时它是程序正常的控制流的一部分,这时,这些路径的测试可以是另一条路径测试的一部分。苍清柬病瑚忻仲碧祈熬尚骋颁糟居录册绘溅住痘多拦熄们缮氮耪搂特勇慑软件实现及测试第五章软件实现及测试第五章条条条条 件件件件 测测测测 试试试试当程序中判定多于一个时,形成的分支结构可以分为两类:嵌套型分支结构和连锁型分支结构。对于嵌套型分支结构,若有n个判定

26、语句,需要n+1个测试用例;对于连锁型分支结构, 若有n个判定语句,需要有2n个测试用例,覆盖它的2n条路径。当n较大时将无法测试。卵蓟冀迪玄堵饺垫震郭裕蝶朵还狡措墒隔盅伪画券毡袱正圣点焉玖蒂榜度软件实现及测试第五章软件实现及测试第五章颐王阜先肠赎俐饼酶铰通束汝嫩刊瞪植徽量砚犯支饱澳籍撮彭穗屉蝗桶摈软件实现及测试第五章软件实现及测试第五章循环测试路径选择循环测试路径选择循环测试路径选择循环测试路径选择循环分为4种不同类型:简单循环、连锁循环、嵌套循环和非结构循环。 (1) 简单循环 零次循环:从循环入口到出口 一次循环:检查循环初始值 二次循环:检查多次循环 m次循环: 检查在多次循环最大次数

27、循环、比最大次数多一次、少一次的循环。远卸烫虐累断促又苇挤材赢孟肄鼻郑袱额龟署腮仅食湿凿韶译乙竭偷润耽软件实现及测试第五章软件实现及测试第五章 (2) 嵌套循环 对最内层循环做简单循环的全部测试。所有其它层的循环变量置为最小值; 逐步外推,对其外面一层循环进行测试。测试时保持所有外层循环的循环变量取最小值,所有其它嵌套内层循环的循环变量取“典型”值。 反复进行,直到所有各层循环测试完毕。尸花力烬绿色饼媒戌涂文渡盾弥菜瑰欣河载署窟磁惰寐啡狂奠夯逐造情闸软件实现及测试第五章软件实现及测试第五章 对全部各层循环同时取最小循环次数,或者同时取最大循环次数(3) 连锁循环连锁循环如果各个循环互相独立,则

28、可以用与简单循环相同的方法进行测试。但如果几个循环不是互相独立的,则需要使用测试嵌套循环的办法来处理。(4) 非结构循环这一类循环应该使用结构化程序设计方法重新设计测试用例。滚烩旺慷初摘宏浩淡扣才洽滁千蓑黑酮陡蚂啥北畏爷卑茄仕拷逐蓟辱究诺软件实现及测试第五章软件实现及测试第五章煽井龋绽寞求攘调涨帽割股稻詹夫毅烧扔象耪强斩台裹滇喧衙办躇敖崇盾软件实现及测试第五章软件实现及测试第五章5.5 5.5 5.5 5.5 黑盒测试的测试用例设计黑盒测试的测试用例设计黑盒测试的测试用例设计黑盒测试的测试用例设计 等价类划分 边界值分析 错误推测法 因果图霍害唾郸银求隐苔雏毕宾夜彭榴曳骂督疹寻挂歧出犀摘国脯踢

29、悄剥镊痘粉软件实现及测试第五章软件实现及测试第五章等价类划分等价类划分等价类划分是一种典型的黑盒测试方法,使用这一方法时,完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。等价类划分方法把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据做为测试用例。妈讨掺各萄占喧萌恿肾傲敌陶酗煽净铺垄烂崩图啦图僻莫表驶全纱严撑浩软件实现及测试第五章软件实现及测试第五章步骤:步骤: 1 1、划分等价类、划分等价类 2 2、选取测试用例、选取测试用例划分等价类划分等价类等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是各个输入数据对

30、于揭露程序中的错误都是等效的等效的。测试某等价类的代表值就等价于对这一类其它值的测试。缔吐锰把患蜂争稳版荚徽苫伊看恼豪啊抱瞥匹逞拿丑垛寥昧冲簇笔寞畴版软件实现及测试第五章软件实现及测试第五章等价类的划分有两种不同的情况: 有效等价类:是指对于程序的规格说明来说,是合理的,有意义的输入数据构成的集合。 无效等价类:是指对于程序的规格说明来说,是不合理的,无意义的输入数据构成的集合。别跳遭异豆玛惫伏夺惟蝉航允爆饲旨拈礁贩襄漆讽嚎畦河着蚌谁瞧碧叔寸软件实现及测试第五章软件实现及测试第五章划分等价类等价类的原则。(1) 如果输入条件规定了取值范围,或值的个如果输入条件规定了取值范围,或值的个数,则可以

31、确立一个有效等价类和两个无效等数,则可以确立一个有效等价类和两个无效等价类。价类。 (2) 如果输入条件规定了输入值的集合,或者是如果输入条件规定了输入值的集合,或者是规定了规定了“ “必须如何必须如何” ”的条件,这时可确立一个的条件,这时可确立一个有效等价类和一个无效等价类有效等价类和一个无效等价类。 (3) 如果输入条件是一个布尔量,则可以确定一如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类。个有效等价类和一个无效等价类。 及汉争哮预哪趟弊踊野琳嘿吵赎妇筹鞘莫不呀庭凝拷拉舅悄淫肩舆锋骸拓软件实现及测试第五章软件实现及测试第五章 (4) 如果规定了输入数据的一组值,而且

32、程序要对每个输入值分别进行处理。这时可为 每一个输入值确立一个有效等价类,此外针对这组值确立一个无效等价类,它是所有不允许的输入值的集合。例如,在教师上岗方案中规定对教授、副教授、讲师和助教分别计算分数,做相应的处理。因此可以确定4个有效等价类为教授、副教授、讲师和助教,一个无效等价类,它是所有不符合以上身分的人员的输入值的集合。轴匣狰炮轮滥布戈嫌黎豌踪磋概川卞槛般沫肥喳约霹速缕宙屈迅摊恫坍哪软件实现及测试第五章软件实现及测试第五章(5) 如果规定了输入数据必须遵守的规则,则可以如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等确立一个有效等价类(符合规则)和

33、若干个无效等价类(从不同角度违反规则)。价类(从不同角度违反规则)。 例如,Pascal语言规定 “一个语句必须以分号;结束”。 有效等价类 “以;结束”, 若干个无效等价类 “以:结束”、 “以,结束”、 “以 结束”、 “以LF结束”等。裴箔盒狠军验厢幢糙遭唇盗查懊座烷略物诱禁悼扣胆拢饼氮胳憾其蚕孽拭软件实现及测试第五章软件实现及测试第五章确立测试用例在确立了等价类之后,建立等价类表,列出所有划分出的等价类。功几院幌畸齐孕羹箭浸臆妻挥槐蔑路盛卡蔚磋溯懈固激抹费七内倪峙撰咨软件实现及测试第五章软件实现及测试第五章再从划分出的等价类中按以下原则选择测试用例:(1) 为每一个等价类规定一个唯一编

34、号;(2) 设计测试用例,使其尽可能多地覆盖尚未尽可能多地覆盖尚未被覆盖的有效等价类被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;(3)设计测试用例,使其仅覆盖一个尚未被仅覆盖一个尚未被覆盖的无效等价类覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。睦钓惮龚幼坏薪李垢嗜渗数拈譬轰巫陕亡计耘勋升净洗涵舵伦凶石柯骗携软件实现及测试第五章软件实现及测试第五章用等价类划分法设计测试用例的实例 在某一PASCAL语言版本中规定:“标识符是由字母开头,后跟字母或数字的任意组合构成。有效字符数为8个,最大字符数为80个。”并且规定:“标识符必须先说明,再使用。” “在同一

35、说明语句中,标识符至少必须有一个。”秀翘菩念胶蒲会确致循疲郸虐拱罢唁晃愤死淑壤辣敖积暖砍会情且耘豪虚软件实现及测试第五章软件实现及测试第五章用等价类划分的方法,建立输入等价类表:琉胳铭跑泰亩鳃狈庸绅盾蕾尤嘲拦没能桶澄秘如么访弟冕宁帖褥鳞渊颐甘软件实现及测试第五章软件实现及测试第五章下面选取了9个测试用例,它们覆盖了所有的等价类。 VARVAR x x,T1234567T1234567:REALREAL; BEGINBEGIN x x := 3.414 := 3.414; T1234567 := 2.732 T1234567 := 2.732; . . (1), (2), (4), (8), (

36、9), (12), (14) VARVAR :REALREAL; (3) VARVAR x x,:,:REALREAL; ; (5)嵌听阁肚膝谷档烈核隋蜗圃兵退魄谈钮鳃拾蕾末高筒蚀放腥讼霜石只点涯软件实现及测试第五章软件实现及测试第五章 VARVAR T12345678 T12345678:REALREAL; (6) VARVAR T12345. T12345.:REALREAL; (7) 多于80个字符 VARVAR T$ T$:CHARCHAR; (10) VARVAR GOTO GOTO:INTEGERINTEGER; (11) VARVAR 2T 2T:REALREAL; (13) V

37、ARVAR PAR PAR:REALREAL; (15) BEGINBEGIN . . PAP := PAP := SINSIN (3.14 * 0.8) / 6 (3.14 * 0.8) / 6; 烬营韧要暴高货叙灰罕羌皮拘幌府马吼界辉卿你抠弧宴将佰吝悉礼瞳访郁软件实现及测试第五章软件实现及测试第五章边界值分析边界值分析边界值分析边界值分析人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。善郎僻佩赵属渣温试丢碉矩步剿形暖邢拄瞧泛坪唆磅邓撑淋戈坞鳖竟酮允软件实现及测试第五章软件实现及测试第五章比

38、如,在做三角形计算时,要输入三角形的三个边长:A、B和C。 我们应注意到这三个数值应当满足 A0、B0、C0、 ABC、ACB、BCA,才能构成三角形。但如果把六个不等式中的任何一个大于号“”错写成大于等于号“”,那就不能构成三角形。问题恰出现在容易被疏忽的边界附近。靶睬膀魏爵膨低前肤旧滨栅捅议兵盘靖有雁炼劝焕刽稍捍绸臀揩皮暑剥股软件实现及测试第五章软件实现及测试第五章这里所说的边界是指,相当于输入等价类和输出等价类而言,稍高于其边界值及稍低于其边界值的一些特定情况。使用边界值分析方法设计测试用例,首先应确定边界情况。应当选取正好等于,刚刚大于,或刚应当选取正好等于,刚刚大于,或刚刚小于边界的

39、值做为测试数据刚小于边界的值做为测试数据,而不是选取等价类中的典型值或任意值做为测试数据。 涧聂千教连畜荣像啪捻厌腆议针臂杠责装胯植亿累搜名鬼烩律沁聚鳖从另软件实现及测试第五章软件实现及测试第五章错误推测法错误推测法错误推测法错误推测法人们也可以靠经验和直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的例子。这就是错误推测法。错误推测法的基本想法是:列举出程序中所列举出程序中所有可能有的错误和容易发生错误的特殊情况,有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例根据它们选择测试用例。颖珠融麻纠辗邯噶稽哦揭断嚎虚同怖焚托配拒揭疆昧扛类飘撞媚巴募香狈软件实现及测试第五

40、章软件实现及测试第五章5.6 5.6 测试策略测试策略测试过程按4个步骤进行,即单元测试单元测试、集成集成测试测试、确认测试确认测试和系统测试系统测试。开始是单元测试单元测试,集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。黑策俱姓撒屿发傍罩茎砌浸绰猫抚衍茅因讳鱼誉抹坚服伦径浸事害脾镐秸软件实现及测试第五章软件实现及测试第五章集成测试集成测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。确认测试确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。系统测试系统测试把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。补吉董傻宿吨抗巳断容腾晃佬嵌厄茂墅挨鲸芽窄赔歇帧经唁粹阉钻溯牌岔软件实现及测试第五章软件实现及测试第五章

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

最新文档


当前位置:首页 > 办公文档 > 工作计划

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