版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学习内容6.1软件项目的编码6.2软件测试概述6.3软件测试的方法和步骤6.4
面向对象的测试
6.5
软件调试技术6.6案例分析——软件测试计划和测试报告项目六软件项目的编码与测试软件项目的编码与测试项目六本章要点
掌握软件编码的编码原则,了解编码风格掌握软件测试的目标与原则;
理解软件测试方法;
掌握静态测试方法与动态测试方法掌握黑盒测试和白盒测试用例设计理解软件测试的步骤和策略;
了解软件测试工具;
了解软件调试概念;
了解面向对象软件测试的特点。6.1软件项目的编码项目6软件编码就是选择某种程序设计语言,按照编程规范,将详细设计的结果变换成用某种程序设计语言编写的可在计算机上编译执行的具体程序的过程。程序设计语言的特性必然影响到翻译和通信过程的质量和效率。因此选择程序设计语言就显得重要了。6.1.1程序设计语言6.1软件项目的编码项目61.程序设计语言的分类机器语言汇编语言高级语言第四代语言(4GL)
6.1.1程序设计语言6.1软件项目的编码项目62.程序设计语言的选择程序设计语言的选择常从以下几个方面考虑:选用的程序设计语言应该有理想的模块化机制。项目的应用领域。
算法和计算复杂性
软件的执行环境。可移植性。
程序设计人员的水平。6.1.1程序设计语言6.1软件项目的编码项目六(1)编写易于修改和维护的代码。编码阶段,在设计基础上对程序进行进一步的数据和操作的分离有利于代码和数据的单独改变。(2)编写易于测试的代码。在编码阶段对代码的可测试性进行考虑可以减少测试阶段的工作量。以条件编译和注释的方法融入源代码中,是一种有效的增加代码可测试性的手段。(3)编写详细的程序文档。程序文档一般指以注释的形式嵌入程序中的代码描述。程序文档应该包括以下内容:代码的功能:代码的完成者;代码在整个软件系统中的位置;代码编制、复审时间;保留代码的原因;代码中如何使用数据结构和算法。(4)编程中采用统一的标准和约定,降低程序的复杂性。软件组织通常会制定“编码规范”,程序员在编写代码时,必须严格按照“编码规范”编写代码。6.1.2编码原则6.1软件项目的编码项目六源程序的风格统一与否直接影响着软件的可维护性、可读性的好坏。源程序的编码风格已经成为软件项目的一个重要组成部分。从20世纪70年代以来,编码的目标从强调效率转变到强调清晰。与此相应,编码风格也从追求“技巧”,变为提倡“简明”和“直接”。现在的编码风格主要以可理解性、可修改性和可测试性为主要目标。6.1.3编码风格6.1软件项目的编码项目六程序编码风格包括如下要求:1.使用好程序内部的文档。为了提高程序的可维护性,源代码也需要实现文档化。标识符要见名知意。要有适当的程序注释。注释分为序言性注释和功能性注释。序言性注释通常置于每个程序模块开头的部分,给出程序的整体说明,功能性注释嵌在源程序中,用以描述其后的语句或程序段是在做什么工作。2.数据说明原则数据说明的次序应当规范化,使数据属性容易查找,也有利于测试和维护。3.语句结构的规则代码书写时语句要有缩进。缩进可以清楚地定义一个控制块从哪里开始,到哪里结束。
4.输入输出规则对于批处理的输入和输出,应该按照逻辑顺序的要求组织输入数据,有合理的输出报告格式。对于交互式的输入和输出而言,应有简单而带提示的输入方式。6.1.3编码风格6.1软件项目的编码项目六尽管效率是值得追求的目标,但不应为了非必需的效率提高而牺牲代码的清晰性、可读性和正确性。软件效率应以需求为准。提高代码效率。例如,简化自述和逻辑的表达式,尽量使用整数表达式和布尔表达式。提高存储器效率。将程序功能合理分块,使每个模块或一组密切相关模块的程序体积大小与每页的容量相匹配,可减少页面调度、减少内外存交换。提高存储器效率。选择可生成较短目标代码且存储压缩性能优良的编译程序。输入/输出的效率所有输入/输出都应该有缓冲,以减少过多的通信次数。6.1.4程序效率6.1软件项目的编码项目六程序复杂性指模块内程序的复杂性。它直接关联到软件开发费用的多少,开发周期的长短和软件内部潜伏错误的多少。程序复杂性度量方法:(1)代码行度量法即统计程序的源代码行数。此方法基于两个前提:程序复杂性随着程序规模的增加不均衡地增长;控制程序规模的方法最好是采用分而治之的办法。
(2)McCabe度量法一种基于程序控制流的复杂性度量方法。
6.1.5程序复杂性度量6.2软件测试概述项目六早期的软件开发软件规模都很小、复杂程度低,测试的含义比较狭窄,开发人员将测试等同于“调试”,目的是纠正软件中已经知道的故障,常常由开发人员自己完成这部分的工作。
1957年,软件测试才开始与调试区别开来,作为一种发现软件缺陷的活动。但是测试通常被做为软件生命周期中最后一项活动而进行,并且也缺乏有效的测试方法.到了上世纪80年代初期,软件和IT行业进入了大发展,软件趋向大型化、高复杂度,软件的质量越来越重要.软件测试定义发生了改变,测试不单纯是一个发现错误的过程,软件测试已有了行业标准(IEEE/ANSI)6.2软件测试概述项目六软件测试的目标是尽可能早地找出软件中潜在的各种错误和缺陷,并确保其得以修复,最终将高质量的软件系统交给用户。软件测试就是在软件投入使用前,对软件的需求分析、设计规格说明和系统编码的最终复审。
6.2.1
软件测试的目标
6.2软件测试概述项目六
1.软件测试的特点软件测试的开销大,软件测试的开销大约点总成本的30%-50%。2.软件测试的原则(1)所有的测试都应追溯到用户需求。(2)应当把“尽早地和不断地进行软件测试”作为软件测试者的座右铭。(3)pareto原则:测试发现的错误中80%很可能起源于20%的模块中。(4)完全测试是不可能的,测试需要终止。(5)应由独立的第三方来构造测试。(6)充分注意测试中的群集现象。(7)尽量避免测试的随意性。(8)兼顾合理的输入和不合理的输入数据。(9)程序修改后要回归测试(10)应长期保留测试用例,直至系统废弃。6.2.2
软件测试的特点和原则6.3软件测试的方法和步骤项目六
1.静态测试方法静态测试是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。(1)代码检查。代码检查是白盒测试的一种静态测试方法,传统的代码检查是通过人工阅读代码的方式,检查软件设计的正确性.在实践中,代码检查比动态测试更有效率,能找到更多的缺陷,通常能发现30%~70%的逻辑设计和编码缺陷。
代码检查包括代码走查、桌面检查、代码审查等
.代码走查就是针对代码,在假想的输入情况下,逐行的浏览代码,走查代码中潜在的缺陷并记录结果的过程。
桌面检查是一种传统的检查方法,由程序员检查自己编写的程序。程序员在程序通过编译之后对源代码代码进行分析、检验,并补充相关的文档,目的是发现程序中的错误。代码审查是由一组人通过阅读、讨论和争议对程序进行静态分析的过程,以小组会的方式进行。
6.3.1
静态测试方法6.3软件测试的方法和步骤
项目六(2)静态结构分析
静态结构分析主要是以图形的方式表现程序的内部结构
.静态结构分析是测试者通过使用测试工具分析程序源代码的系统结构、数据结构、数据接口、内部控制逻辑等内部结构.静态结构主要分析以下内容:检查函数的调用关系是否正确。是否存在孤立的函数没有被调用。明确函数被调用的频繁度,对调用频繁的函数可以重点检查。6.3.1
静态测试方法6.3软件测试的方法和步骤
项目六(3)代码质量度量
软件的质量用以下几个方面来衡量,即功能性、可靠性、可用性、有效性、可维护性、可移植性。具体到静态测试,这里主要关注的是可维护性。要衡量软件的可维护性,可以从四个方面去度量,即可分析性(Analyzability)、可改变性(Changeability)、稳定性(Stability)以及可测试性(Testability)。6.3.1
静态测试方法6.3软件测试的方法和步骤
项目六2.静态测试阶段的任务
(
1)检查算法的逻辑正确性。(2)检查模块接口的正确性。(3)检查输入参数是否有合法性检查。(4)检查调用其他模块的接口是否正确。(5)检查是否设置了适当的出错处理。(6)检查表达式、语句是否正确,是否含有二义性。(7)检查常量或全局变量使用是否正确。(8)检查标识符的使用是否规范、一致。(9)检查程序风格的一致性、规范性。(10)检查代码是否可以优化,算法效率是否最高。(11)检查代码注释是否完整,是否正确反映了代码的功能
.6.3.1
静态测试方法6.3软件测试的方法和步骤
项目六软件的动态测试,就是通过运行软件来检验软件的动态行为和运行结果的正确性。动态测试方法中根据测试用例的设计方法不同,分为黑盒测试与白盒测试两大类。1.黑盒测试黑盒测试法把被测试对象看成一个黑盒子,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求。
通过黑盒测试主要发现以下错误:
(1)是否有不正确或遗漏了的功能。(2)在接口上,能否正确地接受输入数据,能否产生正确的输出信息。(3)访问外部信息是否有错。(4)性能上是否满足要求等等。2.白盒测试白盒测试把测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,对程序中尽可能多的逻辑路径进行测试,检查内部控制结构和数据结构是否有错.白盒测试是结构测试,所以被测对象基本上是源程序,以程序的内部逻辑为基础设计测试用例。6.3.2
动态测试方法6.3软件测试的方法和步骤
项目六表6-1白盒测试与黑盒测试比较6.3.2
动态测试方法白盒测试黑盒测试测试依据程序内部结构软件规格说明优点能对程序内部的特定部位进行覆盖能站在用户立场上进行测试缺点(1)无法检测程序本身逻辑错误(2)无法对未实现规格说明的程序部分进行测试(1)不能测试程序内部特定部位(2)发现不了规格说明错误或程序超出规格说明的行为6.3软件测试的方法和步骤
项目六6.3.3
软件测试的步骤和策略
软件测试需要经过单元测试、集成测试、系统测试和验收测试(确认测试)四个步骤。1.单元测试测试内容:单元测试主要针对模块的以下五个基本特征进行测试:模块接口:主要检查数据能否正确地通过模块。
局部数据结构:说明不正确或不一致;初始化或缺省值错误;变量名未定义或拼写错误
等等。重要的执行路径:重要模块要进行基本路径测试
错误处理:主要测试程序对错误处理的能力
边界条件:程序最容易在边界上出错,如输入/输出数据的等价类边界,选择条件和循环条件的边界,复杂数据结构(如表)的边界等等都应进行测试。
测试方法:在单元测试时,需要为被测模块设计驱动模块(Drive)和桩(Sub)模块。驱动模块的作用是用来模拟被测模块的上级调用模块,功能要比真正的上级模块简单得多,它只完成接受测试数据,以上级模块调用被测模块的格式驱动被测模块,接收被测模块的测试结果并输出。桩模块用来代替被测试模块所调用的模块。它的作用是返回被测模块所需的信息。6.3软件测试的方法和步骤
项目六6.3.3
软件测试的步骤和策略2.集成测试集成测试是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试,故也称组装测试或联合测试。集成测试的方法有两种:非渐增式测试和渐增式测试。集成测试的优点,可以并行测试所有模块;需要的测试用例数目少;测试方法简单、易行。集成测试的缺点,由于不可避免存在模块间接口、全局数据结构等方面的问题,所以一次运行成功的可能性不大;如果一次集成的模块数量多,集成测试后可能会出现大量的错误。6.3软件测试的方法和步骤
项目六6.3.3
软件测试的步骤和策略2.系统测试系统测试是将集成好的软件系统,作为整个基于计算机系统的一个元素,与计算机硬件、外设、支持软件、数据等其它系统元素结合在一起,在实际运行(使用)环境下所进行的一系列测试活动。系统测试方法有以下几种:强度测试是要检查在系统运行环境不正常乃至发生故障的情况下,系统可以运行到何种程度的测试。
性能测试是要检查系统是否满足在需求说明书中规定的性能,特别是对于实时系统或嵌入式系统。
恢复测试是要证实在克服硬件故障(包括掉电、硬件或网络出错等)后,系统能否正常地继续进行工作,并不对系统造成任何损害。
6.3软件测试的方法和步骤
项目六6.3.3
软件测试的步骤和策略安全性测试是要检验在系统中已经存在的系统安全性、保密性措施是否发挥作用,有无漏洞,以检查系统对非法侵入的防范能力。可靠性测试是为了检验系统的可靠性是否达到预期目标而进行的测试。安装测试就是要找出安装过程中出现的错误,验证成功安装系统的能力。容量测试是根据预先分析出的某项指标极限值,测试系统在其极限值状态下是否能保持正常运行。文档测试检查用户文档的清晰性和精确性。6.3软件测试的方法和步骤
项目六6.3.3
软件测试的步骤和策略
4.确认测试确认测试检查软件的功能与性能是否与需求规格说明书中确定的指标相符合。确认测试阶段有两项工作:进行确认测试与软件配置审查。进行确认测试。确认测试一般在模拟环境下运用黑盒测试方法,由专门测试人员和用户参加的测试。
软件配置审查。软件配置审查的任务是检查软件的所有文档资料的完整性、正确性
6.4面向对象的测试
项目六6.4.1
面向对象测试的方法
1.基于故障的测试
2.基于场景的测试
3面向对象类的随机测试。
4.类层次的分割测试。
5.由行为模型(状态、活动、顺序和合作图)导出的测试。6.4面向对象的测试
项目六6.4.2面向对象测试的策略
1.面向对象测试的分类
(1)面向对象分析的测试、面向对象设计的测试:是对分析结果和设计结果的测试,主要对分析设计产生的文本进行的,是软件开发前期的关键性测试。(2)面向对象编程的测试:对编程风格和程序代码实现进行测试,主要的测试内容在面向对象单元测试和面向对象集成测试中体现。(3)面向对象单元测试:对程序内部具体单一的功能模块的测试,主要对类成员函数的测试,是面向对象集成测试的基础。(4)面向对象集成测试:对系统内部的相互服务进行测试,如成员函数间的相互作用,类间的消息传递。不仅要基于面向对象单元测试,还要参考面向对象设计、面向对象设计的测试的结果。
(5)面向对象确认测试、面向对象系统测试:最后阶段的测试,以用户需求为测试标准,借鉴面向对象分析、面向对象分析的测试的结果。6.4面向对象的测试
项目六6.4.2
面向对象测试的策略
1.面向对象软件的测试策略
(1)面向对象分析的测试面向对象分析,是把E-R图和语义网络模型,即信息造型中的概念,与面向对象程序设计语言中的重要概念结合在一起而形成的分析方法。面向对象分析的测试划分的五个方面是对认定的对象的测试、对认定的结构的测试、对认定的主题的测试、对定义的属性和实例关联的测试、对定义的服务和消息关联的测试。(2)面向对象设计的测试面向对象设计采用‘造型的观点’,以面向对象分析为基础归纳出类,并建立类结构或进一步构造类库,以实现分析结果对问题空间的抽象。
面向对象设计测试划分的三个方面,认定的类的测试,构造的类的层次结构测试,类库支持的测试。6.4面向对象的测试
项目六6.4.2
面向对象测试的策略
(3)面向对象编程的测试。测试重点忽略类功能实现的细则,将测试的目光集中在类功能的实现和相应的面向对象程序风格上。具体测试类的封装、类的功能。(4)面向对象软件的单元测试可以将一些传统的单元测试方法在面向对象软件的单元测试中使用,如等价类划分、因果图、边界值分析法、逻辑覆盖法、路径分析法、程序插桩法,单元测试一般建议由程序员完成。(5)面向对象软件的集成测试面向对象软件的集成测试需要在整个程序编译完成后进行,面向对象程序具有动态特性,程序的控制流无法确定,只能对编译完成的程序做基于黑盒子的集成测试。面向对象软件的集成测试两种策略,基于线程的测试,基于使用的测试。面向对象软件的集成测试目的是能够检测出相对独立的,单元测试无法检测出的,那些类相互作用时才会产生的错误,只关注于系统的结构和内部的相互作用。面向对象软件的集成测试过程,第一步,静态测试,针对程序的结构进行,检测程序结构是否符合设计要求。第二步,动态测试,根据静态测试得出的函数功能调用关系图或类关系图作为参考,设计测试用例,达到测试覆盖标准。
6.4面向对象的测试
项目六6.4.2
面向对象测试的策略
(6)面向对象软件的确认和系统测试通过单元测试和集成测试,仅能保证软件开发的功能得以实现。但不能确认在实际运行时,它是否满足用户的需要,是否大量存在实际使用条件下会被诱发产生错误的隐患。为此,对完成开发的软件必须经过规范的系统测试。系统测试需要测试它与系统其他部分配套运行的表现,以确保在系统各部分协调工作的环境下软件也能正常运行。
6.4面向对象的测试
项目六6.4.3
面向对象设计的测试用例
应当为每个测试用例开发一个测试步骤列表,列表包含内容:列出所要测试对象的说明。列出将要作为测试结果的消息和操作。列出测试对象可能发生的例外情况。列出外部条件,为了正确对软件进行测试所必须有的外部环境的变化。列出为了帮助理解和实现测试所需要的附加信息。
6.4面向对象的测试
项目六6.4.4自动化测试工具简介
1.自动化测试工具的分类。根据测试方法的不同,自动化测试工具可以分为白盒测试工具、黑盒测试工具和测试管理工具。
图6-1测试工具与开发过程关系图6.4面向对象的测试
项目六6.4.4自动化测试工具简介
(1)白盒测试工具白盒测试工具一般是针对代码进行测试,测试中发现的缺陷可以定位到代码级。根据测试工具的工作原理的不同,白盒测试工具又可以分为静态测试工具和动态测试工具。静态测试工具直接对代码进行分析,不需要运行代码,也不需要对代码编译链接、生成可执行文件。静态测试工具的代表有Telelogic公司的Logiscope软件、PR公司的PRQA软件。动态测试工具需要实际运行被测系统,并设置断点,向代码生成的可执行文件中插入一些监测代码,掌握断点这一时刻程序运行数据。动态测试工具的代表有Compuware公司的DevPartner软件、Rational公司的Purify软件。
6.4面向对象的测试
项目六6.4.4自动化测试工具简介
(2)黑盒测试工具黑盒测试工具的一般原理是利用脚本的录制(Record)/回放(Playback),模拟用户的操作,然后将被测系统的输出记录下来同预先给定的标准结果比较。黑盒测试工具可以大大减轻黑盒测试的工作量,在迭代开发的过程中,能够很好地进行回归测试。黑盒测试工具的代表有Rational公司的TeamTest、Compuware公司的QACenter。
6.4面向对象的测试
项目六6.4.4自动化测试工具简介
2.常见自动化测试工具介绍RationalRobotRationalRobot可以对在各种独立开发环境(IDE)中开发的应用程序,创建、修改并执行功能测试、分布式功能测试、回归测试以及整合测试,记录并回放能识别业务应用程序对象的测试脚本,可以快速、有效地跟踪、报告与质量保证测试相关的所有信息,并将这些信息绘制成图表。WinRunnerMercuryInteractive公司的WinRunner是一种企业级的用于检验应用程序是否如期运行的功能性测试工具。通过自动捕获,检测和模拟用户交互的操作,WinRunner能够辨认缺陷并且确保那些跨越多个应用程序和数据库的业务流程在初次发布就能避免出现故障,并且保持长期可靠运行。LoadRunnerMercuryInteractive的LoadRunner是一种适用于企业级系统、各种体系架构的自动负载测试工具,通过模拟实际用户的操作行为和实行实时性能监测,帮助更快地查找和发现问题,预测系统行为并优化系统性能。ParasoftC++TestParasoftC++Test是Parasoft公司开发的专门针对C/C++的源程序代码进行自动化单元测试的工具,可以自动测试任何C/C++函数、类,自动生成测试用例、测试驱动函数或桩函数,在自动化的环境下完成单元测试,其单元级的测试覆盖率可以达到100%
6.4面向对象的测试
项目六6.4.4自动化测试工具简介
(5)QACenterQACenter是黑盒测试工具,它可以帮助测试人员创建一个快速、可重用的测试过程。(6)WebLoadWebLoad是RadView公司推出的一个性能测试和分析工具,它让Web应用程序开发者自动执行压力测试;WebLoad通过模拟真实用户的操作,生成压力负载来测试WebApplication的性能。(7)WebApplicationStress(WAS)Tool微软的WAS允许以不同的方式创建测试脚本:可以通过使用浏览器走一遍站点来录制脚本,可以从服务器的日志文件导入URL,或者从一个网络内容文件夹选择一个文件。8)TestDirectorTestDirector是一套测试管理软件。
6.5软件调试技术项目六6.5.1调试的原则
1.确定错误的性质和位置时的注意事项(1)分析思考与错误征兆有关的信息。(2)避开死胡同:在调试中陷入困境,最好暂时避开,留到适当时间再考虑。(3)只把调试工具当做辅助手段来使用。(4)避免用试探法,最多只能把它当做最后手段。2.修改错误的原则(1)在出错的地方,可能还有别的错误。(2)修改错误的一个常见的失误是只修改了这个错误的征兆或错误的表现,却没有修改错误本身。(3)注意修正一个错误的同时可能会引入新的错误。(4)修改错误的过程将迫使人们暂时回到程序设计阶段。(5)修改源代码程序,不要改变目标代码。6.5软件调试技术项目六6.5.2调试的技术1.简单的调试方法(1)在程序中插入打印语句。(2)运行部分程序。2.归纳法调试3.演绎法调试4.回溯法调试说明:网上购物系统软件测试计划和软件测试报告的撰写参考附录2中,读者可以进一步完善网上购书系统软件项目的编码与测试阶段相关的测试用例和文档的编写工作。也可以根据自己的喜好选择另一系统(如电脑报价系统)进行测试用例的设计、及软件测试计划和测试报告的编写任务。项目六6.6案例分析——软件测试计划和测试报告
电脑报价管
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 县级妇幼保健所考勤制度
- 工厂员工人工考勤制度范本
- 北仑区项目经理考勤制度
- 2026年农药生产企业三级安全教育培训试题卷
- 突发心梗如何急救?黄金4分钟该怎么做
- 外企研发考勤制度规定
- 如何在群里发布考勤制度
- 50人以下企业考勤制度
- 乡镇动物防疫站考勤制度
- 办公室活动考勤制度模板
- 鹅饲养管理技术规范标准
- 2024年贵州义龙新区医教开发投资有限公司招聘笔试冲刺题(带答案解析)
- 瘙痒性疾病的诊断和治疗
- 2023年4月自考00808商法试题及答案含解析
- 合同变更的批准程序
- 2024年长沙卫生职业学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- GB 4351-2023手提式灭火器
- 专升本会计基础试题及答案
- 人教版八年级物理下册10.5浮力计算题分类练习(练习2细线、杆、弹簧、加水、放水、升降台)原卷版+解析版
- 公务员考勤表(通用版)
- 2023年新疆初中学业水平考试地理试卷真题(含答案)
评论
0/150
提交评论