《软件测试基础知识(软件测试入门培训).ppt》由会员分享,可在线阅读,更多相关《软件测试基础知识(软件测试入门培训).ppt(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件测试讲基础理论知识2015年4月内容简介第1节 测试基本概念第2节 软件测试模型第3节 软件测试方法第4节 测试工具简介第1节、测试基本概念1.1 软件测试定义1.2 软件测试的目的1.3 软件测试原则1.4 软件测试分类1.5 测试用例与执行1.1 软件测试定义软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。早期定义:软件测试是为了发现软件中错误而运行软件的过程。(1979年,G.J.Myers)后期定义:使用人工或者自动的手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或者是弄清预期结果与实际运行结果之前的差别。(
2、1983年,IEEE)定义:软件测试是在一定的软件、硬件、网络环境下,遵循相对规范的软件测试流程,使用合理的测试方法以及适当的测试工具运行或测试某个系统的过程。1.2 软件测试目的软件测试的目的(业界有两种权威定义)第一、评价一个程序和系统的特性或能力,并确定它是否达到预期的结果。第二、是在软件分发到最终用户手中之前,以最少的时间和人力找出软件中潜在的各种错误和缺陷。软件测试目的:检验软件是否满足规定的需求或者是弄清预期结果与实际运行结果之间的差别。1.3 软件测试原则所有测试的标准都是建立在用户需求之上尽早定义好产品的质量标准测试应尽早介入穷尽测试是不可能的测试应贯穿于软件整个生命周期应有第
3、三方或独立的测试团队1.4 软件测试分类按照开发阶段划分1)单元测试 单元测试(Unit Testing,UT)又称模块测试,是对软件基本单元(软件设计最小单位)进行正确性进行检验,检查代码语法、格式和逻辑上的错误,验证程序是否符合规范,尽早发现单元内部可能存在的各种缺陷。2)集成测试 集成测试(Integration Testing,IT)又称组装测试或联合测试,是单元测试在集成时是否有缺陷。是单元测试的逻辑扩展,通过测试识别组合单元时出现的问题。集成测试的目标就是检测系统是否达到需求;对业务流程及数据流的处理是否符合标准;检测系统对业务流处理是否存在逻辑不严谨或者错误;检测需求是否存在不合
4、理的标准及要求。1.4 软件测试分类按照开发阶段划分(续)3)系统测试 系统测试(System Testing,ST)是将已集成好的软件系统,作为整个计算机系统的一个元素,与支持软件、计算机硬件、外设、数据等其他系统元素结合在一起,在模拟实际使用环境下,对计算机系统进行一系列的测试活动。4)验收测试 验收测试(Acceptance Testing,AT)也称交付测试,是在软件产品完成了单元测试、集成测试和系统测试之后,产品发布之前所进行的软件测试活动,是技术测试的最后一个阶段。验收测试目的是验证系统是否达到了用户规格说明书中的要求,并试图尽可能的发现软件中存在的缺陷,从未为软件进一步改善提供帮
5、助,保证系统或软件产品最终被用户接受。1.4 软件测试分类按照测试方法划分1.4 软件测试分类按照测试方法划分(续)1)静态测试 静态测试是指不运行程序,通过人工对程序和文档进行分析与检查。静态测试实际上是对软件中的需求说明书、设计说明书、程序代码等进行评审的一个过程。2)动态测试 动态测试是指通过人工或使用工具运行程序进行检查、分析程序的执行状态和程序的外部表现,一般包括白盒测试、黑盒测试和灰盒测试。1.4 软件测试分类按照测试方法划分(续)1白盒测试 白盒测试又称结构测试。白盒测试可以把程序看成装在一个透明的盒子里,也就是清楚的了解程序结构和处理过程,检查是否所有的结构及路径都是正确的,检
6、查软件内部动作是否按照设计说明的规定正常运行。2黑盒测试 黑盒测试是把程序看成一个黑盒子,完全不考虑程序内部结构和处理过程。通常在程序界面处进行测试,它只是检查程序或软件是否按照需求规格说明书的规定正常运行。3灰盒测试 灰盒测试时介于白盒测试和黑盒测试之间的测试。灰盒测试主要关注输出对输入的正确性;同时也关注内部表现,但这种关注不像白盒测试那种详细、完整。灰盒测试结合了白盒测试和黑盒测试的要素。1.4 软件测试分类按照测试测试实施组织划分1)开发方测试 开发方测试是开发方在软件开发环境下,通过检测和提供客观证据,证实软件是否满足规定的需求。2)用户测试 用户测试是在实际应用环境下,用户通过运行
7、和使用软件找出软件使用过程中发现软件的缺陷和问题,检测与核实软件实现是否符合用户的预期要求,并把信息反馈给开发者。3)第三方测试 第三方测试又称为“独立测试”,是介于软件开发和用户方之间的测试组织的测试。也就是由在技术、管理和财务上与开发方和用户方相对独立的组织进行的软件测试。一般情况下是在模拟用户真实应用环境下,进行软件确认测试。1.5 测试用例与执行什么是测试用例?测试用例目前没有经典的定义。比较通常的说法是:指对一项特定的软件产品测试任务的描述,体现测试方案、方法、技术和策略。内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等所形成的文档。测试用例编号CALC-ST-S
8、RS001-001测试项目测试计算器的加法功能测试标题一个数在合法的取值范围,另一个数在最大取值范围外重要级别高预置条件启动计算器软件输入参数1:1 参数2:+参数3:65537 参数4:=执行步骤用计算机键盘依次输入上述参数预期输出参数1:65538什么是测试执行?测试执行就是根据测试用例运行被测软件。一个测试用例或测试用例集的测试执行:1.5 测试用例与执行第2节、软件测试模型2.1 V模型2.2 W模型2.3 X模型2.4 H模型2.5 前置模型(1)软件测试执行是在编码实现后才进行的,容易导致从需求、设计等阶段隐藏的缺陷一直到验收测试才会发现,从而将导致发现和消除这些缺陷的代价非常高。
9、(2)将开放和测试过程划分为固定边界的不同阶段,使得相关人员很难跨过这些边界来采集测试所需的信息。(3)容易扔人形成“测试是开发之后的一个阶段”、“测试的对象就是程序”等误解。存在的缺陷V模型从左到右描述了基本的开发过程和测试行为,明确的标注了测试过程中存在不同的测试类型,并清楚的描述了这些测试阶段与开发过程期间各阶段的对应关系。2.1 V模型基本特征:1、测试工作贯穿整个软件开发周期,不仅仅是测试程序,需求、设计等都要测试。2、测试与开发同步进行,能尽早地全面地发现问题。优点:W模型是在V模型基础上提出,由两个“V”字重叠而成,其中一个表示开发过程,另一个表示测试过程;软件测试中的各项活动与
10、开发各项阶段的活动相互对应。2.2 W模型基本特征:相对于V模型,W模型增加了软件各开发阶段中应同步进行的验证和确认活动。2.2 W模型W模型的缺点:1、W模型也存在局限性。在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型。2、对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑。2.3 X模型特征:特征:左边描述的是针对单独程序片左边描述的是针对单独程序片段所进行的相互分离的编码和段所进行的相互分离的编码和测试,此后将进行频繁的交接,测试,此后将进行频繁的交
11、接,通过集成最终合成为可执行的通过集成最终合成为可执行的程序,然后再对这些可执行程程序,然后再对这些可执行程序进行测试。序进行测试。己通过集成测试的成品可以进己通过集成测试的成品可以进行封装并提交给用户,也可以行封装并提交给用户,也可以作为更大规模和范围内集成的作为更大规模和范围内集成的一部分。多根并行的曲线表示一部分。多根并行的曲线表示变更可以在各个部分发生。变更可以在各个部分发生。X模型还定位了探索性测试,这模型还定位了探索性测试,这是不进行事先计划的特殊类型是不进行事先计划的特殊类型的测试,给有经验的测试人员的测试,给有经验的测试人员在测试计划之外发现更多的软在测试计划之外发现更多的软件
12、缺陷。件缺陷。H模型是为了解决V模型和W模型所存在的不足额提出来的。H模型将测试活动完全独立出来,形成一个完全独立的流程,将测试准备活动和测试执行活动清晰的体现出来。2.4 H模型H模型给出了在整个生产周期中某个层次上的一次测试“微循环”。图中其他流程可以是任意的开发流程。H模型揭示了软件测试以下特点:(1)软件测试不仅指测试的执行,还包括很多的其他活动;(2)软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发进行;(3)软件测试要尽早准备,尽早执行;(4)软件测试时根据被测软件的不同而分层次进行的。不同层次的测试活动可以是按照某个次序先后进行的,但也可能是反复的。2.4 H模型2
13、.5 前置模型前置模型是一个将测试和开发紧密结合的模型,该模型提供了轻松的方式可以使项目加快速度。前置模型要点:1、开发和测试相结合2、对每一个交付内容进行测试3、在设计阶段进行设计和测试计划4、测试和开发结合在一起5、让验收测试和技术测试保持相互独立6、反复交替的开发和测试7、发现内在价值2.5 前置模型第3节、软件测试方法3.1 白盒测试3.2 黑盒测试3.3 灰盒测试3.4 白盒测试与黑盒测试比较3.5 静、动态分析什么是白盒测试 白盒测试可以把程序看成装在一个透明的盒子里,也就是清楚的了解程序结构和处理过程,检查是否所有的结构及路径都是正确的,检查软件内部动作是否按照设计说明的规定正常
14、运行。3.1 白盒测试为什么要进行白盒测试(1)逻辑错误和不正确假设与一条程序路径被运行的可能性成反比。(2)我们经常相信某逻辑路径不可能被执行,而事实上它可能在正常的基础上被执行。(3)笔误是随机的。白盒测试主要是想对程序模块进行如下检查:1、对程序模块的所有独立的执行路径至少测试一遍。2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。3、在循环的边界和运行的界限内执行循环体。4、测试内部数据结构的有效性,等等。3.1 白盒测试白盒测试优点:1.迫使测试人员去仔细的思考软件的实现;2.可以检测代码中的每条分支和路径;3.揭示隐藏在代码中的错误;4.对代码的测试比较彻底。白盒测
15、试缺点:1.昂贵(投入成本太高)2.无法检测代码中遗漏的路径和数据敏感性错误 3.不验证规格的正确性3.1 白盒测试什么是黑盒测试黑盒测试也叫功能测试,这是因为在黑盒测试中,主要关注被测软件的功能实现,而不是内部逻辑。依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。3.2 黑盒测试为什么要进行黑盒测试白盒测试在测试的早期采用,黑盒测试在主要用于测试后期。黑盒测试故意不考虑控制结构,而是注意信息域。黑盒测试主要用于回答以下问题:1、是否有不正确或遗漏的功能?2、在接口上,输入是否能正确的接受?3、能否输出正确的结果?4、是否有数据结构错误或外部信息(例如数据文件)访问错误?5、性能
16、上是否能够满足要求?6、是否有初始化或终止性错误?3.2 黑盒测试黑盒测试常用技术 功能测试的测试数据的选择和测试结果的描述是以软件的功能属性为基础的,即以用户角度去验证软件是否符合功能需求。尽管黑盒测试是围绕着用户需求文档进行的,但是黑盒测试也不一定必须要有用户来参与测试。无用户参与的黑盒测试 常见的无用户参与的黑盒测试有:功能性测试、容量测试、安全性测试、负载测试、恢复性测试、标杆测试、稳定性测试、可靠性测试等。有用户参与的黑盒测试常见的有用户参与的测试有:实验室测试和外场测试。3.2 黑盒测试黑盒测试优点:1.对于更大的代码单元来说(子系统甚至系统级)比白盒测试更高效。2.测试人员不需要
17、了解实现的细节,包括特定的编程语言。3.测试人员和编码人员时彼此独立的。4.从用户的角度进行测试,很容易被大家理解和接受。5.有助于暴露任何规格不一致或有歧义的问题。6.测试用例可以在规格完成之后马上进行。3.2 黑盒测试黑盒测试缺点:1.只有一小部分可能的输入测试到,要测试每个可能的输入流几乎是不可能的;2.没有清晰简明的规格,测试用例是很难设计的;3.会有很多程序路径没有被测试到;4.不能直接针对特定的程序段,修改问题时,这些程序可能非常复杂。3.2 黑盒测试灰盒测试是介于黑、白盒测试之间的,关注输出对于输入的正确性,同时也关注内部表现。灰盒测试结合了白盒测试盒黑盒测试的要素,它考虑了用户
18、端、特定的系统知识和操作环境。它在系统组件的协同性环境中评价应用软件的设计。3.3 灰盒测试3.4 白盒测试与黑盒测试比较考虑对象不同 白盒测试只考虑测试软件代码,它不保证完整的希求规格是否被满足。黑盒测试只考虑测试软件的需求规格,它不保证实现的所有部分是否被测试到。技术要求不同 白盒测试要求测试人员要熟悉软件代码以及软件内部的逻辑结构。黑盒测试要求测试人员熟悉软件需求规格说明书,不要求熟悉代码以及软件内部的逻辑结构。投入测试成本 白盒测试比黑盒测试成本要高很多。静态分析(Static analysis)就是对软件的源代码进行研读,查找错误或收集一些度量数据,不需要对代码进行编译和执行 动态分
19、析(Dynamic analysis)就是通过观察软件运行时的动作,来提供执行跟踪,时间分析,以及测试覆盖度方面的信息。3.5 静、动态分析测试工作在软件开发整个过程中占有极为重要的位置,而全人工测试是非常麻烦的,所以测试过程的自动化已成为测试发展的重要方向。测试工具的选择对测试的规范化影响很大,目前已开发出了各种自动化软件测试工具,它们为软件测试提供了强有力的支持。测试工具从测试的方法上可以分为两种:白盒测试工具和黑盒测试工具。第4节、测试工具白盒测试工具主要有:内存资源泄漏检查:BoundsChecker;Rational Purify等。代码覆盖率检查:PureCoverage;Logiscope 等;代码性能检查:Numega中的truetime,Rational的Quantify等;代码静态度量分析质量检查工具:logiscope和Macabe等。4.1 白盒测试工具自动化测试工具:QTP测试工具;WinRunner;Rational Robot;AdventNet Qengine;SilkTest;QA Run;Test Partner等软件性能测试工具:LoadRunner(MI产品);QA Load;WebRunner等。4.2 黑盒测试工具
限制150内