济南大学张景祥版权所有SoftwareTest21软件测试技术软件测试工作流程济南大学张景祥版权所有SoftwareTest回顾需求分析时需要经历那些步骤?需求分析中测试人员的工作是?需求测试的方法?需求说明书的检查要点?2Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest主要内容软件测试工作流程测试过程软件测试实施错误级别测试策略测试环境3Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest软件测试工作流程测试工作的主要步骤测试计划:测试人员对需求进行分析,最终定义一个测试集合测试设计与开发:测试人员根据软件需求,完成测试用例执行测试:建立测试环境;根据前面编写的测试计划和测试用例运行测试;记录测试结果;报告软件缺陷;跟踪软件缺陷,直至其被处理;分析测试结果4Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest测试信息流测试结果分析排错可靠性分析测试结果错误测试配置测试工具软件配置预期结果预期的可靠性改正的软件整个测试过程需要三类输入软件配置:包括软件需求规格说明、软件设计规格说明、源代码等;测试配置:包括测试计划、测试用例、测试驱动程序等。测试工具:为提高软件测试效率,可使用测试工具支持测试工作5Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest测试过程需求分析设计编码系统组装单元修正修正修正通过通过通过(集成)6Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest测试与开发前期工作的关系需求分析概要设计详细设计编码单元测试集成测试系统测试7Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest生存期各阶段活动分析设计编码维护安装测试单元测试系统测试验证确认系统测试质量控制集成测试回归测试验收测试8Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest软件生存期各阶段的活动1.需求分析阶段制定本项目的计划设置基于需求的测试用例对需求进行评审与分析对用户手册初稿进行评审与分析2.概要设计阶段修订计划制定基于设计的测试步骤对概要设计进行评审与分析3.详细设计阶段设置基于设计的功能测试数据对详细设计进行评审与分析9Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest软件生存期各阶段的活动4.程序编写和单元测试完成测试用例说明书进行单元测试进行集成测试5.安装进行系统测试进行验收测试6.运行和维护阶段软件评价软件修改评价回归测试(引自美国国家标准局信息处理标准FIPSPUB101)10Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest软件测试的职业要求测试人员的目标:分析或运行代码来暴露代码中潜在的错误软件测试员的基本目标是发现软件错误软件测试员所追求的是尽可能早地找出软件错误软件测试人员必需确保找出的软件错误得以关闭11Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest测试人员主要工作设计测试建立一个合适的测试执行环境评估、获取、安装和配置自动测试工具执行测试撰写适当的测试文档12Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest软件测试实施开发方测试用户测试第三方测试13Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest开发方测试通常也叫“α测试”。开发方通过检测和提供客观证据,证实软件的实现是否满足规定的需求。α测试是由一个用户在开发环境/模拟环境下进行的测试。目的是评价软件产品的功能和性能,尤其注重产品的界面和特色。α测试可以从软件产品编码结束之时开始,或在模块(子系统)测试完成之后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。14Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest用户测试通常也叫“β测试”(不同于验收测试)。β测试是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试。与α测试不同的是,开发者通常不在测试现场。β测试的目的是衡量软件产品的功能和性能,尤其注重产品的支持性,包括文档、客户培训和支持产品生产能力。只有当α测试达到一定的可靠程度时,才能开始β测试。它处在整个测试的最后阶段。同时,产品的所有手册文本也应该在此阶段完全定稿。15Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest第三方测试介于软件开发方和用户方之间的测试组织的测试。第三方测试也称为独立测试。软件质量工程强调开展独立验证和确认(IV&V)活动。软件第三方测试是由在技术、管理和财务上与开发方和用户方相对独立的组织进行的软件测试。一般情况下是在模拟用户真实应用环境下,进行软件测试。16Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest错误级别错误级别(1)一级:不能完全满足系统要求,基本功能未完全实现;或者危及人身安全。系统崩溃或挂起等导致系统不能继续运行。(2)二级:严重地影响系统要求或基本功能的实现,且没有更正办法(重新安或重新启动该软件不属于更正办法)。使系统不稳定、或破坏数据、或产生错误结果,或部分功能无法执行,而且是常规操作中经常发生或非常规操作中不可避免的主要问题。17Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest(3)三级:严重地影响系统要求或基本功能的实现,但存在合理的更正办法(重新安装或重新启动该软件不属于更正办法)。系统性能或响应时间变慢、产生错误的中间结果但不影响最终结果等影响有限的问题。(4)四级:使操作者不方便或遇到麻烦,但它不影响执行工作功能或重要功能。界面拼写错误或用户使用不方便等小问题或需要完善的问题。(5)五级:其他错误。光标跳转设置不好,鼠标(光标)定位错误一些建议性问题。18Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest测试策略在完成了分析和测试软件需求之后,要着手制定测试策略。首先要考虑以下一些问题:(1)测试范围(2)测试方法(3)质量标准(4)自动化测试工具的选择(5)测试软件的编写(6)与项目相关的一些特殊考虑19Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest在测试策略中所需要完成的主要步骤:确定测试范围确定测试方法定义测试标准选择测试工具20Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest确定测试范围测试过度,则在测试覆盖中存在大量冗余;测试范围过小,则存在遗漏错误的风险。定义测试范围是一个在测试时间、费用和质量风险之间寻找平衡的过程。通过分析产品的需求文档识别哪些内容需要被测试。测试范围不能仅仅由测试人员来确定。21Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest定义测试范围需要考虑下列一些因素:首先测试最高优先级的需求。测试新的功能和代码或者改进的旧功能。使用等价类划分来减小测试范围重点测试经常出问题的地方22Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest确定测试范围方法可采用提问单的方式来确定测试范围哪些功能是软件的特色?哪些功能是用户最常用的?如果系统可以分块卖的话,哪些功能块在销售时最昂贵?哪些功能出错将导致用户不满或索赔?哪些程序是最复杂、最容易出错的?哪些程序是相对独立,应当提前测试的?哪些程序最容易扩散错误?哪些程序是全系统的性能瓶颈所在?哪些程序是开发者最没有信心的?23Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest选择测试方法在不同的开发阶段,需要选择不同的测试方法。在瀑布生命周期模型中不同的阶段可以选择的不同的测试方法:需求分析阶段:静态测试概要设计与详细设计阶段:静态测试编码和单元测试阶段:静态测试、动态测试、白盒测试集成测试阶段:动态测试、白盒测试、黑盒测试系统测试阶段:动态测试、黑盒测试验收测试阶段:动态测试、黑盒测试24Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest定义测试标准定义测试标准的目的是设置测试中遵循的规则。需要制订以下几种标准:测试入口标准测试暂停与继续标准测试出口标准25Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest制订测试标准常用规则(一)基于测试用例的规则当测试用例的不通过率达到某一百分比时,则拒绝继续测试。优点是适用于所有的测试阶段缺点是太依赖于测试用例。基于“测试期缺陷密度”的规则“测试期缺陷密度”:测试一个CPU小时发现的缺陷数。如果在相邻n个CPU小时内“测试期缺陷密度”全部低于某个值m时,则允许正常结束测试。26Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest制订测试标准常用规则(二)基于“运行期缺陷密度”的规则“运行期缺陷密度”:软件运行一个CPU小时发现的缺陷数如果在相邻n个CPU小时内“运行期缺陷密度”全部低于某个值m时,则允许正常结束测试。27Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest测试停止标准软件测试停止标准(1)软件系统经过单元、集成、系统测试,分别达到单元、集成、系统测试停止标准。(2)软件系统通过验收测试,并已得出验收测试结论。(3)软件项目需暂停以进行调整时,测试应随之暂停,并备份暂停点数据。(4)软件项目在其开发生命周期内出现重大估算,进度偏差,需暂停或终止时,测试应随之暂停或终止,并备份暂停或终止点数据。28Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest单元测试停止的标准(1)单元测试用例设计已经通过评审(2)按照单元测试计划完成了所有规定单元的测试(3)达到了测试计划中关于单元测试所规定的覆盖率的要求(4)被测试的单元每千行代码必须发现至少3个错误(不含五级错误)(5)软件单元功能与设计一致(6)在单元测试中发现的错误已经得到修改,各级缺陷修复率达到标准29Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest集成测试停止标准(1)集成测试用例设计已经通过评审(2)按照集成构件计划及增量集成策略完成了整个系统的集成测试(3)达到了测试计划中关于集成测试所规定的覆盖率的要求(4)被测试的集成工作版本每千行代码必须发现2个错误(不含五级错误)30Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest(5)集成工作版本满足设计定义的各项功能、性能要求(6)在集成测试中发现的错误已经得到修改,各级缺陷修复率达到标准31Instructor:ruby2020/7/21济南大学张景祥版权所有SoftwareTest系统测试停止标准(1)系统测试用例设计已经通过评审(2)按照系统测试计划完成了系统测试(3)达到了测试计划中关于系统测试所规定的覆盖率的要求(4)被测试的系统每千行代码必须发现至少1个错误(不含五级错误)(5)系统满足需求规格说明书的要求(6)在系统测试中发现的错误已经得到修改