




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件测试技术,Aug.2015,Agenda,软件测试的概念和分类黑盒测试技术测试用例的设计和实施缺陷(Bug)管理软件测试的生命周期软件测试常识,什么是软件测试,使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。软件测试需要严谨和一丝不苟的精神。,什么是测试用例,评价测试人员的标准主要有两个,即发现的有效Bug数和编写的有效测试用例数。测试用例:英文为TestCase,缩写为TC。指的是在测试执行之前设计的一套详细的测试方案,包括测试环境,测试步骤,测试数据和预期结果。测试用例=输入+输出+测试环境,Tips,测试用例模板Bug模板公司里测试部门的组织结构用什么工具管理TestCase和Bug测试分为几个组,分别是什么等等以上这些根据公司不同而不同,面试的时候可以问面试官相关的问题,例如,软件测试分类,黑盒和白盒测试静态和动态测试单元测试、集成测试、系统测试、验收测试功能测试性能测试回归测试、Smoke测试、随机测试(探索性测试),黑盒和白盒测试的概念,黑盒测试(Black-BoxTesting),指的是把被测的软件看作是一个黑盒子,我们不去关心盒子里面的结构是什么样子的,只关心软件的输入数据和输出结果。白盒测试(White-BoxTesting),指的是把盒子盖打开,去研究里面的源代码和程序结构。在软件公司里,往往采用黑盒和白盒技术相结合的方法,对软件的整体功能和性能进行黑盒测试,对软件的源代码采用白盒测试。,静态和动态测试,所谓的静态测试(StaticTesting),是指不实际运行被测软件,而只是静态的检查程序代码、界面或文档中可能存在的错误的过程。动态测试(DynamicTesting),是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。所以我们判断一个测试属于动态还是静态测试,唯一的标准就是看是否运行程序。,黑盒白盒,静态动态的关系,它们只是一个测试的不同分类角度而已,而且它们之间还有包含交叉的关系,总结一下4句话:黑盒测试有可能也是动态测试(运行程序,只看输入和输出),也有可能是静态测试(不运行程序,只查看界面)白盒测试有可能也是动态测试(运行程序,并分析代码结构),也有可能是静态测试(不运行程序,只是静态查看代码)动态测试有可能也是黑盒测试(运行程序,只看输入和输出),也有可能是白盒测试(运行程序,并分析代码结构)静态测试有可能也是黑盒测试(不运行程序,只是查看界面),也有可能是白盒测试(不运行程序,只是静态查看代码),单元测试、集成测试、系统测试、验收测试,软件测试中基本且重要的概念,它们都是按照软件测试的阶段来划分的。单元测试:对软件中的最小可可测试单元(最小的功能模块)进行检查和验证。集成测试:是单元测试的下一个阶段,是指将通过测试的单元模块组装成系统或者子系统,再进行测试,重点测试不同模块的接口部分。(接口测试)系统测试:是指将整个软件系统看做1个整体进行测试,包括对功能、性能、安全、兼容性进行测试。验收测试(AcceptanceTesting):是指在系统测试的后期,以用户测试为主,或有测试人员共同参与的测试,它也是软件正式交给用户使用的最后一道工序。,比较,功能测试和性能测试,功能测试(FunctionTesting):检查实际软件的功能是否符合用户的需求。可细分为:逻辑功能测试、界面测试、易用性测试、安装卸载测试、兼容性测试、安全测试。性能测试(PerformanceTesting):一般要用到自动化工具。软件的性能分为时间和空间的性能:时间性能:主要指软件的一个具体事务的响应时间(RespondTime)空间性能:主要指软件运行时所消耗的系统资源(e.g.CPU,内存,硬盘等)。软件性能测试的分类:一般性能测试、稳定性测试、负载测试、压力测试。,性能测试分类,一般性能测试:指被测系统在正常的软硬件环境下运行,不向其施加任何压力的性能测试。例如只让1个用户多次登录,记录系统资源的消耗情况(CPU,内存等),并记录单个用户的平均登录时间。稳定性测试(ReliabilityTesting):是指连续运行被测系统,检查系统运行时的稳定程度。用错误发生的平均时间间隔(MTBF)来衡量系统的稳定性,MFBF越大,系统的稳定性越强。负载测试(LoadTesting):通常是指让被测系统在其能忍受的压力的极限范围之内连续运行,来测试系统的稳定性。例如让1个,2个,5个,10-100个用户并发登录,在这个过程中每次都观察资源消耗情况,当发现资源消耗快要达到临界值时(CPU80%),停止增加用户,例如现在的并发用户数为50,我们就用这50个用户同时多次重复登录,直到系统出现故障为止。负载测试为我们测试系统在临界状态下运行是否稳定提供了一种办法。压力测试(StressTesting):通常是指持续不断的给被测系统增加压力,直到将被测系统压垮为止,用来测试系统所能承受的最大压力。比如我们不断地增加并发登录的用户数,120,150,170,200、当增加到200个用户并发登录时,系统崩溃了,这是我们就知道此软件所能承载的最大登录并发数为200个左右。,案例纸杯测试,微软公司的一道面试题,面试官随意选一个物品,让应聘者在规定的时间内说出测试策略或是设计测试用例。要求应聘者有一定的生活常识,了解常用的测试方法,并且思维要敏捷,有发散性。我们可以从基本功能测试、易用性测试、界面测试、压力测试、性能测试等角度去思考。比如安全性问题,杯子所用的材料是否符合食品卫生标准,在内外温度等环境因素下是否会与所盛各种饮料所应,而产生对人体有害的物质。以下是相关的答案,仅供参考:(1)基本功能测试(逻辑功能测试):硬度:是否达到设计标准。装载能力:在杯子内分别装入少量的、半杯的、满杯的,看其装载量是否达到设计标准。装载种类:开水(是否产生异味)、温水、冷水、冰水、咖啡,有颜色的饮料(2)界面测试(UI测试):看其形状、大小设计是否适合人方便拿起。外观是否吸引人(广告嘛),常新悦目带广告的图案沾水后是否掉色、模糊(3)易用性测试:看其形状、大小设计是否适合人方便拿起。残疾人士用此杯去喝水的容易程度。杯子设计是否上大下小,在运输过程中可以套在一起有效利用空间,在使用完也可以方便拿走。稳定性测试,装入液体后记录其多久以后漏水安全性测试,材料问题,符合食品卫生标准,温度,异味本地化测试,为国际化和本地化的需要,广告图案和文字是否在政治,宗教和文化方面具有广泛的适用性。,回归测试、Smoke测试、随机测试,这3个概念也很重要,他们既不属于测试阶段,也不算是具体的测试方法。回归测试(RegressionTesting),是指对软件的新的版本测试时,重复执行上一个版本测试时的用例。冒烟测试(SmokeTesting),是指在对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。随机测试(RandomTesting),是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。缺点,不如测试不系统,无法统计覆盖率/需求覆盖率,很难回归测试等,所以一般都是先作大规模的正规测试,如果时间允许的话,就辅助一些随机测试。,总结,黑盒测试技术,等价类方法边界值方法因果图法流程图法,黑盒测试技术-等价类方法,等价类技术(EquivalenceClassTesting)案例:加法器,有这样一个语言程序,功能是计算两个之间整数的和。其源代码如下所示:#includeVoidmain(void)inta,b,c;while(1)printf(“请输入两个1到100之间的整数:”);fflush(stdin);/清空输入缓冲区scanf(“%d%d”,printf(“两个数的和为%dn”,c)我们知道,在黑盒测试的时候一般是不看源代码的。我们现在只根据需求(计算1100之间整数的和)来设计测试用例,使用穷举测试的思想给加法器设计测试用例:一共要设计多少条用例呢?加数有共计个取值,加数也是,所以一共有100*100=10000种组合的可能,但这只是测试了正常范围内的取值,如果输入的数据不在1100之间呢?我们引入等价类的思想。,黑盒测试技术-等价类方法,等价类划分法是一种黑盒测试技术,它不考虑程序的内部结构,只是根据软件的需求说明来对输入的范围进行细分,然后再从分出的每一个区域内选取一个有代表性的测试数据。如果等价类分的好,这个代表性的测试数据的作用就等价于其区域内的其他取值。等价类又可分为有效等价类和无效等价类。有效等价类:是指符合需求规格说明书,合理地输入数据集合。无效等价类:是指不符合需求规格说明书,无意义的输入数据集合。那么这个程序里面,我们怎么划分等价类呢?根据输入要求将输入区域划分为个等价类:):100:无效等价类然后我们从每一个等价类中选取一个代表性的数据来测试,测试用例是:,等价类方法总结,等价类的定义等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。等价类划分的步骤(1)先考虑输入数据的数据类型(合法和非法的类型)(2)再考虑数据范围(合法类型中的合法区间和非法区间)(3)画出示意图,区分等价类(4)为每一个等价类编号(5)从一个等价类中选举一个测试数据构造测试用例理论上来说,如果等价类里面的一个数值能够发现缺陷,那么该等价类里面的其他数值也能够发现缺陷。实际过程中,首先要确保等价类的划分是争取的,否则也得不到正确的结果。多看一些案例,将这种思想应用到实际工作中。,边界值方法(BoundaryValueTesting),错误隐含在角落(ErrorsHideintheCorner),大量的测试实践经验表明,边界值是最容易出现问题的地方,也是我们的测试重点。需要说明的是,在白盒测试中也应用到了边界值得测试思想,边界值技术不是黑盒测试的专利。我们还是以上一节的加法器为例来讲解边界值的思想:输入要求是1100之间的整数,因此自然产生了1和100两个边界,我们在构造测试用例的时候要重点考虑这两个边界。我们在测试1和100这两个边界的时候,构造了(1,1)、(100,100)、(0,0)、(101,101)这组测试用例,即正好是边界的值和正好超出边界的值。结果发现(1,1)、(100,100)这两条测试用例未通过:本应正确求和,却提示信息要求输入正确整数,这是什么?正确的代码应该是:if(a=1&a=1&b=100),包括1和100,这两个边界值也是正常的值。测试边界值是,一般测试边界值和正好超出边界值一个单位的值。,等价类和边界值的关系,其实边界值和等价类的联系是很紧密的,边界值就是根据等价类划分的过程中产生的。而由于边界的地方最容易出错,我们在从等价类中选取测试数据的时候也经常选取边界值。举一反三!,黑盒测试技术因果图法,所谓的原因,指的就是输入;所谓的结果,指的就是输出。因果图法比较适合输入条件比较多的情况,测试所有的输入条件的排列组合。实际在测试的时候可以画因果图,但是笔者认为其有画蛇添足之嫌。其实因果图方法的本质就是构造所有输入条件的排列组合,达到这一目的就可以了。而且因果图的画法比较理论化,晦涩难懂,因此这里就不做过多的介绍。因果图法小结因果图的步骤找出所有输入条件和输出条件,并编号。分析输入条件之间的关系,是互斥还是可以同时满足。画出输入条件的排列组合情况。编写测试用例。2.因果图的应用场合当软件的输入条件较多的时候,我们可以考虑用因果图法来设计测试用例,考虑输入的所有排列组合情况,防止遗漏。3.因果图的局限性假如有N个条件,每个条件有真或假两种取值,那么理论上就有2的N次方种排列组合,这就大大增加了测试用例的数目,不便于维护。我们可以根据实际情况判断并精简输入条件的个数。,黑盒测试技术流程图法,我们在编程的时候,一般都需要画程序的算法流程图。我们同样可以将这一思想应用到黑盒测试领域。算法流程图是针对程序内部结构的,而黑盒测试的流程图是针对整个系统业务功能流程的。比如我们测一个B-C(商家对顾客)的电子商务网站,可以画一个顾客购物的流程图。再如,我们要测试某个机票预定系统,可画一个订票的流程图。凡是涉及业务流程的地方,我们都可以应用这种方法。我们来总结一下流程图法的步骤。第一步:详细了解需求。第二步:根据需求说明或界面原型,找出业务流程的各个页面及各页面之间的流转关系。第三步:画出业务流图(路径图)第四步:写用例,覆盖所有的路径分支。流程图法一般不是针对具体某个页面或是某个模块的测试,而是将被测系统看作一个完整的系统,从宏观上来分析其业务流程,然后再画出流程图来。其好处在于能够使测试人员对被测系统有一个总体的把握,防止测试的时候有遗漏的页面或模块。,黑盒测试技术的综合运用,在实际测试过程中,我们往往需要综合各种测试技术。我们首先应用流程图法画出被测软件的总体业务流程,然后针对具体某个页面或是模块,再应用等价类的思想来划分输入范围(重点测试边界值),如果涉及多个输入条件的组合情况,我们再应用因果图法考虑所有情况的排列组合。,测试用例的设计,依据的方法:等价类划分法边界值分析法因果图法流程图法等。我们编写的测试用例一般包括功能测试用例、非功能测试用例、百盒测试用例。功能测用例主要是基于需求的业务逻辑,是设计的重点。非功能测试用例主要包括界面测试用例、易用性测试用例、性能测试用例、兼容性测试用例、安全性测试用例等。白盒测试用例一般在单元测试之前编写,需要白盒测试的基本知识。,缺陷管理,Bug的分类缺陷报告提交缺陷报告的注意事项Bug的处理流程常见的缺陷管理工具,Bug的分类,Bug的基本定义:软件的Bug指的是软件中(包括程序和文档)不符合用户需求的问题,从这个定义中我们可以知道判断一个Bug的标准就是看其是否符合用户的需求。那么常见的Bug从不同的角度,可以将Bug分为多种类型。按严重程度(Severity)划分。例如:系统崩溃、严重、一般、次要、建议。按优先级(Priority)划分。表示处理和修正软件缺陷的先后顺序。例如:高(High)、中(Middle)、低(Low)。按照测试种类划分。可以将Bug分为逻辑功能类、性能类、界面类、易用性类、兼容性类等等,就是前面讲到的Bug分类。按功能模块划分。二八原则,我们在测试的时候可以统计一下Bug主要集中在哪些模块里,找到重点测试的区域。按Bug生命周期划分。每个Bug都有其生存和死亡的生命周期,可以这样划分:New,Investigated,Confirmed,Fixed,Closed,Reopen。,缺陷报告,不同的项目组会有不同的缺陷报告模板,报Bug时应该按照模板严格填写各项内容,使得缺陷报告更加完整。开发人员对Bug的解决情况和测试人员的验证情况通常是测试人员和开发人员沟通的机会。,提交缺陷报告的注意事项,缺陷报告是测试人员的主要工作产品之一。缺陷报告的读者通过缺陷报告来了解和评价测试人员,好的测试报告会增加开发人员对测试人员的信任度,差的缺陷报告会影响开发人员的效率,也会影响测试人员自身的声誉。下面列出了一些提交Bug时的注意事项:确保重现Bug要用最少且必要的步骤描述Bug简洁、准确、完整一个Bug一个报告测试人员要经常换位思考,尽量多站在开发人员的角度上思考问题。提交Bug时保持中立客观的态度,不要掺杂强烈的个人主观感情在里面。“You”,“My”,“They”等不应该出现在Bug的描述里。,Bug的处理流程,实际上,不同公司的Bug处理流程一般是不同的,同一公司不同项目的Bug处理流程也不尽相同。一般情况下的Bug的bug处理流程如下图所示:,提交缺陷报告,分配缺陷报告,处理缺陷报告,返测报告,关闭缺陷报告,返测通过,返测未通过,重新打开(Reopen),常见的缺陷管理工具,“工欲善其事,必先利其器”,使用合适的缺陷管理工具,可以使我们的缺陷管理事半功倍。比较流行的Bug管理工具:TrackRecord、Clearquest、Bugzilla(Free)、Mantis(Free)、JIRA(Free)、Github(Free)。很多公司也有自己研发的Bug管理工具,例如微软的,生命周期,软件的生命周期:软件开发和软件测试的生命周期:,认识几个模型,软件测试计划,编写测试计划的注意事项。编写测试计划时,应注意以下四点:增强计划的实用性,一切从实际出发,不流于形式。坚持“5W1H”规则,明确内容与过程。采用评审和更新机制,保证测试计划满足实际需求。分别创建测试计划与测试策略。(测试策略重点在HOW,目标性强。)5W1H分别指:,公司里测试部门的组织结构,手工和自动化比例开发和测试人员比例外包测试的比例,软件测试工程师所需具备的素质,三心二意1能力三心:细心、耐心和信心二意:服务意识、团队合作意识1能力:沟通能力,如何成为一名优秀的测试工程师,大侠是怎样炼成的?测试高手是怎样炼成的?内功是基础,测试人员也需要打好基础,计算机硬件、网络、操作系统、数据库、移动,语言等等。内功基础上就是各种武术招式了,测试里面的武术招式就是各种测试技术,比如黑盒测试中的等价类、边界值、因果图白盒测试中的语句覆盖、分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 杭州市中石油2025秋招笔试模拟题含答案安全环保与HSE岗
- 合作项目协议书14篇
- 商业招商合作协议书3篇
- 土地合同书集合15篇
- 地铁员工个人工作总结8篇
- 南昌高新招商集团2025年公开招聘52人笔试参考题库附带答案详解
- 2025渤海水业股份有限公司对外招聘11人笔试参考题库附带答案详解
- 2025河南新乡卫辉市诚辉计量检测有限公司招聘21人笔试参考题库附带答案详解
- 家长会小结 (15篇)
- 金融合同证券短信服务协议5篇
- 2025年矿业权评估师考试(矿业权评估地质与矿业工程专业能力)全真冲刺试题及答案
- 2025秋人教鄂教版(2024)科学一年级第一单元走近科学《1“钓鱼”游戏》 教学设计
- 2026届高考物理一轮复习策略讲座
- 食品腐烂变质安全培训课件
- 隧道施工车辆安全培训课件
- 福建省厦门市槟榔中学2024-2025学年九年级上学期阶段评估检测(10月)英语试卷(含答案无听力原文及音频)
- 汽车发动机课件
- 2025年法院书记员招聘考试笔试试题含答案
- 重阳节活动致辞
- 地下室结构施工课件
- 2025至2030中国氢燃料电池堆行业项目调研及市场前景预测评估报告
评论
0/150
提交评论