测试概述术语和定义软件测试的发展为什么要进行软件测试多视角看软件测试软件测试研究的主要内容软件测试的原则测试层次软件测试要素测试用例和维恩图软件测试生命周期软件测试的困境测试概述——多视角看测试多种角色——开发者、用户。。。多种层次——系统、子系统、模块。。。多种目的——找错、证明程序正确、指导开发、得到质量信息。。。多种角度——程序测试、工程化。。。多种方法——白盒、黑盒。。。测试概述——多视角看测试测试中的心理学问题用户:暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。软件开发者:表明软件产品中不存在错误,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心。正确的态度:发现错误时,关注于改正错误,而不是埋怨具体的开发人员测试概述术语和定义软件测试的发展为什么要进行软件测试多视角看软件测试软件测试研究的主要内容软件测试的原则测试层次软件测试要素测试用例和维恩图软件测试生命周期软件测试的困境测试概述——测试的研究内容软件工程与软件测试程序测试方法自动化测试/测试辅助工具软件质量与度量其他测试的研究内容(软件工程与测试)软件测试是软件开发过程的一个阶段软件开发模型影响软件测试软件测试不只是程序测试软件测试应贯穿于软件定义与开发的整个期间源程序的测试中找到的程序错误不一定都是程序编写过程中造成的软件测试受软件开发各种因素的影响软件测试本身必须工程化测试的研究内容(软件工程与测试)软件测试在软件工程中的作用是软件开发过程中不可缺少的一环将占据主要的开发时间和经费发现和弥补开发中的错误和缺陷保证软件质量的手段证明软件是可用的测试的研究内容(软件工程与测试)软件工程对软件测试的约束软件测试的依据来源于开发过程软件测试的结果必须反馈给开发过程软件测试的时间、经费、人员受到约束测试的研究内容(软件工程与测试)软件工程模型中的软件测试软件测试方法模型随着软件工程模型发展而变化不同模型中,软件测试地位和作用不一样软件测试的作用:找到软件bug;保证软件质量;指导软件开发;测试的研究内容(软件工程与测试)瀑布模型RequirementsdefinitionSystemandsoftwaredesignImplementationandunittestingIntegrationandsystemtestingOperationandmaintenance测试的研究内容(软件工程与测试)螺旋模型RiskanalysisRiskanalysisRiskanalysisRiskanalysisProto-type1Prototype2Prototype3Opera-tionalprotoypeConceptofOperationSimulations,models,benchmarksS/WrequirementsRequirementvalidationDesignV&VProductdesignDetaileddesignCodeUnittestIntegrationtestAcceptancetestServiceDevelop,verifynext-levelproductEvaluatealternativesidentify,resolverisksDetermineobjectivesalternativesandconstraintsPlannextphaseIntegrationandtestplanDevelopmentplanRequirementsplanLife-cycleplanREVIEW测试的研究内容(软件工程与测试)软件的可测试性:软件能否进行测试可操作性:能否清楚地进行操作?可观察性:操作结果能否很容易看到?可控执行:测试过程是否是可控制的?可分解性:能否清楚的制定测试目标?简洁性:没有复杂的结构和逻辑。稳定性:测试中会有少量的修改。测试的研究内容(软件工程与测试)软件测试是软件开发过程的一个阶段软件开发模型影响软件测试软件测试不只是程序测试软件测试应贯穿于软件定义与开发的整个期间源程序的测试中找到的程序错误不一定都是程序编写过程中造成的软件测试受软件开发各种因素的影响软件测试本身必须工程化测试的研究内容(软件工程与测试)软件错误或缺陷的来源产品说明书:没有说明书、说明书不全面、经常修改、开发小组的沟通不够。。。设计方案:片面性、易变性、沟通不够。。代码错误:往往也是由软件复杂性、说明文档不足、进度压力等造成,测试错误测试的研究内容(软件工程与测试)软件开发团队成员项目经理产品设计人员构架师:定义代码和数据结构的总体内部设计、数据通信等,编写高级白盒测试计划,设计验收测试等领域事务专家或软件分析师:理解客户的真正需要,用设计人员能理解的术语定义客户需求用户界面程序员:创建用户界面主任程序员:编写内部设计规格说明产品营销经理技术支持代表测试的研究内容(软件工程与测试)软件开发团队成员(续)文档编写人员测试人员特定项目会包括其他团队成员美工可靠性分析师安全性分析师硬件工程师律师。。。测试的研究内容(软件工程与测试)软件测试是软件开发过程的一个阶段软件开发模型影响软件测试软件测试不只是程序测试软件测试应贯穿于软件定义与开发的整个期间源程序的测试中找到的程序错误不一定都是程序编写过程中造成的软件测试受软件开发各种因素的影响软件测试本身必须工程化测试的研究内容(软件工程与测试)TestingtendstointercepterrorsinorderoftheirprobabilityofoccurrenceNumberofdefectsLesslikely=MorecriticalProgressoftestingFoundNotyetfound软件测试何时可以停止?测试的研究内容(软件工程与测试)软件测试何时可以停止?软件系统经单元、集成、系统测试,分别达到单元、集成、系统测试停止标准软件系统通过验收测试,并已得出验收测试结论软件项目需暂停以进行调整时,测试应随之暂停,并备份暂停点数据软件项目在其开发生命周期内出现重大估算,进度偏差,需暂停或终止时,测试应随之暂停或终止,并备份暂停或终止点数据测试的研究内容(软件工程与测试)软件测试何时可以停止?太常见无法保证软件可靠性模型支持该选择若已遵循测试规则和指导方针,则该选择是很好的,否则类似选择1好的选择非常好的选择时间用光继续测试未产生新的失效继续测试未发现新的缺陷无法考虑新的测试用例回报很小达到所要求的覆盖所有缺陷都已经清除测试的研究内容(软件工程与测试)软件测试是软件开发过程的一个阶段软件开发模型影响软件测试软件测试不只是程序测试软件测试应贯穿于软件定义与开发的整个期间源程序的测试中找到的程序错误不一定都是程序编写过程中造成的软件测试受软件开发各种因素的影响软件测试本身必须工程化测试的研究内容(软件工程与测试)软件测试需要工程化软件测试是一项复杂的工作软件测试的成本、效率和可靠性问题软件测试必须从艺术向工程转变软件测试工作必须是可控的软件测试的结果必须是可信的测试的研究内容(软件工程与测试)软件测试的一般过程SoftwaretobetestedTestCaseOutputTestCaseGenerationVerification测试的研究内容(软件工程与测试)开发过程中软件测试的相关工作软件测试计划软件测试人员组织测试实施过程测试结果反馈回归测试经典的测试计划模板(见文件)软件测试活动流程图测试的研究内容(软件工程与测试)测试计划定义每一测试阶段的功能、角色、方法在测试开始以前,一般是需求分析阶段,就要制定测试计划主要的计划要素是:每一测试阶段的目标每个测试活动的安排(人员/时间)和责任需要的工具、设备、测试库等制定测试的完成标准测试的研究内容(软件工程与测试)测试的人员组织开发人员的测试优点:知道实现的方法和细节,测试具有针对性;能及时进行修改缺点:心理上认为程序正确,有意无意地回避问题;存在盲区,对某些问题忽略了,不全面独立测试优点:根据软件说明进行测试,较全面;有专业知识,测试将有一定的针对性缺点:需要学习软件的使用方法,时间、金钱代价高用户测试优点:最终用户,对常用的功能和常用的方式测试较多;知道软件的真正用途和含义,能指出因软件需求造成的问题缺点:不全面;非专业人员,测试代价较高;反馈不及时测试的研究内容(软件工程与测试)测试用例编写软件测试中最为困难,工作量最大,最具有挑战性的工作;用尽可能少的测试用例,发现尽可能多的程序错误;测试用例的覆盖率;预期输出;用于测试用例选择的不同的模型测试的研究内容(软件工程与测试)一个典型的测试用例信息测试用例ID目的前提输入预期输出后果其它信息测试的研究内容(软件工程与测试)测试执行测试可以人工执行,也可以自动执行;比较测试产生的结果和预期结果;记录所有测试用例的执行历史;采用各种手段跟踪测试用例执行情况;测试执行中的困难;测试的研究内容(软件工程与测试)测试文档测试入口文档需求规格说明程序设计说明书用户使用说明书测试计划测试用例报告测试情况报告测试总结报告测试的研究内容(软件工程与测试)软件测试的“测试”用什么来保证软件测试的可靠性?测试用例的覆盖率;测试执行的正确性;测试能正确的发现问题;测试文档能正确反映问题;测试的研究内容(软件工程与测试)回归测试(RegressionTesting)对测试后并修改后的程序,执行以前已经执行过的测试用例,包括以前测试通过的用例,以保证对程序的修改过程中没有引入新的错误回归测试,可以重复利用测试用例,可以进行自动化测试测试的研究内容(程序测试)按测试过程测试用例生成测试执行过程测试结果总结按程序开发模型面向对象程序面向过程程序按被测程序的不同类型WEB程序分布式软件嵌入式软件并行软件图形化界面(GUI)…测试的研究内容(程序测试的一般过程)测试的研究内容(程序测试的信息流)软件配置:软件需求规格说明、软件设计规格说明、源代码等测试评价调试可靠性模型可靠性预测错误改正的软件测试配置:测试计划、测试用例、测试驱动程序等。是软件配置的一个子集测试工具:测试数据自动生成程序、静态分析程序、动态分析程序、测试结果分析程序、以及驱动测试的测试数据库等等测试过程模型测试的研究内容(软件质量与度量)软件质量量度正确性Correctness可靠性Reliability(dependability)容错性Robustness安全性Safety保密性Security(survivability)执行效率Performance产品化Productivity可维护性Maintainability接口良好portability协同工作特性interoperability测试概述术语和定义软件测试的发展为什么要进行软件测试多视角看软件测试软件测试研究的主要内容软件测试的原则测试层次软件测试要素测试用例和维恩图软件测试生命周期软件测试的困境测试概述——测试的原则软件测试的衡量标准多:能找到尽可能多的、以至于所有的错误快:能尽可能早地发现最严重的错误好:找到的错误是关键的、用户最关心的;找到错误后能重现找到的错误,并为其修正提供尽可能多的信息。省:能用最少的时间、人力和资源发现错误;测试的过程和数据可重用测试概述——测试的原则1、测试应基于用户需求2、测试设计是关键测试时间和资源是有限的测试到所有情况是不可能的避免冗余的测试测试用例应设计良好3、应尽早开始测试并不断地进行测试尽早制定测试计划测试从模块级开始