《《软件测试》复习提纲及答案.doc》由会员分享,可在线阅读,更多相关《《软件测试》复习提纲及答案.doc(7页珍藏版)》请在金锄头文库上搜索。
1、软件测试复习提纲用答案1. 什么是软件测试?为何要进行软件测试?软件测试是为了尽快尽早地发现在软件产品中所存在的各种软件缺陷而展开的贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程。 确保软件的功能符合用户的需求,把尽可能多的问题在发布或交付前发现并改正。2. 什么是软件缺陷?请举例。哪里出现的缺陷最多? 软件缺陷就是软件产品中所存在的问题,最终表现为用户所需要的功能没有完全实现,未满足用户的需求。术语:缺点(defect)异常(anomaly)偏差(variance)失败(failure)缺陷(bug)故障(fault)问题(problt)错误(error)规格
2、说明书出现的最多。3. 软件测试是否就是程序测试?哪些可以作为软件测试的对象?不是。对象:程序、数据(库)、文档、服务4. 软件测试的目的是什么?软件测试的目标是什么?软件测试的原则是什么?目的:测试的目的就是发现软件中的各种错误和缺陷;测试只能证明软件存在缺陷,不能证明软件不存在缺陷;测试可以使软件中缺陷降低到一定程度,而不是彻底消灭;以较少的用例、时间和人力找出软件中的各种错误和缺陷,以确保软件的质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。目标:确保软件完成了它所承诺或公布的功能;为软件的质量评估提供依据;确保软件满足性能的要求;确保软件是健壮的和适应用户环境,
3、为软件质量改进和管理提供帮助原则:所有的测试都应追溯到用户需求;保证测试的覆盖程度,但穷举测试是不可能的;越早测试越好,测试过程与开发过程应是相结合的;Pareto原则:测试中发现的80%的错误可能来自于20%的程序代码;测试的规模由小而大,从单元测试到系统测试;为了尽可能地发现错误,应该由独立的第三方来测试;不能为了便于测试擅自修改程序;既应该测试软件该做什么也应该测试软件不该做什么5. 软件测试如何分类?按照程序是否执行:静态测试(审查、评审和走查)、动态测试按照测试用例的设计方法:白盒测试、黑盒测试按照开发阶段划分:单元测试、 集成测试、系统测试、验收测试按照测试实施的组织划分:开发方测
4、试、用户测试(测试)、第三方测试 按照是否使用工具:手工测试、自动化测试6. 常见的软件测试模型有哪些?各有什么优缺点?V模型 从左到右,描述了基本的开发过程和测试行为,明确地标明了测试工程中存在的不同级别,清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。 优点:明确地标明了测试工程中存在的不同级别,清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系 缺点:没有明确地说明早期的测试,不能体现“尽早地”和“不断地”进行软件测试原则。W模型 优点:测试与开发是同步进行的,可以显著的节约总体测试时间 缺点:需要有严格的指令表示上一阶段完全结束才可以开始下一个阶段H模型、X模型等7. 一个
5、软件测试包含哪些基本过程?制定测试计划测试设计与开发 1测试环境设计2测试用例设计与开发3辅助工具开发测试执行与管理 1准备测试环境2实施测试生成测试总结与报告8. 什么是测试用例?它包含哪些内容?通常对测试用例有哪些要求?测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求内容:包括测试编号,测试环境,测试目的,测试操作步骤,测试预期结果测试用例要求:对需求覆盖的完整性 有效性 清晰性 可理解性 可维护性9. 静态测试分析包含哪些方法以及各自的含义?动态测试包含哪些方法?静态测试分析指以人工的、非形式化的方法对程序进行分析和测试。
6、 主要形式:审查、评审和走查。评审是由若干开发人员、项目经理、测试人员、用户或领域专家等组成一个会审小组,通过阅读、讨论和争议,对工作制品进行静态分析的过程。走查是由设计人员或编程人员组成一个走查小组,通过阅读一段文档或代码,并进行提问和讨论,从而发现可能存在的缺陷、遗漏和矛盾的地方。审查是由一些经过严格训练的人员根据评估标准,对于开发过程中的产品或中间制品进行检查,发现其中存在的错误。动态测试通过选择适当的测试用例,执行程序。白盒测试和黑盒测试。10. 什么是白盒测试?白盒测试有哪些测试方法及其含义?这些方法的强弱程度怎样?白盒测试(又称结构测试)把测试对象看作一个透明的盒子,测试人员根据程
7、序内部的逻辑结构及有关信息设计测试用例,检查程序中所有逻辑路径是否都按预定的要求正确地工作。测试方法:逻辑覆盖测试:主要考察使用测试数据运行被测程序时对程序逻辑的覆盖程度。通常希望选择最少的测试用例来满足所需的覆盖标准。主要的覆盖标准有:语句覆盖 判定覆盖 条件覆盖 判定条件覆盖 条件组合覆盖 路径覆盖。基本路径测试:是Tom McCabe提出的一种白盒测试技术,这种方法首先根据程序或设计图画出控制流图,并计算其区域数,然后确定一组独立的程序执行路径(称为基本路径),最后为每一条基本路径设计一个测试用例。循环测试:循环分为4种不同类型:简单循环、嵌套循环、串接循环和非结构循环。数据流测试。11
8、. 什么是黑盒测试?黑盒测试有哪些测试方法及其含义?黑盒测试 依据软件的需求规约,而不考虑程序的内部结构与特性,检查程序的功能是否符合需求规约的要求。测试方法:等价类划分:等价类划分方法将所有可能的输入数据划分成若干个等价类,然后在每个等价类中选取一个代表性的数据作为测试用例。边界值分析:边界值分析也是一种黑盒测试方法,是对等价类划分方法的补充。大量的错误发生在输入范围的内部。比较测试:通常,可由二支软件开发队伍,根据相同的需求规格说明分别开发二个软件版本,然后,用相同的测试用例对二个版本的软件分别进行测试,比较二个版本软件的测试结果,如果测试结果相同,则可认为二个版本的软件都是正确的,如果测
9、试结果不同,则要分析各个版本,以发现错误的所在。此测试称为比较测试。错误猜测:错误猜测是一种凭直觉和经验推测某些可能存在的错误,从而针对这些可能存在的错误设计测试用例的方法。因果图:因果图方法是一种帮助人们系统地选择一组高效测试用例的方法,它既考虑了输入条件的组合关系,又考虑了输出条件对输入条件的依赖关系,即因果关系,其测试用例发现错误的效率比较高。12. 白盒测试与黑盒测试最大的不同是什么?黑盒测试不考虑程序的内部结构和处理算法。13. 数据驱动框架的原理是什么?原理是采用了数据驱动脚本进行测试,数据驱动脚本是将数据输入存储在独立的数据文件中,脚本只存放控制信息,测试时输入直接从文件中读取,
10、这样同一脚本可以运行于不同的测试用例中,实现了脚本与数据的分离。其优点是可以快速增加相似测试,测试者增加新的测试不必掌握测试工具语言,对此后的类似测试无额外维护开销;缺点是初始建立测试脚本的开销较大,进行数据扩展的脚本需要针对相同的测试内容并具有相同的测试逻辑。 14. 什么是手工测试?什么是自动化测试?二者各有何优缺点?手工测试(Manual Testing),顾名思义,即依靠人力来查找缺陷。一般采用黑盒测试方法,可用于集成测试、系统测试和验收测试中。优点:测试用例的设计中,经验和对错误的判断能力是难以替代的;界面和用户验收测试中人,审美观和心理体验难以替代;在正确性检查时,人们对是非的判断
11、和逻辑推理能力是难以替代的。缺点:重复多、工作量大、易出错、覆盖面低、对于大型软件来说效率不够高。自动测试 (Automation Testing)则使用有针对的工具来测试。它可以让测试人员从繁琐和重复的测试活动中解脱出来,专心从事有意义的测试设计等活动。如果采用自动比较技术,还可以自动完成测试用例执行结果的判断,从而避免人工比对存在的疏漏问题。设计良好的自动化测试,在某些情况下可以实现“夜间测试”和“无人测试”。优点:对程序的新版本运行己有的测试,即回归测试。可以运行更多更频繁的测试。 可以进行一些手工测试难以完成或不可能完成的测试。 充分地利用资源。 测试具有一致性和可重复性。 测试具有复
12、用性。 缩短软件发布的时间。增强软件的可靠性。缺点:不能取代手工测试手工测试比自动测试发现的缺陷更多对测试质量的依赖性极大测试自动化不能提高有效性测试自动化可能会制约软件开发。由于自动测试比手动测试更脆弱,所以维护会受到限制,从而制约软件的开发。工具本身并无想像力15. 选用软件自动化测试工具的目的是什么?让测试人员从繁琐和重复的测试活动中解脱出来,专心从事有意义的测试设计等活动。16. 在白盒测试方法中,无论采用那种覆盖标准都不可能达到100%覆盖率。它们共同的目标是什么?17. 基本路径测试的过程是怎样的?如何计算区域数?先画出控制流图,确定独立路径。区域数 V(G)=E-N+2 (E:边
13、数,N:结点数)18. 什么是因果图法?它有哪些特点?因果图中有哪些约束?因果图:因果图方法是一种帮助人们系统地选择一组高效测试用例的方法,它既考虑了输入条件的组合关系,又考虑了输出条件对输入条件的依赖关系,即因果关系,其测试用例发现错误的效率比较高。因果图方法的特点是:考虑输入条件的组合关系;考虑输出条件对输入条件的依赖关系,即因果关系;测试用例发现错误的效率高;能检查出功能说明中的某些不一致或遗漏。因果图中的约束:E约束(异):a和b中最多有一个可能为1,即a和b不能同时为1I 约束(或):a、b、c中至少有一个必须为1,即 a、b、c不能同时为0。O约束(唯一):a和b必须有一个且仅有一
14、个为1。R约束(要求):a是1时,b必须是1,即a为1时,b不能为0。M约束(强制):若结果a为1,则结果b强制为0。19. 按照开发阶段来分,软件测试分为哪些测试及其各自含义?单元测试,集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。集成测试把已测试过的模块集成起来,主要对与设计相关的软件体系结构的构造进行测试。确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。系统测试把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。20. 单元测试的内容是什么?单元测试采用什么测试方法?在单元
15、测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试21. 系统测试有哪些任务?主要采用什么测试方法?系统测试一般要完成以下几种测试功能测试:验证软件是否满足需求规格性能测试:测试软件在实际环境下运行的有关性能 需集成系统的所有成分负载测试:测试系统在临界状态下运行的稳定性。强度/压力测试:测试软件在短期内活动处于峰值时的反应,主要从速度上来反映容量测试:测试软件在承受大容量数据时的反映恢复测试:验证软件在支撑软件或硬件失败中恢复的能力安全测试:验证软件的安全性能其他约束条件的测试22. 集成测试方式有哪些?增殖式集成方式:这种集成方式又称渐增式集成首先对一个个模块进行模块测试,然后将这些模块逐步集成成较大的系统在集成的过程中边连接边测试,以发现连接过程中产生的问题通过增殖逐步集成成为要求的软件系统。一次性集成方式 (big bang):它是一种非增殖式集成方式。也叫做整体拼装。使用这种方式,首先对每个模块分别进行模块测试,然后再把所有模块集成在一起进