软件测试工程师培训-测试技术基础.ppt
《软件测试工程师培训-测试技术基础.ppt》由会员分享,可在线阅读,更多相关《软件测试工程师培训-测试技术基础.ppt(154页珍藏版)》请在三一办公上搜索。
1、软件测试工程师培训,测试技术基础,培训内容,第一章测试技术的发展历程 第二章测试基本概念 第三章基本测试技术 第四章测试中的若干问题,第一章测试技术的发展历程,60年代(软件工程建立前),为表明程序正确而进行测试。1972年,Bill Hetzel在North Carolina大学举行第一次以软件测试为主题的正式会议。1979年,Glenford MyersThe Art of Software Testing提出测试的目的是证伪。,第一章测试技术的发展历程,1981年,Bill Hetzel开设“Structured Software Testing”公共课1988年David Gelper
2、in&Bill Hetzel 在“Communications of the ACM”发表“The Growth of Software Testing”。70年代后期至80年代中期的QA部门。,第一章测试技术的发展历程,1996年提出的测试能力成熟度TCMM(Testing Capability Maturity Model)、测试支持度TSM(Testability Support Model)、测试成熟度TMM(Testing Maturity Model)。,第二章测试基本概念,2.1 软件测试的定义2.2 软件开发与软件测试2.3 广义的软件测试2.4 测试方法2.5 测试策略2.6
3、 验收测试2.7 第三方测试,2.1 软件测试的定义,软件生存周期:需求定义和需求分析、软件设计、程序编码、软件测试、运行维护。,2.1 软件测试的定义,软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。测试:为了发现软件中的错误而运行软件的过程。,2.1 软件测试的定义,软件生存期的各个阶段都可能产生错误。而软件需求分析、设计和实现阶段是软件的主要错误来源。软件测试在软件生存期中,跨越两个阶段:一个是编码与单元测试阶段,另一个是综合测试阶段,即测试阶段。,2.1 软件测试的定义,软件测试的对象软件测试不等于程序测试。需求规格说明、概要设计规
4、格说明、详细设计规格说明、源程序都是软件测试的对象。软件测试贯串于软件定义和开发的整个期间。,2.1 软件测试的定义,软件测试的分类 按测试用例设计方法:白盒测试黑盒测试。按测试策略和过程:单元测试、集成测试、确认测试、系统测试。,2.1 软件测试的定义,软件测试的目的 测试的目的是寻找错误,并且是尽最大可能找出最多的错误。观点1:好的测试方案是极可能发现迄今为止尚 未发现的错误的测试方案。观点2:成功的测试是发现了至今为止尚未发现 的错误的测试。测试无法说明错误不存在,只能说明软件错误已出现。,2.1 软件测试的定义,2.1 软件测试的定义,软件测试的原则 尽早地和不断地进行软件测试 避免测
5、试自己的程序 执行测试计划,排除随意性 增量测试,由小到大 周密的测试用例(输入条件(合理、不合理)、预期输出结果)回归测试 出错统计和分析,2.2 软件开发与软件测试软件开发过程各环节的关系,2.2 软件开发与软件测试,测试的活动应该与软件开发同步进行。测试的执行是在软件已编制完成后进行。及早发现软件的缺陷可以降低软件开发的成本。,2.2 软件开发与软件测试V模型,2.2 软件开发与软件测试V模型,V模型:需求、功能、设计和编码的开发活 动随时间而进行,而相应的测试活动(即针对需求、功能、设计和编码的测试)开展的次序正好相反。成功应用软件开发V模型的关键因素是设计 测试案例的时机。,2.2
6、软件开发与软件测试V模型,V模型的问题:误解:“测试是开发之后的一个阶段”、“测试的对象就是程序本身”。实际应用中容易导致需求阶段的错误一直到最后验收阶段才被发现。,2.2 软件开发与软件测试W模型,2.2 软件开发与软件测试W模型,W模型:测试伴随整个开发周期。测试的对象不仅仅是程序,还包括需求和设计。W模型应用:相应开发活动完成,即可执行测试(例如:需求分析完成,即可对需求进行测试)。,2.2 软件开发与软件测试W模型,W模型未解决V模型中的部分问题:需求、设计、编码串行进行,无法并行工作。未将测试流程的完整性表示出来。,2.2 软件开发与软件测试H模型,测试流程:测试准备活动:测试计划、
7、测试设计、测试开发。测试执行活动:测试运行、测试评估。,2.2 软件开发与软件测试H模型,H模型:测试不仅仅是测试执行,还包括其他活动。测试是一个独立流程,贯穿产品整个周期,于其他流程并发进行。测试要尽早准备,尽早执行。,2.2 软件开发与软件测试H模型,应用H模型的意义:测试准备和测试执行分离,有利于资源调配。降低成本,提高效率。充分体现测试过程(不是技术)的复杂性。有组织、结构化的独立流程,有助于跟踪测试投入的流向。,2.2 软件开发与软件测试软件测试与开发的并行性,2.2 软件开发与软件测试开发各阶段的测试工作,项目规划阶段:确定专人负责测试阶段监控。需求分析阶段:制定测试需求分析、确认
8、/系统测试计划,经评审后成为配置管理项。测试所需要的资源、配置、每阶段评判通过标志进行规约。,2.2 软件开发与软件测试开发各阶段的测试工作,详细设计和概要设计阶段:确保集成测试计划和单元测试计划完成。测试计划完成后,对参考的设计文档进行修改。编码阶段:编写测试代码。(测试人员、专人)测试阶段:测试人员执行测试。完成测试报告。,2.2 软件开发与软件测试开发各阶段的测试工作,2.3 广义的软件测试,广义的软件测试是由确认、验证、测试3个方面组成。确认(validation):评估将要开发的软件产品是否正确 无误、可行和有价值的。确认意味着确保一个待开发软件是正确无误的,是对软件开发构想的检测。
9、验证(verification):检测软件开发的每个阶段、每个步骤的结果是否正确无误,是否与软件开发各阶段的要求 或期望的结果相一致。验证意味着确保软件会正确无误地实现软件的需求,开发过程是沿着正确的方向进行的。测试:与狭隘的测试概念统一。,2.3 广义的软件测试,确认:目的是想证实在一个给定的外部环境中软件的逻辑正确性。包括需求规格说明的确认和程序的确认。程序确认包括静态确认与动态确认。验证:试图证明在软件生存期各个阶段,以及阶段间的逻辑协调性、完备性和正确性。,2.3 广义的软件测试,确认:保证所生产的软件可追溯到用户需求的一系列活动。(生产的软件是否正确)验证:保证软件正确地实现了特定功
10、能的一系列活动。(生产软件的步骤是否正确),2.3 广义的软件测试,确认主要体现在计划阶段、需求分析阶段,也会出现在测试阶段;验证主要体现在设计阶段、编码阶段;测试主要体现在编码阶段和测试阶段。确认、验证、测试是相辅相成的。确认产生验证和测试的标准,验证和测试帮助完成确认(特别在系统测试阶段)。,2.4 测试方法,两种测试方法从不同的角度出发,反映了软件的不同侧面,也适用于不同的开发环境,2.4 测试方法,任何工程产品都可以使用以下的两种方法进行测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。(黑盒测试)。已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合
11、设计规格的要求,所有内部成分是否已经过检查。(白盒测试)。,2.4 测试方法黑盒测试,黑盒测试法把程序看成一个黑盒子,完全不考虑程序内部结构和处理过程。黑盒测试是在程序接口进行测试,它只是检查程序功能是否按照规格说明书的规定正常使用。黑盒测试又称功能测试。,2.4 测试方法黑盒测试,2.4 测试方法黑盒测试,典型黑盒测试方法 等价类划分 因果图 边界值分析,2.4 测试方法黑盒测试,黑盒主要是为了发现以下几类错误:是否有不正确或遗漏了的功能?在接口上,输入能否正确地接受?能否输出正确的结果?是否有数据结构错误或外部信息(例如数据文件)访问错误?性能上是否能够满足要求?是否有初始化或终止性错误?
12、,2.4 测试方法黑盒测试,2.4 测试方法白盒测试,白盒测试的前提是可以把程序看成装在一个透明的白盒子里,也就是完全了解程序结构盒处理过程,这种方法按照程序内部逻辑测试程序,检验程序中每条通路是否按预定要求正确工作。白盒测试又称结构测试。,2.4 测试方法白盒测试,2.4 测试方法白盒测试,典型白盒测试方法 静态分析(静态测试)动态测试,2.4 测试方法,静态测试静态测试是指不利用计算机运行被测程序,而是通过其他手段达到检测的目的。包括需求评审、设计评审、人工走查、代码审查等。静态测试并不等同于人工测试,它也可以利用计算机作为对被测程序进行特性分析的工具,而只是不真正运行被测程序。静态方法也
13、常常被称为“分析”,静态测试是对被测程序进行特性分析的方法的总称。,2.4 测试方法,代码审查(Code Inspections)代码审查会的过程如下:(1)会前准备:如组织者在会议开始之前把这个程序清单和设计规范分发给小组的其他成员,以便在会议之前熟悉这些材料。(2)会议期间:a.请程序员逐句地讲述程序的逻辑结构。b.根据常见程序错误检验单分析程序。(3)会后检查:把已查出错误清单交程序员,并对修改结果进行跟踪。代码审查关注下列类型问题:(1)数据引用错误(2)数据说明(3)计算(4)比较(5)控制流(6)接口(7)输入/输出(8)其它检查,2.4 测试方法,人工走查(Walkthrough
14、s)人工走查与代码审查一样,首先通过资料,研究程序。但不同的是:在人工走查会上是通过测试数据与人工运行程序来达到测试目的。对照实验发现,人工走查和审查会平均能查出被测程序38%的错误。据资料,IBM代码审查会的查错效率高达80%。,2.4 测试方法,静态测试阶段的任务:(1)检查算法的逻辑正确性。(2)检查模块接口的正确性。(3)检查输入参数是否有合法性检查。(4)检查调用其他模块的接口是否正确。(5)检查是否设置了适当的出错处理。(6)检查表达式、语句是否正确,是否含有二义性。(7)检查常量或全局变量使用是否正确。(8)检查标识符的使用是否规范、一致。(9)检查程序风格的一致性、规范性。(1
15、0)检查代码是否可以优化,算法效率是否最高。(11)检查代码注释是否完整,是否正确反映了代码的功能。,2.4 测试方法,静态测试可以完成以下工作:(1)发现下列程序的错误:错用局部变量和全局变量;未定义的变量、不匹配的参数;不适当的循环嵌套或分支嵌套、死循环、不允许的递归;调用不存在的子程序,遗漏标号或代码。(2)找出以下问题的根源:从未使用过的变量;不会执行到的代码、从未使用过的标号;潜在的死循环。(3)提供程序缺陷的间接信息:所用变量和常量的交叉应用表;是否违背编码规则;标识符的使用方法和过程的调用层次。(4)为进一步查找做好准备。(5)选择测试用例。(6)进行符号测试。,2.4 测试方法
16、,2、动态测试动态方法的主要特征是计算机必须真正运行被测试的程序,通过输入测试用例对其运行情况(即输入与输出的对应关系)进行分析,达到检测的目的。动态测试包括:单元测试、集成测试、系统测试、用户的验收测试和回归测试。,2.4 测试方法,使用静态和动态测试进行结构和功能测试:,2.4 测试方法白盒测试,使用白盒测试方法,主要想对程序模块进行如下的检查:对程序模块的所有独立的执行路径至少测试一 次。对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测试一次。在循环的边界和运行界限内执行循环体。测试内部数据结构的有效性等。,2.4 测试方法白盒测试,2.4 测试方法,黑盒测试法和白盒测试法的比较
17、黑盒测试是以用户的观点,从输入数据与输出数据的对应关系,也就是根据程序外部特性进行的测试。若外部特性本身存在问题或规格说明书有误,则应用黑盒测试方法是不能发现问题的。白盒测试是根据程序的内部结构进行测试。测试用例的设计要保证测试时程序的所有语句至少执行一次,而且要检查所有的逻辑条件。如果程序的结构本身有问题,比如说程序逻辑有错误或者有遗漏,那也是无法发现的。黑盒测试和白盒测试各有自己的优缺点,可以构成互补的关系。在规划测试方案时,需要把黑盒测试与白盒测试结合起来。,2.4 测试方法,2.5 测试策略,2.5 测试策略测试的数据流,2.5 测试策略单元测试,单元测试又称为模块测试,是针对程序模块
18、(软件设计的最小单位)来进行正确性检验的测试工作。软件单元测试的目的是检测程序模块对详细设计说明书的符合程度;软件单元测试依据是单元测试计划。,2.5 测试策略单元测试,软件单元测试由测试工程师编制测试用例进行测试,及针对程序模块进行多次循环反复的单元测试,并将测试结果记录在针对单元测试的软件测试报告上。若程序模块通过单元测试,则按配置管理规范所规定的标识方法进行标识。,2.5 测试策略单元测试,模块接口测试局部数据结构测试路径测试错误处理测试边界测试,2.5 测试策略单元测试的步骤,通常单元测试是在编码阶段进行的。在源程序代码编制完成。经过评审和验证,确认没有语法错误之后,就开始进行单元测试
19、的测试用例设计。驱动模块:相当于所测模块的主程序。桩模块:也叫做存根模块。用以代替所测模块调用的子模块。,2.5 测试策略单元测试的环境,2.5 测试策略单元测试完成,2.5 测试策略集成测试,为什么要进行集成测试?实践表明,软件的一些模块能够单独地工作,但并不能保证组装连接之后也肯定能正常工作。程序在某些局部反映不出来的问题,在全局情况下有可能暴露出来,影响软件功能的实现。可能的原因有以下几方面:(1)模块相互调用时引入了新的问题,例如数据可能没有正确传递,一模块对另一模块产生了不利的影响等。(2)几个子功能组合后不能实现预期的主功能。(3)单个模块的误差累计达到了不可接受的程度。(4)全局
20、数据结构出现问题。,2.5 测试策略集成测试,集成测试(Integrated Testing)阶段是指每个模块完成单元测试后,需要按照设计时确定的程序结构图,把它们连接起来进行集成测试。集成测试也称为综合测试、组装测试、联合测试。集成测试的对象:经过单元测试的程序模块间调用关系和接口数据。集成测试的目的:找出与软件设计相关的程序结构,模块调用关系,模块间接口方面的问题。集成测试的测试依据:程序结构设计文档(包括概要设计说明书、详细设计说明书等)。集成测试的基本方案:非增量式测试、增量式测试。,2.5 测试策略集成中的组装方法,非增量式测试是采用一步到位的方法来构造测试:对所有模块进行个别的单元
21、测试后,按照程序结构图将各模块连接起来,把连接后的程序当作一个整体进行测试。非增量式测试的缺点:当一次集成的模块较多时,这种测试容易出现混乱,因为测试时可能发现了许多故障,为每一个故障定位和纠正非常困难,并且在修正一个故障的同时,可能又引入了新的故障,新旧故障混杂,很难判定出错的具体原因和位置。,2.5 测试策略集成中的组装方法,2.5 测试策略集成中的组装方法,增量式测试的集成是逐步实现的:逐次将未曾集成测试的模块和已集成测试的模块(或子系统)结合成程序包,再将这些模块集成为较大系统,在集成的过程中边连接边测试,以发现连接过程中产生的问题。按照不同的实施次序,增量式集成测试又可以分为三种不同
22、的方法:自顶向下增量式测试自底向上增量式测试混合增量式测试,2.5 测试策略集成中的组装方法,自顶向下增量式测试这种集成方式是将模块按系统的程序结构自顶向下进行集成,即模块集成的顺序是首先集成主控模块(主程序),然后沿控制层次向下进行集成。从属于主控模块的按深度优先方式(纵向)或者广度优先方式(横向)集成到结构中去。深度优先方式的集成:首先集成在结构中的一个主控路径下的所有模块,主控路径的选择是任意的。广度优先方式的集成:首先沿着水平方向,把每一层中所有直接隶属于上一层的模块集中起来,直到最底层。,2.5 测试策略集成中的组装方法,自顶向下增量式测试的步骤:(1)以主控模块为所测模块兼驱动模块
23、,所有直属于主控模块的下属模块全部用桩模块代替。(2)采用深度优先或广度优先的策略,用实际模块替换相应桩模块,再用桩模块代替实际模块的直接下属模块,与已测试的模块或子系统集成为新的子系统。下层的桩模块一次一次地被替换为真正的模块。(3)进行回归测试(即重新执行以前做过的全部测试或部分测试),排除集成过程中引起错误的可能。(4)判断是否所有的模块都已集成到系统中,是则结束测试,否则转到(2)去执行。,2.5 测试策略集成中的组装方法,2.5 测试策略集成中的组装方法,2.5 测试策略集成中的组装方法,自底向上增量式测试这种集成方式是将模块按系统的程序结构自底向上进行集成,即从程序模块结构的最底层
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 工程师 培训 技术 基础
链接地址:https://www.31ppt.com/p-6063642.html