软件测试第六章
- 格式:ppt
- 大小:1.90 MB
- 文档页数:14
软件测试各章知识点总结第一章:软件测试概述软件测试是指为了发现软件中的错误和问题,评估软件质量,确保软件功能正常的过程。
软件测试的目的是验证软件是否符合用户的需求和期望,以及确保软件的质量达到一定的标准。
软件测试在整个软件开发过程中起着非常重要的作用,它能够帮助开发团队及时发现和修复问题,提高软件的稳定性和可靠性。
软件测试的基本原则包括全面性、系统性、可靠性和性能。
全面性指测试应该覆盖所有可能的情况,包括正常情况和异常情况;系统性指测试应该以系统为单位进行,而不是单个模块或功能;可靠性指测试结果应该是可靠的、准确的;性能指测试应该关注软件的性能表现。
软件测试的方法可以分为静态测试和动态测试。
静态测试是指在软件开发的早期阶段进行的,包括代码审查、设计审查和使用静态分析工具进行分析。
动态测试是指在软件开发的后期阶段进行的,包括单元测试、集成测试、系统测试和验收测试。
软件测试的类型包括功能测试、性能测试、安全测试、兼容性测试、可靠性测试等。
功能测试是验证软件功能是否符合用户需求的测试;性能测试是验证软件在各种条件下的性能表现的测试;安全测试是验证软件的安全性和可靠性的测试;兼容性测试是验证软件在不同平台和环境下的兼容性的测试;可靠性测试是验证软件的稳定性和可靠性的测试。
第二章:软件测试流程软件测试的流程包括测试计划、测试设计、测试执行、测试评估和测试报告。
测试计划是在测试开始之前进行的,包括确定测试目标、测试方法、测试资源和测试进度。
测试设计是在测试执行之前进行的,包括确定测试用例、测试数据和测试环境。
测试执行是在测试设计之后进行的,包括执行测试用例、记录测试结果和发现问题。
测试评估是在测试执行之后进行的,包括评估测试结果、计算测试覆盖率和分析测试效果。
测试报告是在测试评估之后进行的,包括总结测试结果、提出改进建议和撰写测试报告。
软件测试的自动化是指利用自动化测试工具进行软件测试的过程。
自动化测试包括测试脚本的编写、测试数据的准备和测试环境的配置。
第6章软件测试方法6.1 有一种观点认为,软件测试的目的在于证明开发出的软件没有缺陷。
这种观点能够接受吗?为什么?这种观点是不对的。
软件测试的目的是想以最少的时间和人力系统地找出软件中潜在的各种错误和缺陷。
测试只能证明软件中存在缺陷,如果在测试中没有发现缺陷,并不能证明开发的软件没有缺陷。
6.2 通过测试活动能够把软件中含有的缺陷全部找到吗?为什么?测试活动不能将软件中含有的缺陷全部找到。
因为,无论使用黑盒测试还是百盒测试,穷举测试都是不可能的。
6.3 说明验证和确认的区别。
验证(Verification)是指提供客观证据对规定要求已得到满足的认定。
确认(Validation)是指通过提供客观证据对特定的语气用途或应用要求已得到满足的认定。
验证和确认之间的区别是:验证表明的是满足规定要求,而确认表明的是满足预期用途或应用要求,简单地说,确认就是检查最终产品是否达到顾客使用要求。
验证要保证“做得正确”,而确认则要保证“做的东西正确”。
引用Boehm的话:Verification—Are we producing the product right?Validation—Are we producing the right product?6.4 简要说明白盒测试和黑盒测试的区别。
如果认真做了两者之一,还需要再做另一种测试吗?软件的白盒测试是对软件的过程性细节做细致的检查。
这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。
因此白盒测试又称为结构测试或逻辑驱动测试。
白盒测试主要是想对程序模块进行如下检查:(1) 对程序模块的所有独立的执行路径至少测试一遍。
(2) 对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。
(3) 在循环的边界和运行的界限内执行循环体。
第6章单元测试1.单元测试概述1什么是单元⏹传统软件对“单元”一词有着不同的定义单元是可以编译和执行的最小软件组件单元是决不会指派给多个设计人员开发的软件组件⏹“单元”与被测软件系统所采用的分析设计方法以及在其开发过程中采用的实现技术有关函数、子程序、紧密相关的一组函数、类、复杂类中的单个方法、紧密相关的一组类……⏹基本单元必须具备一定的基本属性,有明确的规格定义,以及包含与其他部分接口的明确定义等从软件工程的角度来说,具有功能的独立性、符合高内聚和低耦合的特性能够清晰地与同一程序中的其他单元划分开来2什么是单元测试?⏹通常而言,单元测试是在软件开发过程中要进行的最低级别的测试活动⏹或者说是针对软件设计的最小单位即程序模块、函数、类或方法所进行的正确性检验的测试工作⏹其目的在于发现每个单元内部可能存在的错误或缺陷单元测试的主要工作分两个步骤:2.1人工静态检查(静态测试)保证代码算法的逻辑正确性(尽量通过人工检查发现代码的逻辑错误)、清晰性、规范性、一致性、算法高效性尽可能地发现程序中可能存在的错误或缺陷2.2动态执行跟踪(动态测试)通过设计测试用例,执行待测程序来跟踪比较实际结果与预期结果来发现错误或缺陷3什么时候进行单元测试3.1单元测试越早越好3.2在测试驱动开发(TDD, Test Driven Development)中,先编写测试代码,再进行开发3.3在实际过程中,先写函数的框架,再针对函数的功能编写测试用例,然后编写函数的实现代码。
一边编写代码,一边测试,往往会有比较好的效果。
4单元测试由谁来执行4.1一般情况下由程序员完成单元测试工作单元测试也可以看作是编码工作的一部分,在编码的过程中考虑测试问题,得到的将是更优质的代码所以,单元测试有时也称自测试许多集成开发环境(IDE)可以集成各种单元测试工具帮助编码人员进行单元测试,如Eclipse环境中集成Junit4.2必要时可以由测试团队专门进行单元测试5单元测试的一般流程5.1开发小组承担单元测试5.2在开发负责人(Leader)的监督下进行5.3根据单元测试计划和测试说明文档,设计测试用例,执行充分的测试,达到覆盖要求5.4建议专人负责监控测试过程5.5单元测试具有回归性6单元测试的实质⏹主要是证明代码的行为和我们的期望是否一致在进行单元测试时常常并不关心整个产品或系统的确认、验证及其正确性等方面主要侧重于功能有时也关注性能方面的问题⏹只有所有单元的行为都通过了验证,确保它和我们的期望一致,才能开始进行集成测试⏹所以,足够的单元测试的好处在于:使开发工作变得更轻松对设计工作也能提供帮助大大减少了花费在调试上面的时间7单元测试的目标⏹验证开发人员所编写的代码是否产生预期结果、是否符合设计的要求,最终确保单元符合需求⏹代码的质量、可复用性、代码的可维护性及代码的可扩展性的检查也是单元测试的目标⏹符合需求的单元代码通常具备以下性质正确性:代码逻辑正确,能实现预期功能清晰性:代码简明、易懂,注释准确规范性:代码符合规范一致性:代码在命名上、风格上保持统一高效性:尽可能减少执行时间可复用性:代码尽量标准化,便于复用8为什么要进行单元测试⏹未经测试覆盖的单元代码可能会存在大量的错误或缺陷这些错误或缺陷可能是严重的,可能是微小的或表面的但是,这些错误或缺陷可能会相互影响尤其在开发后期,错误或缺陷可能会扩展⏹这些暴露的错误或缺陷难于定位,结果会大幅度提高后期测试和维护成本,降低了开发商的市场竞争力9单元测试在软件测试中的作用和地位⏹单元测试被认为是集成测试的基础:只有通过了单元测试,才能将各个单元集成在一起进行集成测试⏹单元测试通常在项目的详细设计阶段已经开始了,贯穿于项目开发的生命周期中⏹单元测试已经不仅仅是只有编码完成以后才能进行的工作了2.单元测试的环境及过程1驱动模块(Driver)1.1扮演被测模块的主程序1.2接收测试数据,将数据传递给被测模块,最后输出实际测试结果1.3作用接受测试输入对输入进行判断将输入传给被测单元,驱动被测单元执行接受被测单元执行结果,并对结果进行判断将判断结果作为用例执行结果并输出测试报告2 桩模块(Stub )2.1 代替被测模块需要调用的子模块2.2 可以进行少量的数据操作,不需要实现子模块的所有功能2.3 根据需要实现或代替子模块的一部分功能2.4 桩模块是一次性模块,主要是为了配合调用它的父模块2.5 被测模块和与它相关的驱动模块和(或)桩模块共同构成了一个“测试环境”3 单元测试的过程3.单元测试的策略4.单元测试分析1.单元测试分析是单元测试用例设计的基础,全面地分析才能设计出合理的测试用例涉及详细设计、代码、功能业务需求、非功能业务需求、组件内部数据结构、组件接口等方面2.单元测试分析的9条指导原则检查详细设计是否通过评审并验证其和代码逻辑的一致性,为代码审查和白盒测试用例设计服务分析单元组件涉及到的所有功能点和非功能需求,为功能性和非功能性用例设计服务 分析单元组件是否满足所有的边界条件,为经典的边界值方法设计用例服务对强制发生的一些错误情况进行分析,为意外情况设计补充用例服务分析被测单元组件接口分析模块内部的数据结构分析基路径覆盖,为基路径覆盖设计用例服务分析其他覆盖,为基本覆盖设计用例服务分析单元出错处理的正确性,为设计出错处理用例服务5.单元测试用例的设计1.静态测试技术用于单元测试1.1一般不需要设计具体的测试用例1.2按照静态测试技术的要求完成相关工作即可2.动态测试技术用于单元测试2.1黑盒方法:单元最小功能点覆盖,边界值法……2.2白盒方法:对单元的内部逻辑进行测试3黑盒测试—最小功能点覆盖3.1以ATM取款单元组件为例,其功能点有:(1)正常取款,(2)输入的取款金额是否合法,(3)检查超出当天的最大取款(假设为2000RMB),(4)余额不足(假设账号余额为1500RMB)(5)打印收据各功能点各一次,前提是银行卡和密码为有效4非功能性测试4.1非功能特性一般实现为特定的功能对排序算法效率的测试首先要实现排序功能,然后对其数据量、时间进行测试系统登录的安全性通过完成多次密码输入错误后拒绝登录来实现,因此首先也要实现密码多次错误的检查功能。
软件测试技术乔冰琴版本第六章课后答案1、列举几种WR学习软件GUI的不同方式。
解:(1)使用Rapid Test Script wizard学习软件每个窗体中所有GUI对象的属性。
(2)通过录制脚本的方法学习被录制的那部分软件中所有的GUI 对象的属性。
(3)使用GUI Map Editor学习单个GUI对象、窗体或某个窗体中所有GUI对象的属性。
2、分别简述WR中同步点和检查点的作用。
解:当测试人员执行测试时,所测试的应用程序每次操作的响应时间并不一定,有时快,有时慢,导致执行输入动作的时间也需要等待。
在测试脚本中插入同步点,当Win Runner执行到同步点时,会暂停执行以等待应用程序某些状态的改变后,再继续行,以避免应用程序响应的时间超过Win Runner等待的时间而导致测试执行失败。
3、比较Win Runner中GUI DE Map File per Test和Global GUI Map File两种模式的区别。
解:GUI Map File per Test的方法:在测试的过程中将自动保GUI信息,打开测试时可以自动加载GUI文件。
Global GUI Map File的方法:在测试的过程中需要保存GUI,当应用程序改变时必须更新GUI文件。
4、简述利用Win Runner进行测试的过程可分为哪几个阶段,即操作步骤是什么。
解:WR的测试过程分为以下六个阶段:(1)创建GUI map。
(2)创建测试。
(3)调试测试。
(4)执行测试。
(5)查看测试结果。
(6)报告发现的错误。
5、给出Win Runner中将测试脚本转换为数据驱动测试脚本的一种实现步骤。
解:可以通过下列步骤将测试脚本转换成数据驱动测试脚本:(1)加上开启及关闭数据表的指令。
(2)加上循环并读取数据表的每一笔数据。
(3)将录制的固定值与检查点的值参数化为数据表的字段值。
题目:测试计划主要由哪个角色负责制定:()。
选项A:开发人员选项B:测试人员选项C:项目经理选项D:测试经理答案:测试经理题目:测试经理的任务通常不包括:()。
选项A:选择合适的测试策略和方法选项B:编写测试计划选项C:建立和维护测试环境选项D:选择和引入合适的测试工具答案:建立和维护测试环境题目:对于监控测试周期时采用的度量方法,下列叙述中不当的是:()。
选项A:基于故障和基于失效的度量:统计特定软件版本中的故障数。
选项B:基于成本度量:统计已经花费的测试成本,下一测试周期成本与预期收益的关系。
选项C:基于测试对象的度量:统计代码和安装平台等覆盖情况。
选项D:基于测试用例的度量:统计各优先级的测试用例数量。
答案:基于成本度量:统计已经花费的测试成本,下一测试周期成本与预期收益的关系。
题目:下列哪个是测试组织独立的缺点?()。
选项A:开发人员可能会失去对产品质量的责任心选项B:测试人员需要花时间了解所要测试的产品的需要、架构、代码等选项C:设立独立测试组会花费更多成本选项D:测试人员需要额外的培训答案:开发人员可能会失去对产品质量的责任心题目:如果没有做好配置管理工作,那么可能会导致:()。
A.开发人员相互篡改各自编写的代码;B.集成工作难以开展C.问题分析和故障修正工作被复杂化D.测试评估工作受阻选项A:A、B、C、D选项B:B、D选项C:A、B、C选项D:A、C答案:A、B、C题目:对于测试过程来说,哪些工作产品要纳入配置管理?()。
选项A:测试对象和测试材料选项B:测试对象(The test object)、测试材料(the test material)和测试环境选项C:问题报告和测试材料选项D:测试对象答案:测试对象(The test object)、测试材料(the test material)和测试环境题目:下列活动中,不属于测试计划活动的是:()。
选项A:确定测试环境选项B:设计测试用例选项C:定义测试级别选项D:估算测试成本答案:设计测试用例。
第六章软件测试的度量课后习题及答案1.什么是软件测试的度量?软件度量是一种度量技术,这种技术用来支撑过程、产品和服务中心工程和管理信息,以及支持过程、产品及服务的信息上的改进,从而量化地评定测试过程的能力和性能,提高测试过程的可视性,帮助软件组织管理及改进软件测试过程。
2.软件测试度量是出于什么原因才进行的?是不可或缺的吗?目的:(1)判断软件测试的有效性。
(2)判断软件测试的完整性。
(3)判断所测试的软件产品的质量。
(4)分析和改进软件测试过程。
重要性:(1)度量可以用来提高质量、产品生产力、以及服务,从而提高客户满意度;(2)对于管理组织很容易分析数据并且深入下去;(3)对过程不受控时有不同的度量方式作为监控者;(4)度量提供当前过程改进。
3.软件测试对工作人员有什么要求?对测试人员的工作如何进行评价?素质要求:(1)测试人员要有责任心。
(2)测试人员要有沟通能力。
(3)测试人员要有团队合作精神。
(4)测试人员要有耐心、细心和信心。
(5)测试人员要时时刻刻保持怀疑态度,并且有软件缺陷预防的意识。
(6)测试人员要有不断学习的能力。
技能要求:(1)业务知识。
(2)产品设计知识。
(3)软件架构知识。
(4)统一建模语言(Unified Modeling Language, UML)o(5)测试工具。
(6)不同的测试手段和测试工具。
(7)开发工具。
(8)用户心理学。
(9)界面设计中的3种模型。
(10)人机交互认知心理学。
(11)编程技能。
(12)脚本语言。
(13)文档能力。
评价:(1)利用软件缺陷数量来考核测试效率。
如果在考核过程中发现的漏洞越多,那么说明这个测试人员的测试效率越高,测试能力越强。
(2)发现软件缺陷数量的多少并不能完全证明测试人员的能力。
但是如果把软件缺陷数量加上一些前置条件(如软件缺陷的严重程度),就会有一定的说明意义。
4.软件测试的度量有什么现实的应用?1、对测试人员能力的评价2、对软件缺陷进行定性评估3、撰写软件缺陷报告4、统计测试的覆盖率5.软件缺陷综合评价模型包括哪6个方面?测试过程、数量、定量、质量、定性、测试人员6.代码行覆盖率如何计算?功能覆盖率如何计算?数据库覆盖率如何计算?代码行覆盖率=(已执行测试的代码行/总的代码行)X100%功能模块覆盖率=已执行测试的功能模块数/总的功能模块数Xl00%数据库覆盖率=SQL中出现的数据库的对象数/数据库总的对象数XlO0%7.在表6・12所示的例子中,尝试计算脚本编写用时是多少?脚本编写用时=Io小时,ASP=25∕10=2.5, 即自动化测试脚本生产率=2.5 (操作/小时)8.软件测试度量涉及哪几个关键问题?软件测试的度量包括对软件测试产出物的测量,以及软件测试过程的测量。