《2022年软件测试理论知识总结 .pdf》由会员分享,可在线阅读,更多相关《2022年软件测试理论知识总结 .pdf(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 测试基础软件测试的定义和目的1, 什么是软件测试a)IEEE 定义为: 使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。b)G.J.Myers认为: 1)程序测试是为了发现错误而执行程序的过程;2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;3)成功的测试是发现了至今为止尚未发现的错误测试。(注: 1)软件测试是一个过程,包含若干活动,运行软件进行测试只是活动之一;2)运行软件测试可以人工方式也可以借助于工具,3)进行软件测试可以运行软件也可以不运行软件; 4)软件测试的目的不仅仅是为了发现错误。)2, 软
2、件测试的目的人们对软件测试的目的的认识也经历了一个过程:20 世纪 60 年代 20世纪 70 年代中期 20世纪 90 年代证明检测预防表明软件能够工作发现错误管理质量软件生命周期计划需求分析设计编码测试运行和维护软件研发组织和流程常见项目组架构项目经理开发经理测试经理配置经理软件开发组软件测试组配置管理组SQA 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 36 页2 基本软件研发流程1) 瀑布模型2) 螺旋模型3) RUP (Rational United Press )模型所有工作流在各个阶段都有体现。(IBM收购)4) IP
3、D(Integred Product Design)模型从整个产品角度出发,不仅仅针对研发。(IBM)软件中引入缺陷的原因软件缺陷:既指静态存在于软件工作产品(文档,代码)中的错误,也指软件运行时由于这些错误被激发引起的和软件产品预期属性的偏离现象。Bug :代码中的缺陷。有时也被广泛指因软件产品内部的缺陷引起的软件产品最终运行时和预期属性的偏离。(注:软件错误、软件缺陷、Bug 在实际工作中可以认为是一样。)常见的引入缺陷的原因1) 开发过程缺乏有效的沟通,或者没有进行沟通2) 软件复杂度越来越高3) 编程中产生的错误4) 需求不断变更5) 项目进度的压力6) 不重视开发文档7) 软件开发工
4、具本身隐藏的问题8) 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。缺陷类型1) 遗漏:规定的或者预期的需求未体现在产品中(可能未将规格说明全面实现,也可能需求分析阶段就遗漏了需求)2) 错误:未将规格说明正确实现(可能设计错误、也可能编码错误)3) 额外的实现:规格说明并未规定的需求被纳入了产品,得到实现。(也可以用下面五种类型表示:a)产品未达到产品说明书中要求实现的功能b)产品出现了产品说明书中没有的功能c)产品没有实现产品说明书中虽未指明但要求实现的功能d)产品出现了说明书中明确规定不出现的功能e)测试人员或用户认为产品不应使用)精选学习资料 -
5、 - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 36 页3 测试过程测试阶段划分单元测试( Unit Testing)针对软件基本组成单元(软件设计的最小单位)来进行正确性检验的测试工作。(检测软件模块对详细设计说明书(LLD )的符合度 ) 。集成测试( Integration Testing )在单元测试的基础上,将所有模块按照概要设计组装成为子系统或系统,验证组装后功能以及模块间接口是否正确的测试工作。(检测软件模块对 概要设计说明书 (HLD )的符合度)系统测试( System Testing )将已经集成好的软件系统,作为整个基于计算机系统
6、的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他元素结合在一起,在实际运行(使用)环境下,对计算机系统进行一系列的测试工作。( 通过与需求规格说明书(SRS) 作比较,发现软件与系统需求定义不符合或之矛盾的地方)单元、集成、系统测试的比较1) 测试方法不同单元测试属于白盒测试范畴集成测试属于灰盒测试范畴系统测试属于黑盒测试范畴2) 考察范围不同单元测试主要测试单元内部的数据结构、逻辑结构、异常处理等集成测试主要测试模块之间的接口和接口数据传递关系,以及模块组合后的整体功能系统测试主要测试整个系统相对于需求的符合度3) 评估基准不同单元测试主要是逻辑覆盖率集成测试主要是接口覆盖率系
7、统测试主要是测试用例对需求规格的覆盖率回归测试( Regression Testing )目的:验证缺陷得到了正确的修复,同时对系统的变更没有影响以前的功能。(注:回归测试可以发生在任何一个阶段)回归测试策略1) 完全重复测试重新执行所有在前期测试阶段建立的测试用例,来确认问题修改的正确性和修改的扩散局部影响性。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 36 页4 2) 选择性重复测试即有选择地重新执行部分在前期测试阶段建立的测试用例,来测试被修改的程序a)覆盖修改法即针对被修改的部分,选取或重新构造测试用例验证没有错误再次发生的
8、用例选择方法b)周边影响法该方法不但包含覆盖修改法确定的测试用例,还需要分析修改的扩散影响,对那些受到修改间接影响的部分选择测试用例验证它没有受到不良影响,该方法比覆盖修改法更充分一点。c)指标达成法这是一种类似于单元测试的方法,在重新执行测试前,先确定一个要达成的指标,如修改的部分代码100%的覆盖、与修改有关的接口60%的覆盖等,基于这种要求选择一个最小的测试用例集合。回归测试流程(适用于单元测试,集成测试,系统测试)1) 在测试策略制定阶段,制定回归测试策略2) 确定需要回归测试的版本3) 回归测试版本发布,按回归测试策略执行回归测试4) 回归测试通过,关闭缺陷跟踪单(问题单)5) 回归
9、测试不通过,缺陷跟踪单返回开发人员,开发人员重新修改问题,再次提交测试人员回归测试(注:回归测试比较适合使用自动化工具)其他测试阶段1) 验收测试a)验收测试是以用户为主的测试,验收组应该由项目组成员,用户代表等组成b)在通过内部系统测试及软件配置审查后,就可以开始验收测试c)验收测试原则上在用户所在地进行,但经用户同意也可以在公司内模拟用户环境d)验收测试根据合同、 需求规格说明书或验收测试计划对产品进行验证e)结果两种(接受与不接受)2) Alpha 测试(属于验收测试)由用户在开发环境下进行的测试,也可以是开发机构内部的用户在模拟实际操作环境下进行的测试。目的主要是评价软件产品的FLUR
10、PS(即功能、局域化、可用性、可靠性、性能和技术支持等)3) Beta 测试(属于验收测试)由软件的多个用户在一个或多个用户的实际环境下进行测试Alpha 测试和 Beta 测试的区别Alpha 测试过程可控,但是参与人数有限;Beta 测试参与人数巨大,但是过程不可控。测试过程模型测试过程阶段划分精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 36 页5 1) 测试计划阶段:测试计划2) 测试设计阶段:测试方案3) 测试实现阶段:测试用例、测试规程4) 测试执行阶段:测试报告主要测试文档测试计划:指明测试范围、方法、资源、以及相应测试
11、活动的时间进度安排表的文档。测试方案:指明为完成软件或软件集成特性的测试而进行的设计测试方法的细节文档。测试用例:指明为完成一个测试项的测试输入、预期结果、测试执行条件等因素的文档。测试规程: 指明执行测试时测试活动序列的文档。(后执行用例的输入是先执行用例的输出)测试报告:指明执行测试结果的文档。(注: 1)将工作过程表现出来2)表明个人对测试对象的态度)测试日报:每天测试执行情况的记录和总结。常见的测试过程模型1) 瀑布模型缺陷:a)测试介入太晚b)工作效率低c)成本巨大2) H 模型测试准备活动,包括测试需求分析、测试计划、测试设计、测试编码、测试验证另一类是测试执行活动,包括测试运行、
12、测试报告、测试结果分析等。优点:测试准备测试执行其他流程(如设计流程)测试就绪点测试流程精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 36 页6 a)测试与其他流程并发的进行b)测试准备和测试执行分开3) V&V 模型优点:a)测试与其他流程并发的进行b)测试准备和测试执行分开c)测试过程子阶段与开发过程子阶段一一对应。V&V 的含义验证( Verification )和确认( Validation )验证: ( “Are we building the product right? ” )1) 验证是保证软件正确地实现特定功能的一系
13、列活动2) 验证是检测每一阶段形成的工作产品是否与前一阶段定义的规格相一致确认: ( “Are we building the right product? ” )1) 确认是指保证所生产的软件可追溯到用户需求的一系列活动2) 确认是检测每一阶段的工作产品是否与最初定义的软件需求规格相一致测试过程规范CMM 关于过程的要素1) 角色( Roles) :人2) 入口准则( Entry Criteria ) :执行活动所必须满足的条件3) 输入( Inputs) :完成某活动所需要加工或参考的资料、原材料4) 活动( Activities ) :流程由一系列有相互关系的活动组成5) 输出( Out
14、puts) :完成某活动后所提交的工作产品6) 出口准则( Exit Criteria ) :完成或退出某活动所必须满足的条件7) 评审和审计( Reviews and Audits )8) 可管理和受控的工作产品(Work Products Managed and Controlled )需求分析概要设计详细设计集成测试计划、设计、实现系统测试计划、设计、实现编码代码走查单元测试计划、设计、实现执行系统测试执行集成测试执行单元测试精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 36 页7 9) 测量 (Measurements):客观
15、指标(一组数据)10)书面规程( Documented Procedures)11)培训( Training ) :技术支持12)工具( Tools) :辅助说明13)职责:权责定义14)模板:标准格式15)检查表( Checklist) :要点列表精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 36 页8 软件质量软件质量的定义质量:实体基于这些特性满足需求的程度。(一个实体的所以特性,基于这些特性可以满足明显的和隐含的需求)软件质量的三个层次: (需求的分层导致质量也分层)1) 符合需求规格:符合开发者明确定义的目标,即产品是不是在
16、做让它做的事情。目标是开发者定义的,并且是可以验证的。2) 符合用户显示需求(基于SRS) :符合用户所明确说明的目标。目标是客户所定义的,符合目标即判断我们是不是在做我们需要做的事。3) 符合用户的实际需求:实际需求包括用户明确说明的和隐含的需求。影响软件质量的因素: (铁三角 )1) 流程好处:将不可见的工作过程变得可见可控;使得整个工作过程有序并减少内耗,提高工作效率。2) 技术(设计、开发、测试)企业技术负载于人(现有职工的技术;企业是否重视技术积累)技术与流程的关系:有技术,无流程不可能进行现代化的软件开发;有流程,无技术不可能生产高质量的产品3) 组织(非直接的)通过对流程和技术产
17、生作用而间接对产品质量产生影响。组织对流程的影响(组织应该将流程制度化,规范化以保证其执行效率;当流程执行中遇到阻碍时,组织应给予处理,保证流程顺畅执行)组织对技术的影响(保证有能力的人去做合适的事情(资源调配);组织重视并组织技术的积累,建立知识库(财富库)软件质量管理体系1) ISO9000 ISO9000 族 2000 版标准主要由ISO9000、ISO9001、ISO9004 三个核心标准组成。2000 版的八项质量管理原则:a)以客户为中心( 在同一组织内部,顾客的定义是下游环节的人员是上游环节人员的顾客 )b)领导作用( 1 个制定, 4 个确保, 1 个创造, 2 个决定, 1
18、个评审 )c)全员参与d)过程方法e)管理的系统方法f)持续改进g)基于事实的决策方法h)互利的供方关系精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 36 页9 八项质量管理原则的意义:a)是质量管理的理论基础b)用高度概括,易于理解的语言所表述的质量管理的最基本、最通用的一般性规律c)为组织建立质量管理体系提供了理论依据d)是组织的领导者有效的实施质量管理工作必须遵循的原则。2) CMM (Capability Maturity Model)/CMMI (Capability Maturity Model Integration)评
19、估软件承办商能力;协助软件组织改进过程,提高过程能力基本术语:a)KPA (Key Process Area)关键过程域(过程域简单的说就是做好一个事情的某个方面,对于软件开发而言就是做好软件开发的某个方面)b)如果该级别的全部PA 达到要求了,就认为该级别达到了c)如果判断PA 达到要求呢?(每个PA 包含几个目标(Goal) ;如果这几个目标都达到要求了,就认为该PA 达到要求了)d)如何判断Goal 达到要求呢?(每个Goal 包含几个实践(Practice) ;每个实践达到要求了,就认为该Goal 达到要求了)CMM/CMMI用途a)可以识别组织的长处和弱处b)评估组织用以来评价软件承
20、包商的能力和风险c)领导可以借此来进行过程改进,提高企业软件生产能力d)开发和技术人员参照CMM/CMMI进行执行过程改进CMM/CMMI的选择a)企业本身项目特点(软件开发用CMM ;有软件开发且包括硬件和采购用CMMI )b)考虑企业自身的能力成熟度c)企业对经费的预算d)若企业只想在某个方面(如过程)提高进行改进(使用CMMI )e)CMM 向 CMMI的转型CMM/CMMI区别a)降低了复杂度和规模;扩大了模型覆盖率;表达方式 (CMM :阶段式表示; CMMI :阶段式(初始级、可重复级、已定义级、已管理级、优化级)、连续式(管理类、支持类、项目类、过程类)b)CMMI 强调对需求的
21、管理;加强对工程过程的重视,强调度量;加强了对风险的管理; CMM 中的“组间协调”在CMMI中作为“集成化项目管理”CMM 中的一个目标;中的KPA“同行评审”在CMMI中抽象为 KPA“验证”;c)CMM 是作为评估标准出现的,是“必要”是才能保证评估的标准;CMMI 是作为改进模型出现的,罗列了较多的最佳实践,易于过程改进。d)CMM 主要是针对软件的CMM/CMMI的各级特点a)初始级( Initial )过程能力是不可预测的,过程是无序的。b)可重复级( Repeatable)过程能力是有纪律的。c)已定义级( Defined )过程能力为标准的和一致的。( SEPG 软件工程过程组
22、)d)已管理级( Managed)过程能力为可预测的。e)优化级( Optimizing )过程能力的基本特征是不断改进,不断改善其项目的过程性能。ISO9001 和 CMM 的关系精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 36 页10 a)最大的相似点(强调管理、过程、规范化和文档化)b)不同点( CMM把焦点严格对准软件;ISO9001 的范围包括硬件、软件、流程性材料和服务)c)两者之间的联系(CMM2 和 ISO9001 强相关; CMM 的每个关键过程域至少按某种解释与 ISO9001 弱相关)3) 六西格玛(本质是一个
23、全面管理概念,而不仅仅是质量提高手段)六西格玛管理法是以质量作为主线,以客户为中心,利用对事实和数据的分析,改进提升一个组织的业务流程能力,从而增强企业竞争力,是一套灵活的,综合性的管理方法体系。六西格玛管理法原则: (与 ISO9000 族 2000 版的八大原则进行比较)a)注重客户b)注重流程c)全员参与d)预防为主e)事实依据的决定f)持续和突破性改进六西格玛改进区域:a)周期时间(流程速度、回应能力)b)输出物的变差(产品或服务的直通率,缺陷成本降低,客户满意升高)c)营运效率(更低成本)六西格玛的实施模式(DMAIC )a)定义( Define)提出问题,确定目标b)测量( Mea
24、sure)收集资料,寻找原因c)分析( Analysis )研究资料,确定原因d)改进( Improve)优化解决方案e)控制( Control)推行控制系统三大质量管理体系的区别:ISO9000 是不分行业的质量管理体系;CMM/CMMI只适用于软件行业的质量管理体系;六西格玛是考虑质量、成本、进程三方面的不分行业的质量管理体系。软件质量模型项目和产品的区别(依据需求来源不同) :项目:由特定用户提出,以合同、契约为方式表现,企业需求人员获得;产品:由企业内部的市场人员进行对潜在客户群进行分析后得出。质量模型:一组特性及特性之间的关系,它提供规定质量需求和评价质量的基础。a)内部质量: 从接
25、收到用户的原始需求开始到产品交付用户之间的所有中间过程产品的质量(由开发与测试人员决定)(影响因素“铁三角”流程最主要)b)外部质量:软件系统作为一个整体运行时所体系出来的特性(系统测试-测试人员决定)c)使用质量:用户评价软件质量模型1) 软件功能性(核心)当软件在指定条件下使用时,软件产品提供满足明确和隐含需求的功能的能力。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 36 页11 a)适合性( Suitability ) :软件产品为指定的任务和用户目标提供一组合适的功能的能力。b)准确性 (Accuracy) : 软件产品提
26、供具有所需精确的正确或相符的结果或效果的能力。c)互操作性( Interoperabiblity ) :软件产品与一个或更多的规定系统进行交互的能力。d)保密安全性( Security) :软件产品保护信息和数据的能力,以使未授权的人员或系统不能阅读或修改这些信息和数据,而不拒绝授权人员或系统对它们的访问。e)功能性的依从性2) 软件可靠性在指定条件下使用时,软件产品维持规定的性能级别的能力。a)成熟性( Maturity ) :软件产品为避免由软件中错误而导致失效的能力。b)容错性( Fault Tolerance) :在软件出现故障或者违反指定接口的情况下,软件产品维持规定的性能级别的能力
27、。c)易恢复性( Recoverability ) :在失效发生的情况下,软件产品重建规定的性能级别并恢复受直接影响的数据的能力。(MTTR 平均恢复时间和恢复业务的程序)d)可靠性的依从性3) 软件易用性在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力a)易理解性( Understandability ) :软件产品使用用户能理解软件是否合适以及如何能将软件用于特定的任务和使用环境的能力。b)易学性( Learnability ) :软件产品使用户能学习其应用的能力。c)易操作性( Operability ) :软件产品使用户能操作和控制它的能力。d)吸引性( Attracti
28、veness) :软件产品吸引用户的能力。e)易用性的依从性4) 软件效率(性能测试重点)在规定条件下,相对于所用资源的数量,软件产品可提供适当性能的能力。a)时间特性( Time Behavior ) :在规定条件下,软件产品执行其功能时,提供适当的响应和处理时间以及吞吐率的能力。(即完成用户的某个功能需要的响应时间(响应时间是从发起请求到收到成功提示信息)b)资源利用性( Resource Utilization ) :在规定条件下,软件产品执行其功能时,使用合适的资源数量和类别的能力。c)效率依从性5) 软件维护性软件产品可被修改(修正、改进或软件对环境、需求和功能规格说明变化的适应)的
29、能力。a)易分析性( Analyzability ) :软件产品诊断软件中的缺陷或失效的原因或识别待修改部分的能力。b)易改变性( Changeability ) :软件产品使指定的修改可以被实现的能力。c)稳定性( Stability ) :软件产品避免由于修改而造成意外结果的能力。d)易测试性( Testability ) :软件产品使已修复软件能被确认的能力。e)维护性的依从性6) 软件可移植性软件产品从一种环境迁移到另一种环境的能力。a)适应性( Adaptability ) :软件产品无需采用有别于为考虑该软件的目的而准备的活动或手段就可能适应不同的指定环境的能力。精选学习资料 -
30、- - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 36 页12 b)易安装性( Installability ) :软件产品在指定环境中被安装的能力(安装测试)。c)共存性( Co-existence) :软件产品在公共环境中同与其分享公共资源的其他独立软件共存的能力。d)易替换性( Replaceablity) :软件产品在同样环境下,替代另一个相同用途的指定软件产品的能力。e)可移植性的依从性软件质量活动(软件质量保证(SQA )和测试)SQA 和测试的关系:a)SQA 从流程方面保证了软件的质量b)测试从技术方面保证了软件的质量c)只进行 SQA
31、活动或者只进行测试活动不一定能产生很好的软件质量。SQA 的主要工作范围: (被称为老师,医生,警察)a)指导(指导项目成员执行过程,培训)并监督(过程的执行是否符合规范)项目安装过程实施b)对项目进行度量(度量数据的采集,度量使得不可见的智力过程变得可见)、分析,增加项目的可视性c)审核(审计过程产品是否符合相关模块,审计问题产生原因)工作产品,评价工作产品和过程质量目标的符合度d)进行缺陷分析(提出过程改进意见给SEPG) ,缺陷活动预防,发现过程的缺陷,提供决策的参考,促进过程的改进SQA 需要职能:a)软技能(个人素质、沟通能力)自我修炼b)掌握项目管理c)熟知软件工程d)了解业务知识
32、e)熟练掌握过程改进体系质量管理 PDCA 循环(螺旋式上升逐步实现质量目标):Plan 计划:制定计划,明确目标;基于目标的方法步骤Do 执行:执行Plan Check 检查:检查实际执行结果与计划中预期目标的差距(目标的实现程度,若存在差距,分析原因)Act 改进:根据分析原因给出明确方案并制定下一轮过程改进目标精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 36 页13 软件度量的概念和目的:度量:对事物属性的量化表示软件度量: 是指计算机软件中范围广泛的测度,包括对软件系统、构件或生命周期过程具有的某个给定属性的度的一个定量测
33、量目的:a)提高软件生产率,缩短产品研发周期,降低研发成本、维护成本(对于开发商)b)提高软件产品质量,提高用户满意度(对用户)c)为组织持续改进提供量化的指标和反馈(对开发商长远)软件度量的作用:a)理解b)预测c)评估d)改进软件度量分类:四个基本度量项:a)规模( Size) :软件产品的大小b)工作量( Effort ) :完成各软件工作产品和活动所用人时(或人天等)c)进度( Schedule) :各软件工作产品和活动开始和结束的时间d)质量( quality)-缺陷 (defect):在各软件工作产品和活动中产生的缺陷数其他度量指标:a)缺陷密度:研发活动发现缺陷密度;研发活动引入
34、缺陷密度;工作产品缺陷密度b)生产率: SRS、HLD 、LLD阶段文档生产率:页/人天;编码阶段生产率:KLOC/人天; UT、IT、ST 用例设计阶段生产率:用例/人天c)测试执行效率:执行用例数/人天d)用例密度:用例数/KLOC e)。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。纠正措施计划设计检查检测实施执行Plan 计划Do 执行Act 改进Check 检查精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 36 页14 测试方法是否需要了解软件内部结构(黑盒测试和白盒测试)注灰盒测试是否需要执
35、行被测对象(静态测试和动态测试)是否需要借助自动化脚本或工具进行测试(人工测试和自动化测试)黑盒测试和白盒测试什么是白盒测试(基于程序结构的逻辑驱动测试)?白盒测试是依据被测软件分析程序内部构造,并依据内部构造设计用例,来对内部控制流程进行测试,可完全不顾程序的整体功能实现情况。(玻璃盒测试,透明盒测试,开放盒测试,结构化测试,逻辑驱动测试)】为什么进行白盒测试?a)白盒测试一般在测试前期进行,通过达到一定的逻辑覆盖率指标,使得软件内部逻辑控制结构上的问题能基本得到消除b)白盒测试能保证内部逻辑结构达到一定的覆盖程度,能够给予软件代码质量的更大保证c)白盒测试发现问题后解决问题的成本较低白盒测
36、试的常用技术: (静态分析和动态分析)a)静态分析:控制流分析、数据流分析、信息流分析等;控制流分析1) 相关概念程序元素: 一个程序元素通常是一个条件,一个简单的语句或者一块语句(多个连续语句)控制流关系:一个程序的控制流关系叙述了程序元素和它们执行的次序之间的联系控制流图:对应于控制流关系的图控制流矩阵:由控制流图得到,反映相邻程序元素之间的先后顺序关系2) 控制流分析步骤确定所有程序元素;根据程序元素之间的相互关系得到控制流图;将控制流图转换成控制流矩阵;通过数据结构的形式把控制流矩阵表示出来;借助算法对控制流进行分析,找出存在的问题;3) 控制流分析可以发现的问题确保写出的程序不应包含
37、:转向并不存在的标号;没有用的语句的标号;从程序入口进入后无法达到的语句;不能达到停机语句的语句。数据流分析1) 相关概念精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 36 页15 数据流分析法关键是数据的定义和引用。数据的定义:如果程序中某一语句执行时能改变某程序变量V 的值,则称V 是被该语句定义的。数据的引用:如果一语句的执行引用了内存中变量V 的值,则说该语句引用变量V。2) 数据流分析步骤根据代码得到数据流表;分析数据流表找到以下两种错误:(变量未定义但被引用;变量定义但未被引用);根据分析结果对代码进行修正和优化。信息流
38、分析b)动态分析:逻辑覆盖测试(分支测试、路径测试等)、程序插装等;逻辑覆盖测试(分支测试、路径测试等)程序插装借助往被测程序中插入操作来实现测试目的的方法。(比如:打印语句,打印我们最关系的信息)。白盒测试的特点:a)测试人员需要了解软件的实现;b)可以检测代码中的每条分支和路径;c)揭示隐藏在代码中的错误;d)对代码的测试比较彻底;e)实现代码结构上的优化;f)白盒测试投入大,成本高;g)白盒测试不验证规格的正确性。什么是黑盒测试(基于规格的测试)?黑盒测试把被测对象看成一个黑盒,只考虑其整体特征,不考虑其内部具体实现。黑盒测试针对的被测对象可以是一个系统,一个子系统,一个模块,一个子模块
39、,一个函数等。常见的黑盒测试类型:a)功能性测试:一种是顺序测试每个程序特性或功能,另一种途径是一个模块一个模块的测试,即每个功能在其最先调用的地方被测试;b)容量测试:检测软件在处理海量数据时的局限性,能发现系统效率方面的问题;c)负载测试: 检测系统在一个很短时间内处理一个巨大的数据量或执行许多功能调用上的能力;d)恢复性测试:主要保证系统在崩溃后能够恢复外部数据的能力。常用的黑盒测试的方法:等价类划分法;边界值分析法;因果图分析法;判定表法;状态迁移法;。 。 。 。 。 。 。 。 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页
40、,共 36 页16 黑盒测试的特点:a)对于更大的代码单元来说(子系统甚至系统)比白盒测试效率更高;b)测试人员不需要了解实现的细节,包括特定的编程语言;c)从用户的视角进行测试,很容易被大家理解和接受;d)有助于暴露任何规格不一致或有歧义的问题;e)没有清晰的和简明的规格,测试用例很难设计的;f)不能控制内部执行路径,会有很多内部程序路径没有被测试到;g)不能直接针对特定的程序段,这些程序可能非常复杂(因此可能隐藏更多的问题)。灰盒测试利用被测对象的整体特性信息,采用黑盒测试方法;利用被测对象的内部具体实现信息,采用白盒测试方法;如果既使用被测对象的整体特性信息,又利用被测对象的内部具体实现
41、信息,采用灰盒测试方法。两种信息占的比例不同,相应的灰度就不同。静态测试和动态测试静态测试: 不运行被测试的软件系统,而是采用其他手段和技术对被测试软件进行检测的一种测试技术。 (代码走读、文档评审、程序分析等)。静态测试常用技术静态分析技术:定义:一种不通过执行程序而分析程序执行的技术。功能: 检查软件的表示和描述是否一致,没有冲突或者没有歧义,它描述的是纠正软件系统的描述、表示和规格上的错误,因此是任何进一步测试执行的前提。主要有三种不同的程序测试可能性:a)考虑程序是否满足编码规则,语法上是否具有一致性和完整性;b)考虑文档描述是否规范、准确、便于查阅;c)考虑程序和文档之间的一致性。静
42、态分析技术结构手工自动正规检视技术评审走查静态验证语法分析器符号执行器手工静态分析 (最重要的手工技术是同行评审 (对象: 计划、 需求文档、 设计图、 代码等) :根据同行评审形式正规的程度分为:a)正规检视:以某个方案的裁决为目的,形式比较严格,有固定的流程,多用于文档的评审;b)技术评审:以某个方案的裁决为目的,一般由企业高层技术人员和管理人员参与;c)走查:以发现软件产品中的缺陷为目的,没有严格规定,比较随意。自动化静态分析精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 16 页,共 36 页17 动态测试: 按照预先设计的数据和步骤去运行
43、被测软件系统,从而对被测软件系统进行检测的一种技术。动态测试常用技术动态分析技术:定义:对软件系统运行行为进行分析,包含程序在受控的环境下使用特定的输入进行正式的运行,和期望的结果比较以检查系统运行是正确还是不正确。常用的动态分析技术:路径测试分支测试性能测试。 。 。 。 。 。 。 。常用动态分析工具功能动态分析类型工具的功能测试覆盖率分析(白盒)测试对代码的检测范围跟踪(白盒)跟踪程序执行期间的所以路径,例如所有变量的值等调整(黑盒)度量程序执行过程中使用的资源模拟(黑盒)模拟系统的一部分,例如无法获得的代码或硬件断言检查(白盒)测试在复杂逻辑结构中是否某个条件已经被给出Logiscop
44、e 中的 Rulechecker(白盒静态技术 ),Logiscope 中的 Testchecher(白盒动态技术) 、TCL(白盒动态技术) 。人工测试和自动化测试人工测试:测试活动(如评审、测试设计、测试执行等)由人工来完成,狭义上是指测试执行由人工完成,这是最基本的测试形式。自动化测试: 一般是指通过计算机模拟人的测试行为,替代人的测试活动,狭义上是指测试的执行由计算机完成。自动化测试的意义:a)对程序新版本运行前一版本执行的测试,提高回归测试效率b)可以运行更多更频繁的测试,比如冒烟测试c)可以执行手工测试困难或不可能做的测试,比如大量的重复操作或者集成的测试d)更好地利用资源,比如测
45、试仪器或者被测对象e)测试具有一致性和可重复性,即自动化测试的步骤和结果是完全一样的f)测试的复用性,即自动化测试脚本可以拆分开给其他测试脚本使用g)可以更快地将软件推向市场,软件发布前进行高效的回归测试,减少软件发布的时间h)增加软件的信任度,通过自动化测试提高了测试效率,把节约的时间拿出来做更多的测试。自动化测试的限制:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 17 页,共 36 页18 a)不能取代手工测试,自动化测试只能提供测试效率,不能提高测试的有效性,即不可能发现更多的缺陷b)手工测试比自动化测试发现的缺陷更多c)对测试设计依赖性
46、极大,测试设计的不好会遗漏问题d)自动化测试对软件开发具有很大的依赖性,开发上出现变更可能导致前面的自动化测试完全失效e)工具本身并不具备想象力,工具不具有职能。自动化测试的误区:a)不现实的期望,希望自动化能取代手工测试b)缺乏测试实践经验,手工测试都做不好,或者经验积累不够,就尝试自动化,很难成功c)期望自动化测试发现大量新的缺陷,自动化只能保证测试执行的效率,确保已有的问题不再发生,发现新缺陷不是其目的d)安全性错觉,认为进行自动化测试的软件就安全的,质量有保证的(只有手工测试做好了,明确了测试观察点,才能把自动化测试做好,所以手工测试是自动化测试的一个基础)需求管理软件需求管理简介需求
47、(强调做什么(What)而不是如何做(How ) )的定义:SRS 就是( 1)解决用户问题或达到用户目标所需的条件或能力;2)为遵循合同、标准、规格或其他要求的正式文档,系统必须满足或拥有的条件或能力。)需求管理的定义:使用户和项目团队之间,就不断变更的需求,达到并保持一致的过程。(基线:a)评审后方可建立b)受控,需修改时必须经过CCB( Change Control Board 变更控制委员会)批准c)是下一步开始工作的基础)需求管理的要求:a)软件需求要基线化b)软件需求的实现要跟踪,要记录,要标示c)要测量软件需求d)要验证软件需求精选学习资料 - - - - - - - - - 名
48、师归纳总结 - - - - - - -第 18 页,共 36 页19 软件需求工程介绍需求开发:a)需求获取:根据需求来源的不同分为:项目和产品b)需求分析: 1)根据用户提出的显示需求,充分的挖掘其背后隐藏的隐式需求;2)严格定义所以需求(显示和隐式)的规格 (功能、性能、约束、质量、其他)c)需求定义:将所获取的所有需求以规范化的语言表示d)需求验证:验证需求是否得到实现(需求陷阱:缺少用户参与;用户扁平需求;项目范围不断扩大;切忌需求没完没了;切忌模糊不清的需求等)需求管理( CMM 二级的第一个KPA) :a)需求分配:需求本身是分层次的(业务需求;用户需求;软件需求),并非所有项目都
49、有需求分配;b)需求评审:评审已分配的需求(原始需求);对已形成的SRS 进行评审c)需求基线:建立需求基线使得SRS可控d)需求跟踪:贯穿于整个软件开发过程e)变更控制:需求变更的控制(失效的变更控制;没有进行变更控制(几乎不存在)软件需求变更:a)需求变更可能发生在任意阶段b)要求变更的需求进行变更控制c)变更的基础是需求基线需求开发需求管理需求工程需求获取需求分析需求定义需求验证需求分配需求评审需求基线需求跟踪变更控制精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 19 页,共 36 页20 软件需求跟踪流程介绍软件需求跟踪流程Input T
50、ask Output SOW为工作说明书; AR为原始需求; CRs为需求变更RTM (Requirement Truceablity Matrix )需求跟踪矩阵初始化 RTM 更新 RTM SOW or AR RTM Form 准备基线化的文档,代码初始的 RTM 更 新 后 的RTM 对于已经基线化的SRS、设计文档、 代码、测试文档等的 CRs 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 20 页,共 36 页21 (注意 Excel 最下排的不同需求列表)RTM 初始化:a)将原始需求列入原始需求列表b)将 SRS 列入 SRS 列表