1、全国计算机技术与软件专业技术资格考试,讲师:孙老师(北风网版权所有),-中级职称软件评测师考试,目录,6 软件测试工程师的职业素质要求 6.1 软件测试的职业特点 6.2 软件测试的职业要求 6.3 软件测试工程师的职业发展 6.4 软件测试工程的职业优势7 软件评测基础知识 7.1 软件测试的基本概念 7.2 软件测试过程模型 7.3 软件测试类型划分 7.4 软件问题分类 7.4.1识别和描述缺陷 7.4.2 缺陷的分类与管理 7.5 测试用例的设计方法 7.5.1 白盒测试用例的设计方法 7.5.2 黑盒测试用例的设计方法 7.6 测试标准 8 软件测试现状与发展 1.国内外的现状 2.
2、软件测试的发展趋势9 专业英语,2024/2/28,摸底测验,1.软件测试是为了发现错误而执行程序的过程。()2.测试是为了证明程序无错误,而不是证明程序有错误。()3.一个好的测试用例在于他能发现至今未发现的错误。()4.一个成功的测试是发现了至今未发现的错误的测试。()5.测试就是为了要找出错误。不需要分析原因。()6.测试一轮后没有发现错误,说明本次测试是没有价值的。()7.测试是对每个模块平均分配时间进行测试。()8.软件缺陷在任何时候都必须得到修复。(),2024/2/28,6 软件评测师职业素质,2024/2/28,软件测试工程师职业特点,1.细心、对缺陷的洞察力。2.耐心和执着。
3、3.信心。4.服务意识。5.团队合作意识。6.沟通能力。简称:三心二意一能力。,2024/2/28,软件测试工程师基本能力要求,1.了解软件测试基本概念。定义、目的、原则、对象、与质保的关系。2.了解软件测试过程模型。V模型、W模型、H模型。以及他们的应用。3.了解单元测试、集成测试、系统测试、确认测试、验收测试、开发方测试、用户测试、第三方测试、动态测试、静态测试、白盒测试、黑盒灰盒测试等。4.了解软件问题的分类。缺陷分类、等级分类。5.能进行手工以及自动化测试。并写出测试报告。6.会设计软件测试用例。7.至少会使用一种测试工具。8.能够读懂代码。9.至少会使用一种数据。常见的oracle等
4、。,2024/2/28,测试工程师的其他能力,1.沟通能力。2.技术能力。测试方法、测试工具如缺陷管理系统、自动化测试工具、负载测试工具。3.管理能力。4.文档能力,2024/2/28,测试工程师发展(直线式),2024/2/28,1、初级测试工程师:2、测试工程师/程序分析员:3、高级测试工程师/程序分析员:4、测试组负责人:5、测试/编程负责人:6、测试/质量保证/开发(项目)、经理:7、计划经理:,2024/2/28,就业竞争小 高薪没商量 无性别歧视 多元化发展,2024/2/28,软件测试工程师-职业优势,课堂测验题,判断题1.对于开发人员提交的程序必须进行完全的测试,以确保程序的质
5、量。()2.必须合理安排测试任务,做好周密的测试计划,平均分配软件各个模块的测试时间。()3.测试之前需要与开发人员进行详细的交流,明确开发人员的程序设计思路,并以此为依据开展软件测试工作。()4.要对自己发现的问题负责,确保每个问题都能被理解和修改。()5.经过测试的软件今后不会再出现问题()6.在工作中对所有的程序员一视同仁,不会因为在某个程序员编写的程序中发现的问题多,就重点测试该程序,以免不利于团结。()7.承诺不需要其他人员,自己就可以独立进行测试工作。()8.发扬要定青山不放松的精神,不把所有的问题都找出来,决不罢休。(),2024/2/28,7 软件评测知识,2024/2/28,
6、软件测试基础,软件测试的定义:利用手工或者自动化的方式对程序执行测试用例的过程。软件质量:软件满足规定或者潜在的用户需求特性的总和。软件测试和软件质量的关系:软件测试只是软件质量保证的一个重要环节。软件测试的目的:1.为了发现错误而运行程序的过程2.为了证明程序有错而不是无错的过程。3.好的测试用例在于它能够发现至今未发现的错误。4.成功的而测试在于发现了至今尚未发现的错误。软件测试的停止原则:zero bug(理论上)、Good enough测试的Good EnoughGood-enough原则:不要做不充分的测试,也不要做过多的测试;找到测试费用和测试量之间的平衡点,是最佳选择。制定测试内
7、容和最低测试通过标准加以衡量(必要时具体问题具体分析)。,2024/2/28,软件测试原则,应当把“尽早和不断的测试”作为测试者的座右铭,软件测试原则,程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完成,软件测试原则,设计测试用例时应该考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况下要制造极端状态和意外状态,比如网络异常中断、电源断电等情况,16,软件测试原则,一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。测试中存在群集现象,错误喜欢发现在相同的模块以及相关的开发人员编写的程序,软件测试原则,对测试错误结果一定要有一个确认的过程,
8、一般有A测试出来的错误,一定要有一个B 来确认,严重的错误可以召开评审会进行讨论和分析,软件测试的原则,制定严格的测试计划,并把测试时间安排的尽量宽松,不要希望在极短的时间内完成一个高水平的测试,软件测试的原则,回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多的错误出现的现象并不少见,软件测试的原则,妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档,软件测试的对象,程序、数据、文档 据统计:在查找出的问题中,属于需求分析和软件设计的错误约占64%,属于程序编写的错误仅占36%。,2024/2/28,软件测试过程模型,1.V模型2.W模型3.H模型4.X模型5
9、.前置模型测试(不要求掌握)测试模型的使用:通常在W模型的框架下运用H模型的思想进行独立的测试。当有变更发生时,按X模型的思想进行处理。同时将测试和开发紧密结合,寻找恰当的就绪点开始测试,并反复迭代。,2024/2/28,瀑布模型(Waterfall Model),瀑布模型的特点,从上一项活动接受本项活动的工作对象,作为输入;利用这一输入实施本项活动应完成的内容;给出本项活动的工作成果,作为输出传给下一项活动。,瀑布模型适用场合,在需求不明确的情况下,就无法采用瀑布模型,瀑布模型的优缺点,优点:强调开发的阶段性;强调早期计划及需求调查;强调产品测试。缺点:依赖于早期进行的唯一一次需求调查,不能
10、适应需求的变化;由于是单一流程,开发中的经验教训不能反馈应用于本产品的过程;风险往往迟至后期的开发阶段才显露,因而失去及早纠正的机会。,螺旋模型(Spiral Model),螺旋模型的优缺点,优点:强调严格的全过程风险管理。强调各开发阶段的质量。提供机会检讨项目是否有价值继续下去。缺点:引入非常严格的风险识别、风险分析和风险控制,这对风险管理的技能水平提出了很高的要求。这 需要人员、资金和时间的投入。,软件测试的生命周期,软件测试的生命周期 测试计划 测试设计、测试开发 测试执行 测试评估,软件测试v模型,软件测试V模型,V模型最早是由Paul Rook在世纪年代后期提出的,目的是改进软件开发
11、的效率和效果。是瀑布模型的变种明确的标注了测试过程中存在的不同类型的测试,并且清楚的描述了这些测试阶段和开发过程期间各阶段的对应关系V模型指出,单元和集成测试应检测程序的执行是否满足软件设计的要求;系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同的要求 局限性:仅仅把测试作为在编码之后的一个阶段,未在需求阶段就进入测试,软件测试双V模型,软件测试双V模型,W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成,分别代表测试与开发过程,图中明确表示出了测试与开发的并行关系。W模型特点:测试的对象不仅是程序,需求
12、、设计等同样要测试,测试与开发是同步进行的W模型优点:有利于尽早地全面的发现问题。例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,显著减少总体测试时间,加快项目进度。局限性:需求、设计、编码等活动被视为串行的;测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。无法支持迭代的开发模型。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑。,软件测试针对软件开发生命周期的流程,需求阶段测试人员了解需求、对需求进行分解,得出测试需求,编
13、写测试计划/测试方案设计阶段测试人员适当的了解设计,对于设计测试用例是很有帮助的,测试人员可以根据需求和设计编写一部分测试用例编码阶段测试人员一般是不需要编码的,但已经编码的模块,专业的白盒测试人员可以计划执行单元测试 测试阶段测试阶段是软件测试人员最为重要的工作阶段,这时候测试人员需要把测试用例进一步细化,根据测试用例和计划执行测试,在执行的过程中记录缺陷,测试完成后整理测试报告。实施测试人员需要参与项目的实施工作。测试人员对项目产品的业务和操作非常了解,加上测试人员的沟通表达能力一般都比较强,所以测试人员可以参与用户使用软件的培训,在试运行项目时收集问题并及时反馈给相关负责人。,测试模型使
14、用原则,几种典型的测试模型,应该说这些模型对指导测试工作的进行具有重要的意义,但任何模型都不是完美的。我们应该尽可能地去应用模型中对项目有实用价值的方面,但不强行地为使用模型而使用模型,否则也没有实际意义。,2024/2/28,软件测试类型,软件测试的分类 A通俗划分:功能测试和性能测试 A1功能测试分为:一般逻辑功能测试、界面测试、文档测试、安装测试、易用性测试等 A2性能测试分为:一般性能测试、稳定性测试、负载测试、压力测试 B按照测试阶段划分:单元测试、集成测试、确认测试、系统测试、验收测试。C按照测试实施组织划分:开发方测试、用户测试、第三方测试 区分alpha测试、beta测试 D按
15、照测试方式划分:动态测试和静态测试(结构检查、流图分析、符号执行)E 按照测试技术划分:白盒测试、黑盒测试、灰盒测试,2024/2/28,2024/2/28,黑盒测试(Black-box Testing)黑盒测试又称为功能测试、数据驱动测试和基于规格说明的测试。它是一种从用户观点出发的测试,一般被用来确认软件功能的正确性和可操作性。白盒测试(White-box Testing)白盒测试又称为结构测试、逻辑驱动测试或基于程序的测试,一般用来分析程序的内部结构。灰盒测试介于两者之间。,2024/2/28,2024/2/28,1、黑盒测试基本观点:任何程序都可以看作是从输入定义域映射到输出值域的函数
16、过程,被测程序被认为是一个打不开的黑盒子,黑盒中的内容(实现过程)完全不知道,只明确要做到什么。主要依据:根据规格说明书设计测试用例,并不涉及程序内部构造和内部特性,只依靠被测程序输入和输出之间的关系或程序的功能设计测试用例。特点:(1)黑盒测试与软件的具体实现过程无关,在软件实现的过程发生变化时,测试用例仍然可以使用。(2)黑盒测试用例的设计可以和软件实现同时进行,这样能够压缩总的开发时间。,2024/2/28,2024/2/28,黑盒测试主要是为了发现以下几类错误:是否有不正确或遗漏了的功能?在接口上,输入能否正确地接受?能否输出正确的结果?是否有数据结构错误或外部信息访问错误?性能上是否
17、能够满足要求?是否有初始化或终止性错误?黑盒测试的具体技术方法:等价类划分法 边界值分析法因果图法 决策表法,2024/2/28,2、白盒测试白盒测试将被测程序看作一个打开的盒子,测试者能够看到被测源程序,可以分析被测程序的内部结构,此时测试的焦点集中在根据其内部结构设计测试用例。白盒测试要求是对某些程序的结构特性做到一定程度的覆盖,或者说这种测试是“基于覆盖率的测试”。通常的程序结构覆盖有:语句覆盖 判定覆盖条件覆盖 判定/条件覆盖路径覆盖,2024/2/28,2024/2/28,2024/2/28,黑盒测试:以用户的观点,从输入数据与输出数据的对应关系,即根据程序外部特性进行测试,而不考虑
18、内部结构及工作情况。黑盒测试技术注重于软件的信息域(范围),通过划分程序的输入和输出域来确定测试用例。若外部特性本身存在问题或规格说明的规定有误,则应用黑盒测试方法是不能发现问题的。白盒测试:只根据程序的内部结构进行测试。测试用例的设计要保证测试时程序的所有语句至少执行一次,而且要检查所有的逻辑条件。如果程序的结构本身有问题,比如说程序逻辑有错误或者有遗漏,那也是无法发现的。,2024/2/28,评审内容,1.系统定义的目标与用户是否一致。2.需求分析阶段提供的文档是否齐全。3.描述是否完整、清晰、准确。4.重要接口是否都已经描述。5.数据流和数据结构是否足够和确定。6.图标是否清晰。能否理解
19、。7.设计的约束条件和限制条件是否符合要求。8.是否考虑开发的技术风险。9.是否考虑到将来可能会增加需求或者变更需求。10.是否有遗漏或者重复的地方。,2024/2/28,软件开发阶段的测试策略,1.单元测试 概述:目的在于发现各模块内部可能存在的各种差错。一般使用白盒测试方法,以路径覆盖为最佳准则。单元测试内容:模块接口 局部数据结构 重要的执行路径 错误处理 边界测试模块接口的测试要点:1.实际参数与形式参数的个数是否相等。2.调用其他函数时实际参数和形参个数是否相等。3.调用内部函数时所用参数的个数、属性、次序是否一致。4.是否存在与当前入口点无关的参数引用。5.全程变量在各模块中的定义
20、是否一致。7.常数是否当做变量传送。局部数据结构测试要点:1.不正确或不一致的说明,不一致的数据类型。2.错误的初始化或错误的默认值。3.上溢或者下溢。计算中最常见的错误:运算优先次序不正确,初始化不正确,精度不够,表达式括号表示错误等。,2024/2/28,单元测试的步骤,1.编译-静态代码复审-高级程序员召开审查会-分析程序逻辑和错误清单-测试预演-人工测试-动态测试-单元测试报告。,2024/2/28,集成测试,集成测试也称组装测试,综合测试或者联合测试。集成测试通过将单元测试的各个模块组装在一起后进行的测试,一边发现和接口有关的各种错误。常常考虑的问题有:数据经过接口是否会丢失;一个模
21、块对另外一个模块是否造成不应有的影响。误差不累积累是否达到不可接受的程度。集成测试分为非渐增式测试和渐增式测试。1.自顶向下渐增式测试。(深度优先、广度优先)2.自底向上渐增式测试。,2024/2/28,确认测试系统测试及验收测试,1.确认测试又称为有效性测试、合格性测试。此时已经消除了接口的错误。通过一系列黑盒测试测试来证实软件功能与用户需求是否一致。2.系统测试是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起。系统测试包括:恢复测试、安全性测试、强度测试、性能测试等。3.验收测试:以用户为主,开发人员和质量保证人
22、员也应参加的测试。,2024/2/28,测试与调试的区别,完成的任务不同测试的任务是发现程序中的缺陷;调试的任务是定位并且解决程序中的问题。执行的人不同测试主要是由测试人员和开发人员来执行,黑盒测试主要由测试人员完成、单元/集成测试主要是由开发人员执行。执行的周期不同测试贯穿整个软件开发生命周期,调试一般在开发阶段。,2024/2/28,课堂测验题,一,判断:1.软件失效是指软件运行时产生了一种不希望或者不可接受的内部行为。()2.代码审查是代码检查的一种,是由程序员、测试员组成的一个审查小组,通过阅读、讨论、争议对程序进行静态分析的过程。3.白盒测试是通过对程序内部结构的分析、检测来寻找问题
23、的测试方法。4.软件测试的对象就是指对程序的测试。5.单元测试是正对软件设计的最小单位-程序模块进行的测试工作。他通常需要开发辅助的桩模块作为主程序来调用被测模块完成测试。()。6.黑盒测试和白盒测试是测试的两种基本方法。7.在集成测试阶段是采用黑盒测试和白盒测试相结合的方法。8.应用系统负载压力测试一般采用黑盒测试方法。9.测试覆盖度和测试用例数量成正比。二,选择:1.典型的软件测试过程模型有(1)等,在这些模型中,(2)强调了测试计划等工作的先行和对系统需求和系统设计的测试,(3)对软件测试流程予以了说明。(1)A V模型、W模型、H模型、渐进模型 B V模型、W模型、H模型、螺旋模型 C
24、 X模型、W模型、H模型、前置测试模型 D X模型、W模型、H模型、增量模型。(2)A V模型 B W模型 C 渐进模型 D 螺旋模型(3)A V模型 B W模型 C H模型 D 增量模型三,试画出V模型图。四,试画出W模型图。并描述其优点。,2024/2/28,测试用例的设计,2024/2/28,本章学习目标,能够理解测试用例模版各要素能够运用测试用例设计几个测试用例,本章主题,软件测试用例的概念 设计测试用例的优缺点 测试用例模版 设计测试用例所需要的素质,测试过程中的问题,测试过程中遇到的问题不知道是否较全面的测试了所有功能测试的覆盖率无法衡量对新版本的重复测试很难实施存在大量冗余测试影
25、响测试效率,软件测试用例的概念,测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。测试用例一般可以简单划分为:场景测试用例(简称“测试用例”)和基本测试用例(或称为“公用测试用例”),设计测试用例的优缺点,好处有效性完整性组织性缺点测试用例的设计是费时费力的工作,往往设计测试用例所花费的时间比执行所花费的时间还多,测试用例的模版,WordExcel使用工具根据公司具体情况制定模版,测试用例模版,设计测试用例所需要的素质,测试用例的方法 考虑问题的全面性 业务知识的深刻性 逆向思维能力 丰富的测试经验,测试用例
26、的更新与维护,需要更新和维护的原因需求变更,功能变化,测试用例也需要更新测试用例需要细化和不断完善,是个循序渐进的过程通过测试实践检验测试用例并添加、修改、删除测试用例测试用例要经过正式、有效的评审利用测试工具来管理测试用例,总结,软件测试用例的概念 设计测试用例的优缺点 测试用例模版 设计测试用例所需要的素质,缺陷识别、分类、管理,2024/2/28,软件缺陷,软件缺陷定义,满足5个条件之一(所有软件问题都称为缺陷)软件未达到产品说明书中已标明的功能软件出现了产品说明书中指明不会出现的错误软件功能超出了产品说明书指明的范围软件未达到产品说明书虽未指出但应达到的目标软件测试员认为软件难以理解,不易使用,运行速度缓慢,或者最终用户认为该软件使用效果不好。,2024/2/28,缺陷的识别,产生缺陷的原因是什么?人员(用户、设计、开发、测试、技术支持等)之间的沟通交流不够,交流上有误解或者根本不进行交流文档不完善甚至没有文档(尤其是国内中小软件企业)需求不断的变化参与人员的过度自信程序设计本身有错误软件复杂度大,缺陷很难避免(例如Windows、Word)工期短,任务重,时间压力大软件开发工具与系统软硬件的支持,68,