软件工程7.实现课件

上传人:痛*** 文档编号:193889639 上传时间:2023-03-12 格式:PPT 页数:52 大小:304KB
返回 下载 相关 举报
软件工程7.实现课件_第1页
第1页 / 共52页
软件工程7.实现课件_第2页
第2页 / 共52页
软件工程7.实现课件_第3页
第3页 / 共52页
点击查看更多>>
资源描述
1234n理想标准:理想标准:u理想的模块化机制,以及可读性好的控制结构和数据结构;理想的模块化机制,以及可读性好的控制结构和数据结构;u完善的语言特点使编译程序能够尽可能多地发现程序中错误;完善的语言特点使编译程序能够尽可能多地发现程序中错误;u良好的独立编译机制。良好的独立编译机制。n实用标准:实用标准:u系统用户的要求:系统用户的要求:系统由用户负责维护,则选用用户熟悉的语系统由用户负责维护,则选用用户熟悉的语言书写程序;言书写程序;u用户应用环境可以使用的编译程序用户应用环境可以使用的编译程序限制了可以选用的语言;限制了可以选用的语言;u可以得到的软件工具:可以得到的软件工具:使用集成化的开发环境或者工具,容易使用集成化的开发环境或者工具,容易实现和验证目标系统;实现和验证目标系统;u工程规模:工程规模:基于软件规模,选择合适的程序设计语言;基于软件规模,选择合适的程序设计语言;u程序员的知识:程序员的知识:尽量选择开发团队内程序员共同熟悉的语言;尽量选择开发团队内程序员共同熟悉的语言;u软件可移植性要求:软件可移植性要求:满足系统的可移植的性能要求;满足系统的可移植的性能要求;u软件的应用领域:软件的应用领域:通用程序设计语言并不是对所有应用领域都通用程序设计语言并不是对所有应用领域都适用。因此,选择语言时应该充分考虑目标系统的应用范围。适用。因此,选择语言时应该充分考虑目标系统的应用范围。5n程序内部的文档:程序内部的文档:u标识符:标识符:确切的命名,并鲜明的标示所表示的程序对象;缩确切的命名,并鲜明的标示所表示的程序对象;缩写规则一致;写规则一致;u注释:注释:在每个模块开始处有一段序言性的注解,简要描述模块在每个模块开始处有一段序言性的注解,简要描述模块的功能、主要算法、接口特点、重要数据以及开发简史;的功能、主要算法、接口特点、重要数据以及开发简史;程序中间与一段程序代码有关的注解,主要解释包含这程序中间与一段程序代码有关的注解,主要解释包含这段代码的必要性;段代码的必要性;用空格或空行清楚地区分注解和程序。用空格或空行清楚地区分注解和程序。u布局:布局:利用适当的阶梯形式使程序的层次结构清晰明显。利用适当的阶梯形式使程序的层次结构清晰明显。n数据说明:数据说明:u数据说明的次序标准化;数据说明的次序标准化;u当多个变量名在一个语句中说明时,按字母顺序排列变量;当多个变量名在一个语句中说明时,按字母顺序排列变量;u对于复杂的数据结构,则通过注解说明实现这个数据结构的对于复杂的数据结构,则通过注解说明实现这个数据结构的方法和特点。方法和特点。6n语句构造:语句构造:u不要为节省空间而把多个语句写在同一行;不要为节省空间而把多个语句写在同一行;u尽量避免复杂的条件测试;尽量避免复杂的条件测试;u尽量减少对尽量减少对“非非”条件的测试;条件的测试;u避免大量使用循环嵌套和条件嵌套;避免大量使用循环嵌套和条件嵌套;u利用括号使逻辑表达式或算术表达式的运算次序清晰直观。利用括号使逻辑表达式或算术表达式的运算次序清晰直观。n输入输出:输入输出:u检验所有的输入数据的合法性;检验所有的输入数据的合法性;u保持输入格式简单;保持输入格式简单;u使用数据结束标记,不要求用户指定数据的数目;使用数据结束标记,不要求用户指定数据的数目;u明确提示交互式输入的请求,详细说明可用的选择或边界数明确提示交互式输入的请求,详细说明可用的选择或边界数值;值;u尽量保持输入格式一致;尽量保持输入格式一致;u设计良好的输出报表;设计良好的输出报表;u所有的输出数据加以说明。所有的输出数据加以说明。7n效率:效率:u程序运行时间:程序运行时间:简化算术的和逻辑的表达式;简化算术的和逻辑的表达式;仔细研究嵌套的循环,以确定是否有语句可以从内层往外移;仔细研究嵌套的循环,以确定是否有语句可以从内层往外移;尽量避免使用多维数组;尽量避免使用多维数组;尽量避免使用指针和复杂的表;尽量避免使用指针和复杂的表;使用执行时间短的算术运算;使用执行时间短的算术运算;不要混合使用不同的数据类型;不要混合使用不同的数据类型;尽量使用整数运算和布尔表达式;尽量使用整数运算和布尔表达式;使用有良好优化特性的编译程序,以自动生成高效目标代码。使用有良好优化特性的编译程序,以自动生成高效目标代码。u存储器效率:存储器效率:使用能保持功能域的结构化控制结构;使用能保持功能域的结构化控制结构;选用有紧缩存储器特性的编译程序,在必要时可以使用汇编语选用有紧缩存储器特性的编译程序,在必要时可以使用汇编语言;言;u输入输出效率:输入输出效率:所有输入输出都应该有缓冲,以减少用于通信的额外开销;所有输入输出都应该有缓冲,以减少用于通信的额外开销;对二级存储器对二级存储器(如磁盘如磁盘)应选用最简单的访问方法,以信息组为应选用最简单的访问方法,以信息组为单位进行。单位进行。89n测试是为了发现程序中的错误而执行程序的过测试是为了发现程序中的错误而执行程序的过程;程;n好的(成功的)测试(方案)是尽可能发现程好的(成功的)测试(方案)是尽可能发现程序中潜在的错误;序中潜在的错误;n软件测试的根本任务是尽可能多地发现并排除软件测试的根本任务是尽可能多地发现并排除软件中潜在的错误,以保证软件的质量。软件中潜在的错误,以保证软件的质量。n错误观念:错误观念:测试的目的是为了证明程序是正确测试的目的是为了证明程序是正确的。的。10n所有测试都应该能追溯到用户需求;所有测试都应该能追溯到用户需求;n应该在软件开发过程的初期就制定出测试计划;应该在软件开发过程的初期就制定出测试计划;n把把ParetoPareto原理应用到软件测试中。原理应用到软件测试中。ParetoPareto原理说明,原理说明,测试所发现的测试所发现的80%80%错误很可能是由程序中的错误很可能是由程序中的20%20%模块造模块造成的;成的;n从小规模测试开始,并逐步进行大规模测试;从小规模测试开始,并逐步进行大规模测试;n穷举测试是不可能的。穷举测试是不可能的。所谓穷举测试所谓穷举测试是指把程序的所是指把程序的所有可能执行路径都检查一遍的测试;有可能执行路径都检查一遍的测试;n为了达到最佳的测试效果,应该由独立的第三方从事为了达到最佳的测试效果,应该由独立的第三方从事测试工作。测试工作。所谓最佳测试效果所谓最佳测试效果是指最大可能性发现错是指最大可能性发现错误的测试。误的测试。11n黑盒测试(功能测试)黑盒测试(功能测试)u测试者完全不知道程序的内部结构和处理过程,测试者完全不知道程序的内部结构和处理过程,即相当于把程序看作一个黑盒子进行功能测试即相当于把程序看作一个黑盒子进行功能测试;u只检查程序功能是否能按照规格说明书的规定正只检查程序功能是否能按照规格说明书的规定正常使用。常使用。如:程序是否能适当地接收输入数据并如:程序是否能适当地接收输入数据并产生正确的输出信息;程序运行过程中能否保持产生正确的输出信息;程序运行过程中能否保持外部信息的完整性。外部信息的完整性。n白盒测试(结构测试)白盒测试(结构测试)u测试者完全知道程序的结构和处理算法,相当于测试者完全知道程序的结构和处理算法,相当于把程序看成装在一个透明的白盒子里把程序看成装在一个透明的白盒子里;u按照程序内部的逻辑测试程序,检测程序中的主按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。要执行通路是否都能按预定要求正确工作。121.1.模块测试模块测试/单元测试单元测试u目的:保证每个模块作为一个单元能正确目的:保证每个模块作为一个单元能正确运行;运行;u所发现的往往是编码和详细设计的错误。所发现的往往是编码和详细设计的错误。2.2.子系统测试子系统测试u经过单元测试的模块放在一起形成一个子经过单元测试的模块放在一起形成一个子系统来测试系统来测试;u着重测试模块的接口,即模块相互间的协着重测试模块的接口,即模块相互间的协调和通信。调和通信。133.3.系统测试系统测试/集成测试集成测试u经过测试的子系统装配成一个完整的系统经过测试的子系统装配成一个完整的系统来测试;来测试;u发现的往往是软件设计中的错误,也可能发现的往往是软件设计中的错误,也可能发现需求说明中的错误。发现需求说明中的错误。4.4.验收测试验收测试/确认测试确认测试u软件系统作为单一的实体进行测试软件系统作为单一的实体进行测试;u目的是验证系统确实能够满足用户的需要,目的是验证系统确实能够满足用户的需要,发现的往往是系统需求说明书中的错误。发现的往往是系统需求说明书中的错误。145.5.平行运行平行运行u所谓所谓平行运行平行运行是指同时运行新开发出来的是指同时运行新开发出来的系统和将被它取代的旧系统,以便比较新系统和将被它取代的旧系统,以便比较新旧两个系统的处理结果;旧两个系统的处理结果;u优点优点p在准生产环境中运行新系统,但没有风险;在准生产环境中运行新系统,但没有风险;p以准生产模式对新系统进行全负荷测试,可以以准生产模式对新系统进行全负荷测试,可以用测试结果验证性能指标;用测试结果验证性能指标;p用户能有一段时间熟悉、适应新系统;用户能有一段时间熟悉、适应新系统;p验证用户指南和使用手册之类的文档。验证用户指南和使用手册之类的文档。1516以详细设计说明书为指南,以详细设计说明书为指南,对模块的执行通路和功能进行测试。对模块的执行通路和功能进行测试。17n模块接口模块接口u参数的数目、次序、属性或单位系统与参数的数目、次序、属性或单位系统与变量是否一致;变量是否一致;u是否修改了只作输入用的变量;是否修改了只作输入用的变量;u全局变量的定义和用法在各个模块中是全局变量的定义和用法在各个模块中是否一致。否一致。n局部数据结构:局部数据结构:局部数据说明、初始化、局部数据说明、初始化、默认值等方面的错误;默认值等方面的错误;n重要的执行通路:重要的执行通路:选择最有代表性、最可选择最有代表性、最可能发现错误的执行通路进行测试,以发现能发现错误的执行通路进行测试,以发现由于错误的计算、不正确的比较或不适当由于错误的计算、不正确的比较或不适当的控制流而造成的错误;的控制流而造成的错误;18n出错处理通路:出错处理通路:防止下列现象的发生:防止下列现象的发生:u关于错误的描述难以理解;关于错误的描述难以理解;u描述的错误与实际遇到的错误不同;描述的错误与实际遇到的错误不同;u在对错误进行处理之前,错误条件已经在对错误进行处理之前,错误条件已经引起系统干预;引起系统干预;u对错误的处理不正确,或者不符合系统对错误的处理不正确,或者不符合系统的实际需要;的实际需要;u描述错误的信息不充分,难以帮助确定描述错误的信息不充分,难以帮助确定造成错误的位置。造成错误的位置。n边界条件:边界条件:使用处于边界条件(最大值、使用处于边界条件(最大值、最小值)的数据结构、控制量和数据值的最小值)的数据结构、控制量和数据值的测试方案,非常可能发现软件中的错误。测试方案,非常可能发现软件中的错误。19n定义:定义:由审查小组正式进行源程序的测试工作,属于由审查小组正式进行源程序的测试工作,属于人工测试范畴。人工测试范畴。n审查小组的构成:审查小组的构成:u组长;组长;u程序的设计者;程序的设计者;u程序的编写者;程序的编写者;u程序的测试者。程序的测试者。n审查过程:审查过程:u设计者介绍设计设计者介绍设计-编写者说明实现逻辑编写者说明实现逻辑-听取、并听取、并力求发现其中的错误力求发现其中的错误-组长记录错误;组长记录错误;u预演:测试者准备好测试方案,会上由其他成员模预演:测试者准备好测试方案,会上由其他成员模拟计算机执行被测试的程序。拟计算机执行被测试的程序。(主要是向程序员提(主要是向程序员提出关于其编写程序时所设的程序的逻辑和假设的疑出关于其编写程序时所设的程序的逻辑和假设的疑问,这样促进思考,可以发现更多的错误)问,这样促进思考,可以发现更多的错误)20n方法:方法:为每个单元测试开发驱动程序或者存根程序。为每个单元测试开发驱动程序或者存根程序。u驱动程序:驱动程序:即主程序,用来接收测试数据,将测试数据传送即主程序,用来接收测试数据,将测试数据传送给被测试的模块,并且打印有关的结果。给被测试的模块,并且打印有关的结果。u存根程序:存根程序:即虚拟子程序,用来代替(或者说是简单的模拟)即虚拟子程序,用来代替(或者说是简单的模拟)被测试的模块所调用的模块。被测试的模块所调用的模块。21TEST STUB (*测试正文编辑模块用的存根程序测试正文编辑模块用的存根程序*)初始化;初始化;输出信息输出信息“进入了正文编辑程序进入了正文编辑程序”;输出输出“输入的控制信息是输入的控制信息是”CFUNCT;输出缓冲区中的字符串;输出缓冲区中的字符串;IF CFUNCT=CHANGE THEN 把缓冲区中第二个字改为把缓冲区中第二个字改为*ELSE 在缓冲区的尾部加在缓冲区的尾部加?END IF;输出缓冲区中的新字符串;输出缓冲区中的新字符串;END TEST STUBTEST DRIVERTEST DRIVER (*测试正文编辑模块用的驱动程序测试正文编辑模块用的驱动程序*)说明长度为说明长度为25002500个字符的一个缓冲区;个字符的一个缓冲区;把把CFUNCTCFUNCT置为希望测试的状态;置为希望测试的状态;输入字符串;输入字符串;调用正文编辑模块;调用正文编辑模块;停止或再次初启;停止或再次初启;END TEST DRIVEREND TEST DRIVER2223先分别测试每个模块,先分别测试每个模块,再把所有模块按设计要求组装成所要再把所有模块按设计要求组装成所要的程序进行测试的程序进行测试每次增加一个模块,同每次增加一个模块,同已经测试好的那些模块结合起来进行已经测试好的那些模块结合起来进行测试。测试。实质是同时完成单元测试和集实质是同时完成单元测试和集成测试成测试。容易定位和改正错误。容易定位和改正错误。24从主控制模块开始,沿着程序的控制从主控制模块开始,沿着程序的控制层次向下移动(层次向下移动(深度优先、宽度优先深度优先、宽度优先),逐),逐渐结合各个模块,进行集成测试。渐结合各个模块,进行集成测试。n步骤:步骤:u对主控制模块进行测试(用对主控制模块进行测试(用存根程序存根程序代替代替所有直接附属于主控制模块的模块);所有直接附属于主控制模块的模块);u根据选定的结合策略根据选定的结合策略(深度优先或宽度优深度优先或宽度优先先),每次用一个实际模块代替一个存根,每次用一个实际模块代替一个存根程序;程序;u在结合一个模块的同时进行测试;在结合一个模块的同时进行测试;u可能需要进行可能需要进行回归测试回归测试。即:全部或部分。即:全部或部分地重复以前做过的测试。地重复以前做过的测试。2526n优点:优点:u不需要驱动程序;不需要驱动程序;u在测试早期检验主要控制或关键模块在测试早期检验主要控制或关键模块;u采用深度优先的集成方法,可以在早期实现采用深度优先的集成方法,可以在早期实现软件的一个完整的功能并且验证这个功能软件的一个完整的功能并且验证这个功能。n缺点:缺点:u需要存根程序;需要存根程序;u在测试初期,因存根程序代替低层次的模块,在测试初期,因存根程序代替低层次的模块,致使在软件结构中没有重要的数据自下往上致使在软件结构中没有重要的数据自下往上流流;u底层关键模块中的错误发现较晚。底层关键模块中的错误发现较晚。27n方法:方法:从原子模块从原子模块(即软件结构最低层的模即软件结构最低层的模块块)开始,由底部向上结合模块,进行组装开始,由底部向上结合模块,进行组装和测试。和测试。n步骤:步骤:u把底层模块组合成实现软件的某个把底层模块组合成实现软件的某个特定子特定子功能的族功能的族;u写一个写一个驱动程序驱动程序(用于测试的控制程序用于测试的控制程序),协调测试数据的输入和输出;协调测试数据的输入和输出;u测试由模块组成的子功能族;测试由模块组成的子功能族;u去掉驱动程序,沿软件结构自下向上移动,去掉驱动程序,沿软件结构自下向上移动,把子功能族组合起来形成更大的子功能族。把子功能族组合起来形成更大的子功能族。2829n改进的自顶向下集成测试方法改进的自顶向下集成测试方法:基本上使用自基本上使用自顶向下的测试方法,但是在早期使用自底向上顶向下的测试方法,但是在早期使用自底向上的方法测试软件中的少数关键模块。的方法测试软件中的少数关键模块。n混合集成测试方法:混合集成测试方法:对软件结构中较上层使用对软件结构中较上层使用自顶向下方法,对较下层使用自底向上方法。自顶向下方法,对较下层使用自底向上方法。30n定义:定义:在集成测试的范畴中,是指重新执行已在集成测试的范畴中,是指重新执行已经做过的测试的某个子集,以保证集成模块时经做过的测试的某个子集,以保证集成模块时所引起的变化没有带来非预期的副作用(所引起的变化没有带来非预期的副作用(非预非预期的软件行为、额外错误期的软件行为、额外错误)。)。n回归测试用例(回归测试用例(已执行过的测试用例的子集已执行过的测试用例的子集)u检测软件全部功能的代表性测试用例;检测软件全部功能的代表性测试用例;u针对性地测试可能受修改影响的软件功能的针对性地测试可能受修改影响的软件功能的用例;用例;u测试被修改过的软件成分的用例。测试被修改过的软件成分的用例。31n目的:目的:验证软件的有效性,又称为验收测试。验证软件的有效性,又称为验收测试。n基础:基础:软件需求规格说明书。软件需求规格说明书。n测试人员:测试人员:以用户为主,使用用户界面输入测试数以用户为主,使用用户界面输入测试数据并且分析评价测试的输出结果。据并且分析评价测试的输出结果。n方法:方法:黑盒测试法。黑盒测试法。n测试内容测试内容:功能、性能、软件配置。:功能、性能、软件配置。n典型的确认测试方法典型的确认测试方法uAlphaAlpha测试:测试:由用户在开发者的场所进行,并且由用户在开发者的场所进行,并且在开发者对用户的指导下进行测试;开发者负责在开发者对用户的指导下进行测试;开发者负责记录发现的错误和使用中遇到的问题。记录发现的错误和使用中遇到的问题。uBetaBeta测试:测试:由软件的多个最终用户在一个或多个由软件的多个最终用户在一个或多个客户场所进行;用户记录在测试过程中遇到的一客户场所进行;用户记录在测试过程中遇到的一切问题(真实的或建议性的),并且定期把这些切问题(真实的或建议性的),并且定期把这些问题报告给开发者。问题报告给开发者。32n逻辑覆盖测试逻辑覆盖测试u语句覆盖语句覆盖u判定覆盖判定覆盖u条件覆盖条件覆盖u判定判定/条件覆盖条件覆盖u条件组合覆盖条件组合覆盖u点覆盖点覆盖u边覆盖边覆盖u路径覆盖路径覆盖n控制结构测试控制结构测试u基本路径测试基本路径测试u条件测试条件测试u循环测试循环测试33语句覆盖:语句覆盖:选择足够多的测试数据,使被测程序选择足够多的测试数据,使被测程序中每个语句至少执行一次。中每个语句至少执行一次。34判定(分支)覆盖:判定(分支)覆盖:每个语句必须至少执行一次,每个语句必须至少执行一次,而且每个判定表达式的每种可能的结果(而且每个判定表达式的每种可能的结果(整个判整个判定表达式的值定表达式的值)都应该至少执行一次,即:每个)都应该至少执行一次,即:每个判定的每个分支都至少执行一次。判定的每个分支都至少执行一次。条件覆盖:条件覆盖:每个语句至少执行一次,而且使判定每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。表达式中的每个条件都取到各种可能的结果。判定判定/条件覆盖:条件覆盖:选取足够多的测试数据,使得选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。而且每个判定表达式也都取到各种可能的结果。条件组合覆盖:条件组合覆盖:选取足够多的测试数据,使得每选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现个判定表达式中条件的各种可能组合都至少出现一次。一次。35点覆盖:点覆盖:如果连通图如果连通图G G的子图的子图GG是连通的,而且是连通的,而且包含包含G G的所有结点,则称的所有结点,则称GG是是G G的点覆盖。的点覆盖。选取选取足够多的测试数据,使得程序执行路径至少经过足够多的测试数据,使得程序执行路径至少经过流图的每个结点一次。流图的每个结点一次。边覆盖:边覆盖:如果连通图如果连通图G G的子图的子图GG是连通的,而且是连通的,而且包含包含G G的所有边,则称的所有边,则称GG是是G G的边覆盖。的边覆盖。选取足选取足够多测试数据,使得程序执行路径至少经过流图够多测试数据,使得程序执行路径至少经过流图中每条边一次。中每条边一次。路径覆盖:路径覆盖:选取足够多测试数据,使程序的每条选取足够多测试数据,使程序的每条可能路径都至少执行一次;如果程序图中有环,可能路径都至少执行一次;如果程序图中有环,则要求每个环至少经过一次则要求每个环至少经过一次。36n根据过程设计结果画出相应的流图根据过程设计结果画出相应的流图;n计算流图的环形复杂度;计算流图的环形复杂度;n确定独立路径的基本集合;确定独立路径的基本集合;u所谓独立路径所谓独立路径是指至少引入程序的一个新处理语是指至少引入程序的一个新处理语句集合或一个新条件的路径;句集合或一个新条件的路径;u用用流图流图术语描述,术语描述,独立路径独立路径是指至少包含一条在是指至少包含一条在定义该路径之前不曾用过的边。定义该路径之前不曾用过的边。n设计可强制执行基本集合中每条路径的测试用例。设计可强制执行基本集合中每条路径的测试用例。37PROCEDURE average1:1:i=1;sum=0;i=1;sum=0;total.input=total.valid=0;total.input=total.valid=0;2:2:DO WHILE valueDO WHILE valuei i -999-9993:3:AND total.input100 AND total.input=minimum=minimum6:6:AND value AND valuei i=maximum0IF total.valid011:11:THEN average=sum/total.valid;THEN average=sum/total.valid;12:12:ELSE average=-999;ELSE average=-999;13:13:ENDIFENDIFEND averageEND average38路径路径1:12101113测试用例测试用例:valuek有效输入值;有效输入值;valuei-999 且且2=i=100.预期结果预期结果:基于:基于k的正确平均值和总数的正确平均值和总数.路径路径2:12101213测试用例测试用例:value1-999预期结果预期结果:average-999.路径路径3:123101113测试用例测试用例:试图数试图数101个或者更多个值个或者更多个值.预期结果预期结果:前:前100个数中有效数的平均值个数中有效数的平均值.路径路径4:12345892.测试用例测试用例:valuei有效输入值,有效输入值,且且i100.valuekminimum,且且ki.预期结果预期结果:基于:基于k的正确平均值和总数的正确平均值和总数.路径路径5:123456892.测试用例测试用例:valuei有效输入值,有效输入值,且且imaximum,且且ki.预期结果预期结果:基于:基于k的正确平均值和总数的正确平均值和总数.路径路径6:1234567892.测试用例测试用例:valuei有效输入值,有效输入值,且且i),(t,),(t,=),(),(=,=),(),(=,)40n目的:目的:专注于测试循环结构的有效性专注于测试循环结构的有效性;n循环结构的分类:循环结构的分类:简单循环、串接循环、嵌套循环。简单循环、串接循环、嵌套循环。41n简单循环测试集:简单循环测试集:u跳过循环;跳过循环;u只通过循环一次;只通过循环一次;u通过循环两次;通过循环两次;u通过循环通过循环m m次,其中次,其中mn-1mn-1;u通过循环通过循环n-1,n,n+1n-1,n,n+1次。次。n嵌套循环测试集:嵌套循环测试集:u从最内层循环开始测试,把所有其他循环都设置为最小值从最内层循环开始测试,把所有其他循环都设置为最小值;u对最内层循环使用简单循环测试方法,同时使外层循环的迭代对最内层循环使用简单循环测试方法,同时使外层循环的迭代参数取最小值,并为越界值或非法值增加一些额外的测试参数取最小值,并为越界值或非法值增加一些额外的测试;u由内向外,对下一个循环进行测试,但保持所有其他外层循环由内向外,对下一个循环进行测试,但保持所有其他外层循环为最小值,其他嵌套循环为为最小值,其他嵌套循环为“典型典型”值值;u直到测试完所有循环直到测试完所有循环。n串接循环测试集:串接循环测试集:u串接循环的各个循环彼此独立,则使用简单循环测试的方法;串接循环的各个循环彼此独立,则使用简单循环测试的方法;u串接循环的各个循环彼此依赖,则使用嵌套循环的测试方法;串接循环的各个循环彼此依赖,则使用嵌套循环的测试方法;42u功能的正确性、完整性;功能的正确性、完整性;u性能;性能;u界面;界面;u数据结构、外部数据库的访问;数据结构、外部数据库的访问;u程序的初始化和终止操作。程序的初始化和终止操作。u有效的测试系统的每个功能;有效的测试系统的每个功能;u覆盖系统输入数据的类型,数据类的边界;覆盖系统输入数据的类型,数据类的边界;u测试数据的特定值及其组合对系统运行产生的影响;测试数据的特定值及其组合对系统运行产生的影响;u测试系统能承受的数据率和数据量。测试系统能承受的数据率和数据量。43基于程序的输入域划分为若干个数据类,据此导出测试基于程序的输入域划分为若干个数据类,据此导出测试用例,以发现程序中潜在的错误用例,以发现程序中潜在的错误把所有可能的输入数据把所有可能的输入数据(有效的和无效的有效的和无效的)划分划分成若干个等价类,成若干个等价类,从每个等价类中只取一组数据作为测试从每个等价类中只取一组数据作为测试数据数据。u输入值的范围确定:输入值的范围确定:一个有效的等价类一个有效的等价类(输入值在此范围输入值在此范围内内)、两个无效的等价类、两个无效的等价类(输入值小于最小值,大于最大值输入值小于最小值,大于最大值);u输入数据的个数确定:输入数据的个数确定:一个有效的等价类(输入个数等于一个有效的等价类(输入个数等于确定值)和两个无效的等价类(输入个数小于、大于确定确定值)和两个无效的等价类(输入个数小于、大于确定值);值);u不同输入值具有不同的处理:不同输入值具有不同的处理:每个允许的输入值对应一个每个允许的输入值对应一个有效的等价类、一个无效的等价类有效的等价类、一个无效的等价类(任一个不允许的输入任一个不允许的输入值值);u遵循一定规则的输入数据:遵循一定规则的输入数据:划分一个符合规则的有效等价划分一个符合规则的有效等价类、若干个无效的等价类类、若干个无效的等价类(从各种不同角度违反规则从各种不同角度违反规则);u整型输入数据:整型输入数据:正整数、零和负整数正整数、零和负整数3 3个有效类;个有效类;u表格:表格:空表、含一项或多项的表。空表、含一项或多项的表。44u1 16 6个数字字符组成的数字串个数字字符组成的数字串(最高位数字不是零最高位数字不是零);u最高位数字是零的数字串;最高位数字是零的数字串;u最高位数字左邻是正号的数字串最高位数字左邻是正号的数字串u最高位数字左邻是负号的数字串。最高位数字左邻是负号的数字串。u空字符串空字符串(全是空格全是空格);u字符串长度大于字符串长度大于6 6个;个;u字符串含有非数字字符:空格、非正字符串含有非数字字符:空格、非正/负号字符;负号字符;u在计算机能表示的最小负整数和零之间的负整数;在计算机能表示的最小负整数和零之间的负整数;u零;零;u在零和计算机能表示的最大正整数之间的正整数。在零和计算机能表示的最大正整数之间的正整数。u比计算机能表示的最小负整数还小的负整数;比计算机能表示的最小负整数还小的负整数;u比计算机能表示的最大正整数还大的正整数。比计算机能表示的最大正整数还大的正整数。45u确定输入确定输入/输出值的边界;输出值的边界;u选取刚好选取刚好等于、稍小于和稍大于等于、稍小于和稍大于边界值,边界值,或者或者最大值、最小值最大值、最小值的数据作为测试数据的数据作为测试数据。u字符串长度:字符串长度:0 0、1 1、5 5、6 6、7 7;u最大输出值最大输出值32767:32766、32767、32768;u最小输出值最小输出值-32768:-32767、-32768、-32769;46列举程序中可能有的错误和容易发列举程序中可能有的错误和容易发生错误的特殊情况,并以此设计相应的测生错误的特殊情况,并以此设计相应的测试用例试用例u输入数据为零或输出数据为零;输入数据为零或输出数据为零;u输入或输出的数目允许变化,特别是当输入或输出的数目允许变化,特别是当输入或输出的数目为输入或输出的数目为0 0和和1 1的情况;的情况;u多个输入数据的组合;多个输入数据的组合;u共享变量的模块。共享变量的模块。47图图7.8 7.8 调试过程调试过程48n调试目标调试目标:调试的目标都是寻找软件错误的原因并改正错误。:调试的目标都是寻找软件错误的原因并改正错误。n调试途径调试途径:u蛮干法蛮干法:按照:按照“由计算机自己寻找错误由计算机自己寻找错误”的策略,跟踪运行过程的策略,跟踪运行过程并内存的内容,即:在程序中写入需要的并内存的内容,即:在程序中写入需要的WRITEWRITE(输出)语句,(输出)语句,并分析这些输出信息,以发现错误原因的线索。并分析这些输出信息,以发现错误原因的线索。u回溯法回溯法:从发现症状的地方开始,人工沿程序的控制流往回追踪:从发现症状的地方开始,人工沿程序的控制流往回追踪分析源程序代码,直到找出错误原因为止。分析源程序代码,直到找出错误原因为止。u原因排除法原因排除法p对分查找法对分查找法:确定变量在程序内关键点的正确值,在程序中:确定变量在程序内关键点的正确值,在程序中关键点附近关键点附近“注入注入”这些变量的正确值,然后运行程序并检这些变量的正确值,然后运行程序并检查所得到的输出。如果输出结果是正确的,则错误原因在程查所得到的输出。如果输出结果是正确的,则错误原因在程序的前半部分;反之,错误原因在程序的后半部分。对错误序的前半部分;反之,错误原因在程序的后半部分。对错误原因所在的那部分再重复使用这个方法,直到把出错范围缩原因所在的那部分再重复使用这个方法,直到把出错范围缩小到容易诊断的程度为止。小到容易诊断的程度为止。p归纳法归纳法:组织并分析与错误有关的数据组织,以确定可能发:组织并分析与错误有关的数据组织,以确定可能发生错误的原因;导出对错误原因的一个或多个假设,并利用生错误的原因;导出对错误原因的一个或多个假设,并利用已有的数据来证明或排除这些假设。已有的数据来证明或排除这些假设。p演绎法演绎法:设想出所有可能的出错原因,然后试图用测试来排:设想出所有可能的出错原因,然后试图用测试来排除每一个假设的原因;如果测试表明某个假设的原因可能是除每一个假设的原因;如果测试表明某个假设的原因可能是真的原因,则对测试数据进行细化以准确定位错误。真的原因,则对测试数据进行细化以准确定位错误。49n调试注意事项:调试注意事项:u确定错误的原因和位置,考虑下列情况:确定错误的原因和位置,考虑下列情况:p产生错误位置和原因可能在程序中相距甚产生错误位置和原因可能在程序中相距甚远;远;p错误现象不能重现;错误现象不能重现;p错误现象时有时无;错误现象时有时无;p所发现的所发现的“错误错误”不是真正的错误,如舍不是真正的错误,如舍入误差、人为操作引起的。入误差、人为操作引起的。u修改一个错误时,考虑:修改一个错误时,考虑:程序中是否存在同样程序中是否存在同样的错误;是否会引起新的错误的错误;是否会引起新的错误。u分析发生错误的原因,避免再犯同样错误。分析发生错误的原因,避免再犯同样错误。50n软件可靠性:软件可靠性:程序在给定的时间间隔内,按程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。照规格说明书的规定成功地运行的概率。n软件可用性:软件可用性:程序在给定的时间点,按照规程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。格说明书的规定,成功地运行的概率。可靠性表示在可靠性表示在0 0到到t t这段时间间隔这段时间间隔内系统没有失效;可用性只表示在时刻内系统没有失效;可用性只表示在时刻t t,系统是正常运行的。系统是正常运行的。平均无故障时间平均无故障时间MTTFMTTF:系统按规系统按规格说明书规定成功地运行的平均时间,主要格说明书规定成功地运行的平均时间,主要取决于系统中潜伏的错误的数目。取决于系统中潜伏的错误的数目。51n编码:编码:确定程序设计语言,遵循程序设计确定程序设计语言,遵循程序设计风格,实现系统功能的具体编码,并进行风格,实现系统功能的具体编码,并进行各个模块的单元测试;各个模块的单元测试;n测试:测试:系统系统/集成测试、确认测试;集成测试、确认测试;n测试策略:测试策略:白盒测试、黑盒测试;白盒测试、黑盒测试;n调试:调试:分析发生错误的原因和位置,并修分析发生错误的原因和位置,并修改错误;改错误;n软件的可靠性、可用性软件的可靠性、可用性52nP174 4P174 4(1 1,3 3);nP175 5P175 5(1 1,2 2)。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!