第7章 软件实现与测试_第1页
第7章 软件实现与测试_第2页
第7章 软件实现与测试_第3页
第7章 软件实现与测试_第4页
第7章 软件实现与测试_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程导论主讲:李传科Tel-mail:lichuanke8815@163.com1海软院软件工程系第7讲实现(编码与测试)7.1编码7.2软件测试基础7.3单元测试7.4集成测试7.5确认测试7.6白盒测试技术7.7黑盒测试技术7.8调试2海软院软件工程系8.1编码

编码就是把软件设计结果翻译成用某种程序设计语言书写的程序。

程序设计语言分类:机器语言;汇编语言;高级语言主流程序设计语言:面向对象程序设计语言(C++;C#;Java;VB;Dephi

等);脚本语言(Javascript;Vbscript;Jsp;Php;Perl;Ruby/Rails;Python等)3海软院软件工程系2程序设计风格(1)源程序文档化(2)数据说明(3)语句结构(4)输入/输出方法1、选择程序设计语言4海软院软件工程系(1)源程序文档化1.

标识符命名2.

添加注释3.

程序的视觉组织5海软院软件工程系(2)数据说明在设计阶段已经确定了数据结构的组织及其复杂性。在编写程序时,则需要注意数据说明的风格。为了使程序中数据说明更易于理解和维护,必须注意以下几点:

a.

数据说明的次序应该标准化。有次序易查阅,能加速测试、调试和维护的过程。b.

当多个变量名在一个语句中说明时,应该按字母顺序排列这些变量6海软院软件工程系(3)语句构造:简单明了构造语句时应该遵循的原则是,每个语句都应该简单而直接,不能为了提高效率而使程序变得过分复杂;也不要刻意追求技巧性,使程序编写得过于紧凑。

例如:A[I]=A[I]+A[T];

A[T]=A[I]-A[T];

A[I]=A[I]-A[T];

temp=A[T];

A[T]=A[I];

A[I]=temp;7海软院软件工程系

下述规则有助于使语句简单明了:不要为了节省空间而把多个语句写在同一行;尽量避免复杂的条件测试;尽量减少对“非”条件的测试;

if(!(char<0||char>9))

改成

if(char>=0&&char<=9)

避免大量使用循环嵌套和条件嵌套;利用括号使逻辑表达式或算术表达式的运算次序清晰直观。8海软院软件工程系

在设计和编写程序时应该考虑下述有关输入输出风格的规则:对所有的输入数据都要进行检验,识别错误的输入,以保证每个数据的有效性;检查输入项的各种重要组合的合法性,必要时报告输入状态信息;使得输入的步骤和操作尽可能简单,并保持简单的输入格式;输入数据时,应允许使用自由格式输入;应允许缺省值;(4)输入输出9海软院软件工程系案例: 案例11963年,美国飞往火星的火箭爆炸,损失$10million。原因:FORTRAN循环:

DO5I=1,3误写为DO5I=1.3

案例2美国迪斯尼公司的狮子王游戏软件bug 原因:系统兼容性问题 案例3跨世纪“千年虫”问题

原因:系统时间计算缺陷7.2软件测试基础软件缺陷10海软院软件工程系如何定义是软件存在缺陷? 由于不能报告没有看见的问题,因此,没有看见就不能说存在软件缺陷!

“一片树叶飘落在森林中没有人听见,眼见为实11海软院软件工程系软件缺陷的定义:(1)软件未达到产品说明书中已经标明的功能;

(2)软件出现了产品说明书中指明不会出现的错误;

(3)软件未达到产品说明书中虽未指出但应当达到的目标;

(4)软件功能超出了产品说明书中指明的范围;

(5)软件测试人员认为软件难以理解、不易使用,或者最终用户认为该软件使用效果不良。12海软院软件工程系Exchange2000Windows2000项目经理25人约250人开发人员140人约1700人测试人员350人约3200人测试人员/开发人员5:2约2:1微软Exchange2000和Windows2000中的人员结构:软件产品最大的成本是检测软件错误、修正软件错误的成本。

在整个软件开发中,测试的工作量一般占整个项目工作量的40%左右,甚至>=50%。7.2软件测试基础13海软院软件工程系“证明程序是正确的!”

?测试不能证明软件是正确的,也不能证明错误的不存在;测试阶段测试人员设计出的一系列测试方案,是为了“破坏”已经建造好的软件系统—竭力证明程序中有错误!

7.2.1软件测试的目的14海软院软件工程系【定义】:为寻找错误而运行程序的过程。【成功测试的标准】:能够发现错误的测试是成功的测试,否则是失败的测试。【测试的目标】: (1)预防错误:几乎不可实现 (2)尽力发现错误软件测试目标:15海软院软件工程系(1)所有测试都应该能追溯到用户需求;(2)尽早地完成测试计划;(3)软件测试不等于程序测试;(4)应由独立的第三方测试机构来构造测试;(5)测试用例应由输入数据和预期的输出结果两部分组成,并兼顾合理的输入和不合理的输入数据;(6)穷举测试是不可能的;(7)程序修改后要回归测试;(8)应长期保留测试用例,直至系统废弃。7.2.2软件测试准则16海软院软件工程系软件缺陷产生的原因其他6%软件产品说明书(需求)56%设计8%编写代码30%软件缺陷产生的原因分布17海软院软件工程系穷举测试实例:设程序含5个分支,循环次数≤20,从A到B的可能路径

执行时间:设测试一次需2ms

穷举测试需5亿年.=5+5+..+5+5≈1020121914AB18海软院软件工程系4.如何测试?关键技术

---设计测试方案。测试方案

---包括:具体的测试目的,应该输入的测试数据和预期的结果(测试用例)。不同的测试数据发现程序错误的能力差别很大,为了提高测试效率降低测试成本,应该选用高效的测试数据。因为不可能进行穷尽的测试,选用少量“最有效的”测试数据,做到尽可能完备的测试就变很重要了。19海软院软件工程系7.2.3测试方法20海软院软件工程系【黑盒法】:如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用;只关心软件功能是否正确与完善。【白盒法】:如果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明的规定正常进行;只关心软件内部逻辑实现是否正确无误。7.2.3测试方法21海软院软件工程系7.2.4测试步骤22海软院软件工程系7.3单元(模块)测试7.3.1测试重点-5个方面

1.模块接口-对模块接口传递数据的正确性测试

2.局部数据结构-发现局部数据说明、初始化等错误

3.重要的执行通路-选择最具代表性的通路测试

4.出错处理通路-设计适当的出错处理通路

5.边界条件-测试数据边界值 单元测试和编码属于软件过程的同一阶段;主要使用白盒测试技术。23海软院软件工程系7.3.2代码审查

由审查小组(组长,程序设计者,程序编写者,程序测试者),人工测试源程序称为代码审查。它是一种非常有效的程序验证技术,对于典型的程序来说,可以查出30%~70%的逻辑设计错误和编码错误。单元(模块)测试方法审查的步骤:小组成员先研究设计说明书,力求理解这个设计。由设计者扼要地介绍他的设计。审查会上程序的编写者逐个语句地解释是怎样用程序代码实现这个设计的。审查会上对照程序设计常见错误,分析审查这个程序。当发现时,记录错误,继续审查。24海软院软件工程系7.3.3计算机测试

单元测试通常在编码阶段进行,使用一些辅助模块去模拟与被测模块相联系的其他模块。主要有:驱动软件和存根(桩)软件。驱动程序:相当于调用被测模块的“主程序”。(2)

存根(桩)程序:用来代替被测试的模块所调用的模块,也称为“虚拟子程序”。它使用被它代替的模块的接口,可能做最少量的数据操作,印出对入口的检验或操作结果,并且把控制归还给调用它的模块。单元(模块)测试方法25海软院软件工程系 驱动程序和存根程序是为了进行单元测试编写的测试软件—只是测试用!输入的测试数据输出的测试结果驱动模块被测模块桩模块1桩模块2桩模块326海软院软件工程系7.4集成测试集成测试是测试和组装软件的系统化技术,其主要目标是发现与接口有关的问题。测试任务: (1)数据穿越模块接口时是否会丢失;

(2)一个模块是否对另一个模块产生不利影响;

(3)各子功能组合起来能否达到预期的功能;

(4)个别看来是可以接受的误差积累是否会放大到不能接受的程度;27海软院软件工程系集成测试有两种方法。

1、非渐增式测试方法,即:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序进行测试。

2、渐增式测试,即:先把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。这种每次增加一个模块的方法实际上同时完成单元测试和集成测试.

目前在进行集成测试时普遍采用渐增式测试方法。7.4集成测试28海软院软件工程系渐增方式把模块结合到程序中去时,有自顶向下和自底向上两种集成策略。但在实践中常采用混合的策略。7.4.1自顶向下集成7.4.2自底向上集成深度(宽度)优先组装,需要存根程序自底向上组装,需要驱动程序29海软院软件工程系7.5确认测试确认测试也称为验收测试,它的目标是验证软件的有效性。什么是软件的有效性?7.5.1确认测试的范围7.5.2软件配置复查7.5.3Alpha和Beta测试30海软院软件工程系7.6黑盒测试技术如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用—称为黑盒测试。◆检查程序各功能是否实现◆性能上是否能够满足要求◆又称为功能测试、数据驱动测试或基于规格说明的测试里面有是什么东东?31海软院软件工程系黑盒测试技术等价类测试边界值测试错误推测回归测试7.6黑盒测试技术-测试用例设计32海软院软件工程系

1等价类划分法(等价分配)起因穷举测试不可能希望达到测试的完备和无冗余基本思想把所有可能的输入数据(有效的和无效的)划分成若干个等价的子集(称为等价类别或等价区间),使得每个子集中的一个典型值在测试中的作用与这一子集中所有其它值的作用相同。33海软院软件工程系如何划分等价类?等价类

有效等价类(合理等价类)无效等价类(不合理等价类)

划分原则

覆盖:所选类别应能覆盖所有可能的类别不相交:一种取值只测试某一种等价类代表性:取值能代表某一种等价类34海软院软件工程系划分等价类的规则

0100

有效等价类0≤成绩≤100无效等价类成绩>100

无效等价类成绩<0如果输入条件规定了取值范围,可定义一个有效等价类和两个无效等价类。规则1

例:输入学生成绩,范围是0~10035海软院软件工程系划分等价类的规则:如果规定了输入数据的个数,则可定义一个有效等价类和一个无效等价类。规则2如规定了输入数据的一组值,且程序对不同输入值做不同处理,则每个允许的输入值是一个有效等价类,并有一个无效等价类(所有不允许的输入值的集合)。规则3如果规定了输入数据应该遵守的规则,则可以将符合规则划分为一个有效的等价类,而将不符合规则作为一个无效的等价类规则4如果规定输入的数据必须是整数,则可以划分出正整数、零、负整数等三个有效类

规则536海软院软件工程系根据等价类设计测试用例:形成等价类表,每一等价类规定一个惟一的编号设计一测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,重复这一步骤,直到所有有效等价类均被测试用例所覆盖;设计一新测试用例,使其只覆盖一个无效等价类,重复这一步骤直到所有无效等价类均被覆盖;步骤37海软院软件工程系案例

例:某报表处理系统要求用户输入处理报表的日期,日期限制在2005年1

月至2011年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。系统日期规定由年、月的6位数字字符组成,前四位代表年,后两位代表月。如何用等价类划分法设计测试用例,

来测试程序的日期检查功能?38海软院软件工程系步骤1:等价类划分“报表日期”输入条件的等价类表输入等价类

有效等价类

无效等价类

6位数字字符(1)有非数字字符

(4)少于6个数字字符

(5)多于6个数字字符

(6)年份范围在2005~2011之间

(2)小于2005

(7)大于2011

(8)月份范围在1~12之间(3)小于1

(9)大于12

(10)报表日期的类型及长度39海软院软件工程系(1)6位数字字符(2)年在2005~2011之间(3)月在1~12之间步骤2:设计有效类的测试用例对表中编号为1,2,3的3个有效等价类用一个测试用例覆盖.

测试数据

期望结果覆盖范围200505等价类(1)(2)(3)输入有效40海软院软件工程系步骤3:设计无效类的测试用例对上表中每个无效类至少设计一个测试用例测试数据期望结果覆盖范围001WAY200552005005200405201205200500200513输入无效输入无效输入无效输入无效输入无效输入无效输入无效等价类(4)等价类(5)等价类(6)等价类(7)等价类(8)等价类(9)等价类(10)不能出现相同的测试用例41海软院软件工程系2边界值分析法被测试子域测试内点测试外点边界值分析法是使用一些输入/输出值正好等于、小于或大于边界值的测试用例对程序进行测试。边界值分析法作为一种测试技术,通常作为等价分类法的补充基本思想

42海软院软件工程系边界条件类型的确定

如果软件测试问题包含确定的边界,那么数据类型可能是:数值字符位置数量速度地址尺寸……还要考虑数据类型的特征:第一个/最后一个最小值/最大值开始/完成空/满最慢/最快相邻/最远超过/在内……43海软院软件工程系

3错误推测法(errorguessing)列举出程序可能有的错误和容易发生错误的特殊情况,并据此设计测试用例。基本思想

输入数据为0或使输出数据为0的输入最有可能出现错误。如果分别使用每组测试数据都没有问题,可以输入这些数据的组合。错误的确定44海软院软件工程系7.7白盒测试技术—戴上X光眼睛测试检查内部操作是否按规定执行各功能是否得到充分使用又称为结构测试、逻辑驱动测试或基于程序本身的测试如果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行

--称为白盒测试。45海软院软件工程系测试方法逻辑覆盖法基本路径测试语句覆盖判断覆盖条件覆盖判定条件覆盖条件组合覆盖46海软院软件工程系案例:程序流程图条件:T1:a>1T2:b<2T3:a==3T4:x>3执行路径:L13:p1p3L14:p1p4L23:p2p3L24:p2p447海软院软件工程系7.7白盒测试技术—语句覆盖设计若干个测试用例,运行被测试程序,使得每一条可执行语句至少执行一次。48海软院软件工程系输入预期输出通过路径abcxx31103L24测试用例设计案例分析语句覆盖是最弱的逻辑覆盖开始a>1ANDb<2a==3ORx>3输出x=c+1x=x+cFFTTP1P2P3P449海软院软件工程系7.7白盒测试技术—判定覆盖设计若干个测试用例,运行所测程序,使程序中每个判断的取真分支和取假分支至少执行一次

(“L24和L13”或者“L23和L14”)50海软院软件工程系测试用例设计案例分析判定仍然是弱的逻辑覆盖输入预期输出通过路径abcxx21307L2442200L1321102L2342145L14开始a>1ANDb<2a==3ORx>3输出x=c+1x=x+cFFTTP1P2P3P451海软院软件工程系7.7白盒测试技术—条件覆盖设计足够多的测试用例,运行所测程序,使程序中每个判断的每个条件(T1,T2,T3,T4)的每个可能取值至少执行一次。52海软院软件工程系测试用例设计案例分析条件覆盖不一定满足判定覆盖输入预期输出通过路径abcxx31307L2412200L1331205L2412145L14开始a>1ANDb<2a==3ORx>3输出x=c+1x=x+cFFTTP1P2P3P453海软院软件工程系7.7白盒测试技术—判定/条件覆盖设计足够多的测试用例,运行所测程序,使程序中每个判断的每个条件的每个可能取值至少执行一次,并且每个可能的判断结果也至少执行一次。54海软院软件工程系开始a>1ANDb<2a==3ORx>3输出x=c+1x=x+cFFTTP1P2P3P4测试用例设计案例分析能同时满足判定、条件两种覆盖标准输入预期输出通过路径abcxx30307L2412200L1355海软院软件工程系7.7白盒测试技术—条件组合覆盖设计足够多的测试用例,运行所测程序,使程序中每个判断的所有可能的条件取值组合至少执行一次

。56海软院软件工程系测试用例设计案例分析是较好的覆盖指标。但当判定表达式较为复杂的时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论