软件测试方法和技术.ppt
软件测试方法和技术 Software Testing methods and techniques,先锋软件职业技术学院/先锋软件研发中心 任丽丽,软件开发系列软件测试,1 基本概念,2 测试流程和方法,3 测试模型,4 测试文档,5 功能测试,6 易用性测试,7 Testtrack,8 缺陷管理,习题,实训点,习题,实训点,习题,实训点,习题,实训点,习题,实训点,习题,实训点,习题,实训点,习题,实训点,软件测试方法和技术 Software Testing methods and techniques,第一讲 软件测试基本概念 Software Testing methods and techniques,软件开发系列软件测试,在本章中,我们将学习:什么是测试测试的重要性软件生命周期测试的职责测试工程师应该具备的素质测试的基本原则,软件测试基本概念概览,完成此课程之后,学员将具备以下能力:理解软件测试的含义为什么要测试?测试的重要性何在?测试的现状、前景?测试工程师能从事哪些工作?要满足哪些条件?测试在软件开发过程中扮演什么角色?测试要做哪些事情?测试人员应该具备哪些素质?,软件测试基本概念目标,什么是测试测试的重要性软件生命周期测试的职责测试工程师应该具备的素质测试的基本原则,软件测试基本概念课程目录,软件测试基本概念测试就是“大家来找碴”,对于测试的定义,一般有三种不同的说法:定义1:软件测试是为了发现错误而执行程序的过程。定义2:软件测试是根据软件开发各阶段的规格说明书和程序的内部结构而精心设计的一批测试用例(即输入的数据及其预期的结果),并利用这些测试用例运行程序以及发现错误的过程。定义3:软件测试是软件测试工程师根据规格说明书在实验室通过一些技术手段和专业工具模拟现场环境,以期发现软件中存在的问题。,软件测试基本概念什么是测试,这三种定义其实都说明了以下问题:测试的目的:测试是为了发现软件中存在的问题。从 这个意义上说,测试不是为了证明软件 没有错,而是证明软件存在问题。测试的依据:测试所有的依据都来源于需求规格说明 书。测试的人员:测试必须是由专门的测试工程师来完成 的,而不是开发人员自己测试自己的代 码,或开发人员交叉测试。测试的方法:测试必须设计测试用例,测试用例至少 包括三个要素:输入的典型数据、预期 输出的结构和测试场景描述(即测试的 步骤)。测试往往要借助专业的测试工 具。,软件测试基本概念什么是测试,什么是测试测试的重要性软件生命周期测试的职责测试工程师应该具备的素质测试的基本原则,软件测试基本概念课程目录,软件在开发过程中,虽然经过了开发人员的调试,但还是难免会出现这样那样的问题,比方说:开发人员理解用户的需求有出入 两个开发人员做出来的东西风格不一致 软件的接口部分出了问题 业务逻辑与实际不符 用户的误操作造成非预期的错误,系统不能恢复正常 软件经不起长时间运行或大数据量的考验 当然还有很多情况会造成软件出现错误,这,软件测试基本概念测试的重要性,些都不是开发人员仅仅通过调试就能发现的,这还不包括开发人员自己的疏忽,因此必须要通过我们的测试帮助开发人员找出这些错误,以免这些问题流传到用户那里,所以可以说测试就是软件质量的保证,我们的测试人员就是软件的“把关人”,我们要把好软件质量的最后一关。软件测试与软件开发是互相促进的,软件开发能帮助软件测试提高测试水平,软件测试能帮助软件开发培养严谨的思维和质量意识。,测试的重要性(续),软件测试基本概念测试的重要性,什么是测试测试的重要性软件生命周期测试的职责测试工程师应该具备的素质测试的基本原则,软件测试基本概念课程目录,软件生命周期:,项目任务书,可行性研究,开发计划,需求分析,软件设计,程序编码,软件测试,软件运行,软件维护,软件停用,软件测试基本概念软件生命周期,什么是测试测试的重要性软件生命周期测试的职责测试工程师应该具备的素质测试的基本原则,软件测试基本概念课程目录,软件测试的工作职责:验证在整个软件开发周期中,各个阶段的软件质量是否合格。验证最终交付给用户的系统是否满足用户的需要,是否符合需求。通过样本测试数据,检查系统在运行过程中的情况。软件测试的活动范围:测试计划测试用例测试实施测试报告配置管理,软件测试基本概念测试的职责,什么是测试测试的重要性软件生命周期测试的职责测试工程师应该具备的素质测试的基本原则,软件测试基本概念课程目录,沟通能力 移情能力 技术能力 自信心 外交能力 幽默感,很强的记忆力 耐心 怀疑精神 自我督促 洞察力 责任感,人是测试工作中最有价值也是最重要的资源,没有一个合格的、积极的测试小组,测试就不可能实现。然而,在软件开发产业中有一种非常普遍习惯,那就是让那些经验最少的新手、没有效率的开发者或不适合干其他工作的人去做测试工作。这绝对是一种目光短浅的行为,对一个系统进行有效的测试所需要的技能绝对不比进行软件开发需要的少,事实上,测试者将获得极其广泛的经验,他们将遇到许多开发者不可能遇到的问题。总的说来,一个优秀的软件测试工程师应该具备以下素质:,软件测试基本概念测试工程师应该具备的素质,一名理想的测试者必须能够同测试涉及到的所有人进行沟通,具有与技术(开发者)和非技术人员(客户,管理人员)的交流能力。既要可以和用户谈得来,又能同开发人员说得上话,不幸的是这两类人没有共同语言。和用户谈话的重点必须放在系统可以正确地处理什么和不可以处理什么上。而和开发者谈相同的信息时,就必须将这些活重新组织以另一种方式表达出来,测试小组的成员必须能够同等地同用户和开发者沟通。,软件测试基本概念测试工程师应该具备的素质(沟通能力),和系统开发有关的所有人员都处在一种既关心又担心的状态之中。用户担心将来使用一个不符合自己要求的系统,开发者则担心由于系统要求不正确而使他不得不重新开发整个系统,管理部门则担心这个系统突然崩溃而使它的声誉受损。测试者必须和每一类人打交道,因此需要测试小组的成员对他们每个人都具有足够的理解和同情,具备了这种能力可以将测试人员与相关人员之间的冲突和对抗减少到最低程度。,软件测试基本概念测试工程师应该具备的素质(移情能力),就总体言,开发人员对那些不懂技术的人持一种轻视的态度。一旦测试小组的某个成员作出了一个错误的断定,那么他们的可信度就会立刻被传扬了出去。一个测试者必须既明白被测软件系统的概念又要会使用工程中的那些工具。要做到这一点需要有几年以上的编程经验,前期的开发经验可以帮助对软件开发过程有较深入的理解,从开发人员的角度正确的评价测试者,简化自动测试工具编程的学习曲线。,软件测试基本概念测试工程师应该具备的素质(技术能力),开发者指责测试者出了错是常有的事,测试者必须对自己的观点有足够的自信心。如果容许别人对自己指东指西,就不能完成什么更多的事情了。,软件测试基本概念测试工程师应该具备的素质(自信心),当你告诉某人他出了错时,就必须使用一些外交方法。机智老练和外交手法有助于维护与开发人员的协作关系,测试者在告诉开发者他的软件有错误时,也同样需要一定的外交手腕。如果采取的方法过于强硬,对测试者来说,在以后和开发部门的合作方面就相当于“赢了战争却输了战役”。,软件测试基本概念测试工程师应该具备的素质(外交能力),在遇到狡辩的情况下,一个幽默的批评将是很有帮助的。,软件测试基本概念测试工程师应该具备的素质(幽默感),一个理想的测试者应该有能力将以前曾经遇到过的类似的错误从记忆深处挖掘出来,这一能力在测试过程中的价值是无法衡量的。因为许多新出现的问题和我们已经发现的问题相差无几。,软件测试基本概念测试工程师应该具备的素质(很强的记忆力),一些质量保证工作需要难以置信的耐心。有时你需要花费惊人的时间去分离、识别和分派一个错误。这个工作是那些坐不住的人无法完成的。,软件测试基本概念测试工程师应该具备的素质(耐心),可以预料,开发者会尽他们最大的努力将所有的错误解释过去。测式者必须听每个人的说明,但他必须保持怀疑直到他自己看过以后。,软件测试基本概念测试工程师应该具备的素质(怀疑精神),干测试工作很容易使你变得懒散。只有那些具有自我督促能力的人才能够使自己每天正常地工作。,软件测试基本概念测试工程师应该具备的素质(自我督促),一个好的测试工程师具有“测试是为了破坏”的观点,捕获用户观点的能力,强烈的质量追求,对细节的关注能力。应用的高风险区的判断能力以便将有限的测试针对重点环节。,软件测试基本概念测试工程师应该具备的素质(洞察力),软件测试作为软件开发环节的最后一关,起到质量“把关”的作用,如果测试人员没有很强的责任心,软件的质量不可能得到保证。,软件测试基本概念测试工程师应该具备的素质(责任感),什么是测试测试的重要性软件生命周期测试的职责测试工程师应该具备的素质测试的基本原则,软件测试基本概念课程目录,在测试过程中,要遵循以下原则:尽量不要自己测试自己的代码,或者让其他开发人员测试自己的代码测试是为了证明程序有错,而不是证明程序无错误;一个成功的测试是发现了至今未发现的错误的测试 任何测试都不是完全的,因此测试不可能发现所有的问题,而测试的目的是尽可能找出软件中所有的问题软件测试是基于用户需求,因此任何脱离用户需求的测试都是没有意义的每个软件的需求都不一样,因此每个测试活动都不可能完全一样,不要妄图把一套测试模式应用到每一次测试中,要具体情况具体分析,要把有限的资源用到最关键的地方,软件测试基本概念测试的基本原则,软件测试人员在测试过程中一方面要站在技术人 员的角度分析问题,另一方面又要站在普通用户的角度观察软件,即要学会换位思考软件测试人员并不仅仅是软件的“高级用户”,他们要审视的对象是专业的开发人员,如果没有一定的技术基础,没有对软件更高层次的理解,是不可能扮演好软件“裁判员”的角色软件测试越早发现问题越好不能重现的错误不算错误,软件测试基本概念测试的基本原则,第二讲 软件测试测试流程和方法 Software Testing methods and techniques,软件开发系列软件测试,在本章中,我们将学习:测试流程测试停止的标准测试方法,测试流程和方法概览,完成此课程之后,学员将具备以下能力:了解测试的流程什么情况下才可以停止测试?测试停止的标准是什么?测试的方法有哪些?,测试流程和方法目标,测试流程测试停止的标准测试方法,测试流程和方法课程目录,典型流程测试活动的开始时间,测试流程和方法测试流程,测试流程测试停止的标准测试方法,测试流程和方法课程目录,测试停止的标准 测试停止的标准一般有五类标准,具体测试项目视情况进行选择:第一类标准:测试时间超过了预定期限,测试被强制性停止第二类标准:执行了所有的测试用例,但并没有发现故障第三类标准:使用特定的测试用例设计方案,作为判断测试停止的基础第四类标准:正面指出了停止测试的具体要求,即制定了停止测试的标准第五类标准:根据单位时间内查出故障的数量决定是否停止测试,测试流程和方法测试停止的标准,按照这些标准的定义,我们制定以下各个阶段的测试停止的标准:(1)软件测试停止标准软件系统经过单元、集成、系统测试,分别达到单元、集成、系统测试停止标准。软件系统通过验收测试,并已得出验收测试结论。软件项目需暂停以进行调整时,测试应随之暂停,并备份暂停点数据。软件项目在其开发生命周期内出现重大估算,进度偏差,需暂停或终止时,测试应随之暂停或终止,并备份暂停或终止点数据。,测试流程和方法测试停止的标准,(2)单元测试停止标准单元测试用例设计已经通过评审;按照单元测试计划完成了所有规定单元的测试;达到了测试计划中关于单元测试所规定的覆盖率的要求;被测试的单元每千行代码发现错误数小于4个;软件单元功能与设计一致;在单元测试中发现的错误已经得到修改,各级缺陷修复率达到标准。(3)集成测试停止标准集成测试用例设计已经通过评审;按照集成构件计划及增量集成策略完成了整个系统的集成测试;达到了测试计划中关于集成测试所规定的覆盖率的要求;被测试的集成工作版本每千行代码发现错误数小于2个;集成工作版本满足设计定义的各项功能、性能要求;在集成测试中发现的错误已经得到修改,各级缺陷修复率达到标准。,测试流程和方法测试停止的标准,(4)系统测试停止标准系统测试用例设计已经通过评审;按照系统测试计划完成了系统测试;达到了测试计划中关于系统测试所规定的覆盖率的要求;被测试的系统每千行代码发现错误数小于1个;系统满足需求规格说明书的要求;在系统测试中发现的错误已经得到修改,各级缺陷修复率达到标准。(5)缺陷修复率标准严重缺陷、较大缺陷的修复率应达到100%;较小缺陷、轻微缺陷修复率应达到80%以上;其他缺陷修复率应达到60%以上。(6)测试覆盖率语句覆盖率最低不能小于80%;测试用例执行覆盖率应达到100%;测试需求覆盖率应达到100%。,测试流程和方法测试停止的标准,测试流程测试停止的标准测试方法,测试流程和方法课程目录,静态测试与动态测试黑盒测试与白盒测试单元测试集成测试系统测试性能测试测试中的群体现象怎么做界面测试?怎么做边界测试?怎么做功能性测试?怎么测试系统的数据正确性?怎么使用WAS进行性能测试?软件的易用性应该考虑哪些因素?,测试流程和方法测试方法,1静态测试与动态测试(1)静态测试 静态测试是指在不运行软件系统的情形下,对软件的需求、设计和代码进行的评审和检查,测试的方法一般包括:需求评审设计评审代码走查,测试流程和方法测试方法(静态测试与动态测试),(2)动态测试 动态测试是指部分或全部运行软件系统的情形下,对软件的接口、功能、性能等方面的测试,动态测试一般包含了用户与软件系统之间的交互过程。动态测试一般包括:单元测试集成测试系统测试验收测试,测试流程和方法测试方法(静态测试与动态测试),2黑盒测试与白盒测试(1)黑盒测试 黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因果图、错误推测等,主要用于软件确认测试。“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。,测试流程和方法测试方法(黑盒测试与白盒测试),(2)白盒测试 白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。,测试流程和方法测试方法(黑盒测试与白盒测试),3单元测试 单元测试的对象是软件设计的最小单位模块。单元测试的依据是详细设计描述,单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误。单元测试多采用白盒测试技术,系统内多个模块可以并行地进行测试。一般认为单元测试应紧接在编码之后,当源程序编制完成并通过复审和编译检查,便可开始单元测试。测试用例的设计应与复审工作相结合,根据设计信息选取测试数据,将增大发现上述各类错误的可能性。在确定测试用例的同时,应给出期望结果。应为测试模块开发一个驱动模块(driver)和(或)若干个桩模块(stub)。驱动模块在大多数场合称为“主程序”,它接收测试数据并将这些数据传递到被测试模块,被测试模块被调用后,“主程序”打印“进入-退出”消息。驱动模块和桩模块是测试使用的软件,而不是软件产品的组成部分,但它需要一定的开发费用。若驱动和桩模块比较简单,实际开销相对低些。遗憾的是,仅用简单的驱动模块和桩模块不能完成某些模块的测试任务。提高模块的内聚度可简化单元测试,如果每个模块只能完成一个,所需测试用例数目将显著减少,模块中的错误也更容易发现。,测试流程和方法测试方法(单元测试),单元测试一般完成以下任务:模块接口测试 模块接口测试是单元测试的基础。只有在数据能正确流入、流出模块的前提下,其他测试才有意义。测试接口正确与否应该考虑下列因素:1、输入的实际参数与形式参数的个数是否相同;2、输入的实际参数与形式参数的属性是否匹配;3、入的实际参数与形式参数的量纲是否一致;4、调用其他模块时所给实际参数的个数是否与被调模块的形参 个数相同;5、调用其他模块时所给实际参数的属性是否与被调模块的形参 属性匹配;6、用其他模块时所给实际参数的量纲是否与被调模块的形参量 纲一致;7、调用预定义函数时所用参数的个数、属性和次序是否正确;8、是否存在与当前入口点无关的参数引用;9、是否修改了只读型参数;10、对全程变量的定义各模块是否一致;11、是否把某些约束作为参数传递。,测试流程和方法测试方法(单元测试),如果模块内包括外部输入输出,还应该考虑下列因素:1、文件属性是否正确;2、OPEN/CLOSE语句是否正确;3、格式说明与输入输出语句是否匹配;4、缓冲区大小与记录长度是否匹配;5、文件使用前是否已经打开;6、是否处理了文件尾;7、是否处理了输入/输出错误;8、输出信息中是否有文字性错误;模块局部数据结构测试 检查局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确。局部数据结构往往是错误的根源,应仔细设计测试用例,力求发现下面几类错误:1、不合适或不相容的类型说明;2、变量无初值;3、变量初始化或省缺值有错;4、不正确的变量名(拼错或不正确地截断);5、出现上溢、下溢和地址异常。除了局部数据结构外,如果可能,单元测试时还应该查清全局数据(例如FORTRAN的公用区)对模块的影响。,测试流程和方法测试方法(单元测试),模块中所有独立执行通路测试 在模块中应对每一条独立执行路径进行测试,单元测试的基本任务是保证模块中每条语句至少执行一次。此时设计测试用例是为了发现因错误计算、不正确的比较和不适当的控制流造成的错误。此时基本路径测试和循环测试是最常用且最有效的测试技术。计算中常见的错误包括:1、误解或用错了算符优先级;2、混合类型运算;3、变量初值错;4、精度不够;5、表达式符号错。比较判断与控制流常常紧密相关,测试用例还应致力于发现下列错误:1、不同数据类型的对象之间进行比较;2、错误地使用逻辑运算符或优先级;3、因计算机表示的局限性,期望理论上相等而实际上不相等的两个量相等;4、比较运算或变量出错;5、循环终止条件或不可能出现;6、迭代发散时不能退出;7、错误地修改了循环变量。,测试流程和方法测试方法(单元测试),一个好的设计应能预见各种出错条件,并预设各种出错处理通路,出错处理通路同样需要认真测试,测试应着重检查下列问题:1、输出的出错信息难以理解;2、记录的错误与实际遇到的错误不相符;3、在程序自定义的出错处理段运行之前,系统已介入;4、异常处理不当;5、错误陈述中未能提供足够的定位出错信息。模块边界条件测试边界条件测试是单元测试中最后,也是最重要的一项任务。众所周知,软件经常在边界上失效,采用边界值分析技术,针对边界值及其左、右设计测试用例,很有可能发现新的错误。,测试流程和方法测试方法(单元测试),4集成测试集成测试也称组装测试,主要查找模块之间接口的错误。集成测试一般采用渐增式集成,集成的方式有:自顶向下自底向上自顶向下与自底向上相结合,测试流程和方法测试方法(集成测试),5系统测试 软件的系统测试是指软件通过集成测试后,已经组装成了一个完整的软件系统,在此基础上执行的功能性、性能、易用性、一致性、可移植性和可维护性等方面的全面的测试。,测试流程和方法测试方法(系统测试),6性能测试(1)性能测试概述 一般一个软件系统的性能的高低,可以从以下三个方面得到验证:a、软件系统能否长时间不间断稳定的工作b、当有大用户量并发访问系统时,用户的响应时间是否在一个比 较合理的范围c、如果软件系统产生了大数据量的业务数据,查询数据的速度会 不会异常缓慢 因此我们的测试方法也必须从这三方面考虑,通常从“时间”和“数据量”两个方面来测试是比较容易做到的,而要模拟出“大用户量”则必须借助自动化测试工具。性能测试的目的是找出软件系统的性能瓶颈,从而以最小的代价,有针对性的修改软件或更换硬件设备,提高软件系统的性能。,测试流程和方法测试方法(性能测试),(2)性能数据指标 在性能测试过程中,测试工具通过部署一整套性能监视器,来收集和显示各个架构层次、服务器和组件上的性能数据,包括网络、操作系统、应用服务器、中间件、应用程序、.NET服务器、Web服务器和数据库服务器。在进行性能测试时,这些数据用来精确测量系统各个方面的性能,从而用户可以快速、简便地定位问题和瓶颈的来源。最终,这些数据用来生成各种文档和图表,并判断出应用程序的性能是否满足业务的需要。,测试流程和方法测试方法(性能测试),测试流程和方法使用静态和动态测试来进行结构和功能测试,群体现象的产生利用群体现象测试,测试流程和方法测试中的群体现象,第三讲 软件测试测试模型 Software Testing methods and techniques,软件开发系列软件测试,在本章中,我们将学习:测试模型测试流程,测试模型概览,完成此课程之后,学员将具备以下能力:了解测试模型的含义?测试模型有哪些?了解测试的流程?,测试模型目标,测试模型测试流程,测试模型课程目录,功能性,易用性,效率,可靠性,可移植性,可维护性,测试模型,软件测试-测试模型,测试模型,功能性,在指定条件下,产品满足明确和隐含要求功能的能力 适应性:软件为指定的任务和用户目标提供合适功能的能力;准确性:软件提供所需精确度的正确或相符结果及效果的能力;互操作性、互用性:产品与一个或多个系统进行交互的能力;保密安全性:保护信息和数据的能力;功能依从性:软件依从同功能性相关的标准、约定或法规的能力;,软件测试-测试模型,测试模型功能性,功能测试正常的流程与异常的流程正面的用例与反面的用例输入数据的数据类型和长度边界值的防范数据的准确性,软件测试-测试模型,测试模型功能测试,易用性,在指定条件下,产品被理解、学习、使用和吸引用户的能力 易理解性:完成特定任务的功能明显性和适用性;易学性:软件使用户能学习它的应用的能力;易操作性:产品使用户能操作和控制它的能力;吸引性:软件产品吸引用户的能力;易用性依从性:软件依从同易用性相关的标准、约定或法规的能力;,软件测试-测试模型,测试模型易用性,易用性测试是否符合日常习惯提示性信息是否准确是否提供了很多帮助信息,用以指导用户更好的使用软件系统软件的操作流程是否设置得很清晰,操作过程很简洁用户使用最频繁的选项是否设置了默认值,用户使用最多的功能是否放在最显眼的地方,软件测试-测试模型,测试模型易用性测试,效率,在指定条件下,相对于所用资源数量,软件产品提供适当性能的能力 时间特性:在规定条件下,软件产品执行其功能时,提供适当的响应和 处理时间以及吞吐量的能力;资源特性:在规定条件下,软件产品执行其功能时,使用合适的数量和 类型的资源的能力;效率依从性:软件依从同效率相关的标准、约定或法规的能力;,软件测试-测试模型,测试模型效率,效率安全性(防止信息泄露和恶意破坏)稳定性(长时间不间断运行)健壮性(多用户同时访问)效率(大数据量查询),软件测试-测试模型,测试模型效率,可靠性,在指定条件下,产品维持规定的性能级别的能力 成熟性:软件为避免由软件中错误而导致失效的能力;容错性:软件失效或在违反规定的接口情况下,软件产品维护规定的 性能级别的能力;易恢复性:发生故障情况下,软件重建规定的性能级别并恢复受直接 影响的数据的能力;可靠性依从性:软件产品依附于同可靠性相关的标准、约定或法规的 能力;,软件测试-测试模型,测试模型可靠性,可移植性,软件产品从一种环境迁移到另一种环境的能力 适应性:软件无需采用手段就可适应不同的指定环境的能力;易安装性:软件在指定环境中被安装的能力;共存性性:软件在公共环境中分享资源与其它独立软件共存的能力;易替换性:在环境、目标相同的情况下替代另一个指定软件的能力;可移植依从性:软件依从同可移植性相关的标准、约定或法规的能力;,软件测试-测试模型,测试模型可移植性,可移植性是否能比较容易移植到其他数据库平台下面,而不需要修改代码或者极少量修改代码是否能比较容易移植到其他操作系统平台下面,而不需要修改代码或者极少量修改代码是否可以使用不同的浏览器访问WEB软件系统,软件测试-测试模型,测试模型可移植性,可维护性,软件产品可被修改的能力,包括修正、改进或软件适应环境、需求和功能规格说明的变化。易分析性:软件诊断缺陷或失效原因以及判定修改部分的功能的能力;易改变性:软件产品使指定的修改可以被实现的能力;可维护依从性:软件依从同维护性相关的标准、约定或法规的能力;,软件测试-测试模型,测试模型可维护性,可维护性代码是否易读(代码遵循了一定的编码规范,关键点都进行了注释性说明)代码的重用度是否很高(修改一个错误不需要修改大量的文件)软件的设计是否具有前瞻性(需求变更或增加新的需求时,不需要变更设计框架),软件测试-测试模型,测试模型可维护性,测试模型测试流程,测试模型课程目录,软件测试-测试模型,测试模型测试流程,第四讲 软件测试测试文档 Software Testing methods and techniques,软件开发系列软件测试,在本章中,我们将学习:测试计划 测试用例测试期间数据的收集测试报告,测试文档概览,完成此课程之后,学员将具备以下能力:测试计划怎么做?包含的内容有哪些?测试用例怎么做?测试报告怎么做?,测试文档目标,测试计划 测试用例测试期间数据的收集测试报告,测试文档课程目录,测试计划必须包含的内容:目的:明确每阶段测试的目的测试策略:用于测试的方法资源配置:测试所需的硬件设备和测试人员配备明确任务:所以参加测试工作的人员角色和职责进度安排:每一测试阶段的进度安排风险:指明项目中潜在的问题和风险区域停止测试的标准:判断每测试阶段停止测试的标准测试用例编写要求:决定选用测试用例的编写方法,保存、使用和维护测试用例的策略记录手段:明确测试当中对问题、进度等记录的方法测试工具:明确测试所需的工具并制定相应计划测试计划模板,测试文档测试计划,测试计划 测试用例测试期间数据的收集测试报告,测试文档课程目录,测试用例是由一组测试数据和与之对应的预期结果组成的,是为了验证软件的某个功能在输入该测试数据的时候产生的实际输出结果是否与我们理论的预期结果相对应。测试用例应包括合理的输入条件和不合理的输入条件一个测试用例只对应一个测试结果,测试文档测试用例,有关测试结果的积累数据测试任务,测试集合和测试事件的描述缺陷分析由于计划的问题,导致没有发现的缺陷的数据严重的缺陷缺陷类型为什么缺陷没有发现效果,测试文档测试期间数据的收集,测试计划 测试用例测试期间数据的收集测试报告,测试文档课程目录,软件基本情况描述测试范围描述测试依据测试结果描述测试是否通过的结论,测试文档测试报告,目标表示出目前项目的实际状况明确什么是测试做的工作,什么是不作的工作。给出系统的操作性能的评价明确什么时候系统可以进行产品化的工作关注点测试报告只有真正需要的时候才有用,需要配合市场和管理测试的信息是不充分的(对于评价一个项目来说)测试状况并不能真实的反应个人的状况,测试文档测试报告,报告目前的软件状态功能/测试矩阵功能测试的状态报告,侧重点分析关于功能的工作时间轴期望发现 VS 实际发现的缺陷比没有发现的缺陷和改正的缺陷的差距按照类型分类,没有改正的缺陷的平均值缺陷分类报告测试活动报告,测试文档测试报告,各个阶段的项目测试总结报告继承性测试报告系统测试报告确认测试报告,测试文档最终的报告汇总,报告目前的软件状态功能/测试矩阵功能测试的状态报告,侧重点分析关于功能的工作时间轴期望发现 VS 实际发现的缺陷比没有发现的缺陷和改正的缺陷的差距按照类型分类,没有改正的缺陷的平均值缺陷分类报告测试活动报告给出系统的操作性能的评价明确什么时候系统可以进行产品化的工作,测试文档测试分析报告,第五讲 软件测试功能测试 Software Testing methods and techniques,软件开发系列软件测试,在本章中,我们将学习:功能性测试概述测试方法功能分解等价类划分边界值分析 因果图法其他测试法,功能测试概览,完成此课程之后,学员将具备以下能力:理解功能性测试的含义使用等价类划分的方法设计测试用例使用边界值分析的方法设计测试用例 对具体项目进行功能测试,功能测试目标,功能性测试概述测试方法功能分解等价类划分 边界值分析 因果图法 其他测试方法,功能测试课程目录,功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。任何程序都可以看作是将从输入定义域取值映射到输出值域的函数将系统看成黒盒,又称为黒盒测试黒盒的实现是不需要了解的,只需要知道输入和预期输出,功能测试概述,正常的流程与异常的流程正面的用例与反面的用例输入数据的数据类型和长度边界值的防范数据的准确性,功能测试概述,输入,输出,黒盒,内部实现不可见,功能测试功能性测试模型,功能性测试与软件如何实现无关,如果实现发生变化,功能性测试用例仍然可用测试用例开发可以与软件开发同时进行,可节省软件开发时间,通过软件的用例(use case)就可以设计出大部分功能性测试用例,功能测试功能性测试的优点,测试用例数量较大测试用例可能产生很多冗余功能性测试的覆盖范围不可能达到100%,功能测试功能性测试的缺点,功能性测试概述测试方法功能分解等价类划分 边界值分析 因果图法 其他测试方法,功能测试课程目录,针对Web系统的常用测试方法如下:1.页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。可以使用一些工具,如LinkBotPro、File-AIDCS、HTML Link Validater、Xenu等工具。LinkBotPro不支持中文,中文字符显示为乱码;HTML Link Validater只能测试以Html或者htm结尾的网页链接;Xenu无需安装,支持asp、do、jsp等结尾的网页,xenu测试链接包括内部链接和外部链接,在使用的时候应该注意,同时能够生成html格式的测试报告。如果系统用QTP进行自动化测试,也可以使用QTP的页面检查点检查链接。2.相关性检查:功能相关性:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确,常见的情况是,增加某个数据记录以后,如果该数据记录某个字段内容较长,可能会在查询的时候让数据列表变形。数据相关性:下拉列表默认值检查,下拉列表值检查,如果某个列表的数据项依赖于其他模块中的数据,同样需要检查,比如,某个数据如果被禁用了,可能在引用该数据项的列表中不可见。,功能测试测试方法,3.检查按钮的功能是否正确:如新建、编辑、删除、关闭、返回、保存、导入,上一页,下一页,页面跳转,重置等功能是否正确。常见的错误会出现在重置按钮上,表现为功能失效。4.字符串长度检查:输入超出需求所说明的字符串长度的内容,看系统是否检查字符串长度。还要检查需求规定的字符串长度是否是正确的,有时候会出现,需求规定的字符串长度太短而无法输入业务数据。5.字符类型检查:在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型。6.标点符号检查:输入内容包括各种标点符号,特别是空格,各种引号,回车键。看系统处理是否正确。常见的错误是系统对空格的处理,可能添加的时候,将空格当作一个字符,而在查询的时候空格被屏蔽,导致无法查询到添加的内容。,功能测试测试方法,7特殊字符检查:输入特殊符号,如、#、$、%、!等,看系统处理是否正确。常见的错误是出现在%这几个特殊字符8.中文字符处理:在可以输入中、英文的系统输入中文,看会否出现乱码或出错。9.检查信息的完整性:在查看信息和更新信息时,查看所填写的信息是不是全部更新,更新信息和添加信息是否一致。要注意检查的时候每个字段都应该检查,有时候,会出现部分字段更新了而个别字段没有更新的情况。10.信息重复:在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理。,功能测试测试方法,11.检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按“delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除,看是否正确处理。如果有多页,翻页选,看系统是否都正确删除,并且要注意,删除的时候是否有提示,让用户能够更正错误,不误删除。12.检查添加和修改是否一致:检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型。13.检查修改重名:修改时把不能重名的项改为已存在的内容,看是否会处理,报错.同时,也要注意,会不会报和自己重名的错。14.重复提交表单:一条已经成功提交的纪录,返回后再提交,看看系统是否做了处理。对于Web系统来说,可以通过浏览器返回键或者系统提供的返回功能。,功能测试测试方法,15.检查多次使用返回键的情况:在有返回键的地方,返回到原来页面,重复多次,看是否会出错。16.搜索检查:有搜索功能的地方输入系统存在和不存在的内容,看搜索结果是否正确.如果可以输入多个搜索条件,可以同时添加合理和不合理的条件,看系统处理是否正确,搜索的时候同样要注意特殊字符,某些系统会在输入特殊字符的时候,将系统中所有的信息都搜索到。17.输入信息位置:注意在光标停留的地方输入信息时,光标和所输入的信息会否跳到别的地方。18.上传下载文件检查:上传下载文件的功能是否实现,上传文件是否能打开。对上传文件的格式有何规定,系统是否有解释信息,并检查系统是否能够做到。下载文件能否打开或者保存,下载的文件是否有格式要求,如需要特殊工具才可以打开等。上传文件测试同时应该测试,如果将不能上传的文件后缀名修改为可以上传文件的后缀名,看是否能够上传成功,并且,上传文件后,重新修改,看上传的文件是否存在。,功能测试测试方法,19.必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加“*”;对必填项提示返回后,焦点是否会自动定位到必填项。20.快捷键检查:是否支持常用快捷键,如Ctrl+C、Ctrl+V、Backspace等,对一些不允许输入信息的字段,如选人,选日期对快捷方式是否也做了限制。21.回车键检查:在输入结束后直接按回车键,看系统处理如何,会否报错。这个地方很有可能会出现错误。22刷新键检查:在Web系统中,使用浏览器的刷新键,看系统处理如何,会否报错。23回退键检查:在Web系统中,使用浏览器的回退键,看系统处理如何,会否报错。对于需要用户验证的系统,在退出登录后,使用回退键,看系统处理如何;多次使用回退键,多次使用前进键,看系统如何处理。,功能测试测试方法,24直接URL链接检查:在Web系统中,直接输入各功能页面的URL地址,