




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件测试基础教程一一慕课网课程目标1了解软件测试的含义2软件测试遵循的准则3软件测试有哪些分类?分别是什么概念4何时开始测试?测试方案如何设计?5测试流程是怎样的?怎么提bug?怎么写报告?6为什么要作自动化?怎么做?第一课时:软件测试概要一、软件测试的定义规定的要软件测试是使用人工或自动的手段来运行或测量软件系统的过程,以检验软件系统是否满足求,并找出与预期结果之间的差异。二、软件测试的测试的对象需求、概要设计、详细设计、运行环境、可运行程序、源代码。(软件测试工程序测试)三、软测的五大要素及两大目标资源【测试所,报告】五大要素:质量(最为核心),人员(决定因素),技术(实现手段)【测试技术
2、,方法,测试工具】,需的硬件,网络环境,测试生命周期,测试时间】,流程(测试标准)【测试计划,测试执行目标:提升测试覆盖率及测试效率四、软件测试所遵循的原则:1 .测试显示缺陷的存在,但不能证明系统不存在缺陷。2 .穷尽测试是不可能的,应设定及时终止的条件。3 .测试应该尽早进行。4 .缺陷具备群集特性。越是发现问题多的模块,就是我们重点关注的对象。5 .测试的杀虫剂悖论。在测试当中,我们采用同样的测试用例、同样的测试方法,多次、重复的来测试某一个模块,那最后我们就不能够再发现新的缺陷。所以我们的测试用例和测试方法应该不定期的评审和修改,并增加不同的测试方法或测试用例来测试软件或系统的不同部分
3、,从而发现更多的缺陷。6 .测试的二八原则。就是我们应该把80%的时间或资源用在20%的重点模块上,重点测试这款软件中20%的重要模块,来达到我们测试的效率和资源配置最佳的比例。7 .测试活动依赖于测试背景。第二课时:软件测试阶段、手段、模式一、软件测试阶段软件测试按测试阶段来分类:单元测试、集成测试、系统测试、验收测试。(一)单元测试是各个阶段测试的基础,是对软件中的最小可测试单元进行检查和验证。单元是人为规定的可测试的最小的模块。(java面向对象语言来说,最小可测试单元是每一个类)单元测试是对代码进行测试测试框架:junit针对JAVAnunit针对.netphpunit针对PHPCpp
4、Unit针对C+原则:1. 尽可能的保证各个测试用例是互相独立的。尽量避免使用依赖的方法。编写一个模拟的方法来取代使用外部依赖。2. 一般由代码的开发人员来实施,用以检验所开发的代码功能符合自己的设计要求。益处:1 .能尽早发现缺陷。2 .有利于重构。3 .简化集成。4 .文档。简化文档作用5 .用于设计。限制:1 .不可能覆盖所有的执行路径,所以不可能保证捕捉到所有路径的错误。2 .每一行代码,一般需要35行测试代码才能完成单元测试。所以存在投入和产出的一个平衡。(二)集成测试(偏于技术角度验证)是在单元测试完成的基础上针对已经完成单元测试的那些模块,把他们组成更高一级的模块和子系统,来针对
5、这些子系统进行的集成。各个最小单元模块之间的接口和子系统的集成。主要实施方案:I.BigBang。也叫一次性集成。就是把所有的东西组装好,然后再一起进行测试。2自顶向下。是一个递增的组装软件结构的方法。3自底向上4核心系统集成。5高频集成。高频次的不断地进行集成。集成测试与单元测试的区别是:1测试对象不同2测试依据不同单元一一主要;集成一一概要3测试的方法不同集成测试一一关注接口之间的集成;单元测试一一关注单元的内部(三)系统测试(偏于业务角度验证)(一般测试岗位,主要集中在系统测试)把整个系统组装以后置于真实的运行环境对这个系统进行全面的测试。主要做功能测试、性能测试、稳定性测试等多种测试。
6、是将经过集成测试的软件,作为计算机系统的一个部分,与系统中其他部分结合起来,在实际运行环境下对计算机系统进行的一系列严格有效的测试,以发现软件潜在的问题,保证系统的正常运行。关注点1 .关注系统本身的使用2关注系统与其他相关系统间的连通3关注系统在不同使用压力下的表现4关注系统在真实使用环境下的表现系统测试&集成测试区别集成测试:由通过了单元测试的各个模块所集成起来的构件测试对象系统测试:除了软件之外,还包括计算机硬件及相关的外围设备、数据采集和传输机构、支持软件、系统操作人员等整个系统测试时间集成测试介于单元测试和系统测试之间测试系统测试在集成测试之后测试内容集成测试:各个单元模块之间的接口
7、系统测试:整个系统的功能和性能测试角度集成测试:偏于技术角度的验证系统测试:偏于业务角度的验证(四)验收测试从用户的角度对系统软件的认可验收。也称交互测试。针对用户需求、业务流程的正式的测试,确定系统是否满足验收标准,由用户、客户或其他授权结构决定是否接受系统。定义:交付测试。针对用户需求、业务流程的正式的测试、确定是否满足验收标准,由用户、客户或者其他授权机构决定是否接受系统。验收测试细分可分为用户验收测试:开发交付之前运行验收测试:运维的层面合同和规范验收测试:参照约定的规范验收,还有法律法规alpha测试:在开发环境中,由用户进行测试Beta测试:脱离开发环境由用户提供的环境下进行测试二
8、、软件测试手段软件测试的分类:按可见度:黑盒白盒按状态:静态、动态按测试执行方式:手工、自动化(一)黑盒测试在完全不考虑程序内部结构和特性的情况下,通过暴露出来的接口对程序进行测试程序是否能正常接收输入,正确输出,一般针对界面或可见功能用户视角,通过结果判断优:1容易实施,不需要关注内部实现,操作简单2更贴近用户视角,测试场景与正式场景更接近缺:1覆盖率较近,只能覆盖代码量的不足40%(不了解内部实现不知道内部分支)2针对黑盒的自动化测试,复用率较低,维护成本较高黑盒针对功能进行测试,变动较大,用例使用率较低主要测试的地方(关注点)1 .功能是否正确或遗漏2 .接口上输入、输出是否正确3 .数
9、据结构或外部信息是否有访问错误4 .性能是否满足系统测试阶段主要使用黑盒测试其它各个阶段也会用到黑盒测试的主要设计方法1 .等价类划分法:针对程序有很多输入条件,把所有的输入把等价的归为一类,形成若干等价的代表形输入,通过典型数据进行测试用例的设计。2 .边界值分析法:特殊的等价类划分,更关注各种边界条件,开发时容易出现失误的地方需要重点关注3 .错误推测法:基于经验或直觉,判断出程序中容易失误的地方,从而制作测试用例例如:特殊字符、文件不存在,或文件超大等4 .因果图法:拿到程序的需求规格说明书,针对输入输出在因果图中看作原因和结果根据规划说明生成判断表5 .正交试验分析法:主要用于筛选输入
10、数据6 .状态迁移图法:通过处理功能点的状态迁移关系,例如审批流程中的状态变化7 .流程分析法:通过梳理逻辑程序的路径(二)白盒测试黑盒:内部不可见白盒:逻辑结构对测试人员是透明的,又叫结构化测试或透明盒,通过对逻辑结构来设计测试用例。用逻辑的覆盖率来测试逻辑的完整性。逻辑的单位:语句、条件、条件组合、分支、路径语句覆盖:保证每条语句至少被执行一次判定:条件覆盖:覆盖表达式分支是路径的一部分优:1 .迫使测试人员去仔细思考软件的实现,理解原理2 .可以检测代码中的每条分支和路径3 .揭示隐藏在代码中的错误4 .对代码的测试比较彻底缺:1 .昂贵(较高的覆盖率,工作量大)2 .无法检测代码中遗漏
11、的路径和数据敏感性错误3 .针对代码不是针对需求,不能正确验证需求实现是否正确白盒测试的方法:1 .代码检测法:对代码进行检测2 .静态结构分析法:通过测试工具分析系统结构数据结构、内部控制逻辑来制定测试用例3 .静态质量度量法:is。标准制作度量模型4 逻辑覆盖法:6种主要覆盖测试方法:语句条件条件组合分支路径条件vs判定覆盖5 .基本路径测试法:白盒中主要的一种测试方法在程序控制流图的基础上,通过分析控制构造复杂度导出基本可执行的路径的集合进而制作测试用例的方法6.控制流图:描述控制流灰盒:介于黑、白盒测试之间的,关注输入、输出的正确性、同时也关注内部表现结合了黑、白的测试要素,主要用于组
12、件的测试(三)静态测试静态测试:无须执行被测程序,通过评审软件文档或代码,度量复杂度,检查软件是否符合编程标准以发现程序的不足之处,减少错误出现的概率可以通过人工,也可以通过自动化工具方式.:互审走查(小组)会议(记录正式),不正式到正式的集体活动(四)动态测试动态测试:通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等黑盒:主要是动态测试方法白盒:代码检查法和静态代码分析法就是典型的静态方法(五)手工测试手工测试:由专门的测试人员从用户视角来验证软件是否满足设计要求的行为。更适用针对深度的测试和强调主观判断的测试手工测试方法:众包测试、探索式测试优:1易发现缺陷
13、2容易实施3更具有创造性、灵性性缺:1覆盖量化难2重复测试效率低3不一致性、可靠性低(前后不一致)4人力资源依赖(六)自动化测试自动化:使用单独的测试工具软件控制测试的自动化执行以及对预期和结果进行自动检查自动化测试方法:单元测试、接口测试、性能测试等优:1高效率、速度快2高复用性3覆盖率容易度量4准确、可靠5不知疲劳缺:1机械、发现缺陷率低,不具备创造性不灵活2一次性投入较大(从实施自动化测试之初、从测试工具的选型、框架的设计到自动化测试脚本的编写、维护都需要投入较大的精力和资源)手工和自动化各有适用场景手工测试自动化测试手工测试I易发现缺陷容易实施-创造性,灵活性 覆盖量化难 重复测试效率
14、低 不一致性*可靠性低 高效率、速度快 高复用性 覆盖率容易度量 准确,可靠*不知疲劳机械*发现缺陷率低自动化测试软件测试模式瀑布模型、敏捷测试、基于脚本的测试、基于风险的测试、探索式测试等。(一)瀑布模型瀑布模型:项目计划、需求分析、软件设计、程序开发、软件测试、集成维护项目计划:制定总体的研发计划,确定主要的里程碑节点一输出项目计划书)需求分析:明确用户需求定义,并对定义进行清晰描述,充分理解需求,描述产品功能求规格说明)输出产品需软件设计:根据需求定义,设计产品的实现方案,包括定义软件硬件的结构、组件、实现方法、接口、界面、数据输出概要设计、详细设计程序开发:根据概要和详细设计具体实现,
15、根据编程规范构建各类组件模块,输出产品版本。软件测试:通过独立的测试小组评估产品是否满足需求定义输出测试报告集成维护:交付用户,根据用户使用情况进行维护及升级优点:1.强调需求、设计的作用;2前一阶段完成后,只需关注后续阶段;3为项目提供了按阶段划分的检查点,里程碑清晰;4文档规范缺点:1难以适应需求的频繁变;2项目周期后段才能看到成果,增加了风险3强制的里程碑、完成时间点,适应能力差;4.文档工作量大瀑布模型的优缺点强调需求.设计的作用-前一阶段完成后,只需 关注后续阶段为项目提供了按阶段划 分的检查点,里程碑清 晰*堆以适应需求的频繁变 化项目周期后段才能看到 成果-强制的里程碑.完成时
16、间点.文档规范-文档工作量大优点(二)V模型(最广泛)是瀑布模型的变种明确表明测试过程的不同级别,阶段:单元测试-集成测试系统测试-验收测试,并且描述了各个阶段与开发过程各个阶段的对应关系。需求分析概要设计%详细设计破牡漏码二验收测试系统测试集成测试胃元测试PaulRock优点:强调软件开发的协作和速度,反应测试活动和分析设计的关系,软件的实现和验证有机结合缺点:仅把关系明确对应,忽略了对需求分析的验证,对需求和功能的测试到验收测试才能发现;没有很好的体现测试的及时性(三)w模型(双V模型)开发与测试并行,可以尽早发现问题W模型用户需求工分析险收测试设计系统测试设计概要设计集成测试设计交付实施
17、验收测试系统测试详细设计单元测试设编码0卷单元测试IEvolutif公司优点:1增加了开发各个阶段的验证,测试的对象不再是对象,对需求和分析都有测试过程2有利于及于发现项目的风险,线性的相互关系缺点:不能很好的支持像迭帚这样的模式(四)X模型解决交接和频繁集成周期的问题X模型程序片段n(五)H模型测试设计工具配芒执行刘试迭代仁上编码完成,执行建试THRS4封版执行测试探索武测试执行测试Marrick把测试当成一个完全独立的流程,便于尽早的完成测试,与其他流程并发进行,可以是任何流程(比如设计流程,并发流程,甚至是测试流程),可交叉。四、软件测试模式一一敏捷测试(一)敏捷测试定义:AgileTe
18、sting遵循敏捷宣言的一种测试实践敏捷宣言:个体与交互重于过程和工具可用的软件重于完备的文档客户协作重于合同谈判响应变化 敏捷测试:重于遵循计划1强调从客户角度测试2重点关注迭代测试新功能,不在强调测试阶段3尽早测试,不间断测试,具备条件即测试4强调持续反馈5预防缺陷重于发现缺陷敏捷测试VS传统测试:传统测试敏捷测试测试是质量的最后保护者开发和测试人员紧密合作,大家都有责任对软件负责严格的变更管理变更可以接受预先的计划和细节准备计划随着进展时常调整重量级文档只需要必要的文档各阶段测试严格的入口和出口标准各迭代之间没有明显入口和出口标准更多在回归测试时进行重量级自动化测试所有阶段都要自动测试,
19、每个人都需要做,是项目集成一部分严格依赖测试流程流程不冉需要严格执行测试与开发团队相对独立团队合作是无缝隙合作(2) 基于脚本的测试SBT基于脚本的测试Script(测试用例)-basedtestingScripted(测试脚本)testingST先设计测试,再执行测试。(3) 探索式测试ETET探索式测试:exploratorytesting完全抛开测试脚本的测试探索式测试分为局部探索式测试和全局探索测试局部探索式测试五大模块1 输入:接受输入、产生输出、存储数据、进行运算(主要是这四种任务)测试时是从输入顺序,输出内容输出异常几个角度来考虑测试的要点2状态:可分为临时状态和永久状态运行有效
20、、阶段是有效,这种是临时状态、数据库保存、文件保存,相对来说是永久状态。协助我们更叫有效的判断测试输入测试输出3代码路径:多指代对码的覆盖(例如白盒测试覆盖的方法)4用户数据:构造真实的用户数据5执行环境:软件运行的操作系统系统组网的网络拓扑与系统交互的第三方系统系统的配置数据运行系统的硬件设备对测试的影响(局部测试所要考虑的要点)全局探索式测试(漫游测试法)1 .商业区:软件从启动到关闭,这期间主要可能使用到的功能;2旅馆区:主要指软件在休息运行的功能(后台的进程,或者是定时的任务);3 .历史区:以前测试中发现较多问题的功能;4 .旅游区:新手使用的功能(新手指引);5 .娱乐区:系统主要
21、功能之外的辅助功能6 .破旧区:系统已经废弃的或者看不到的7 索式测试流程1 .了解测试任务的重点、主要的测试方向,系统的环境,做到有个总体的思路2 .了解系统的业务逻辑,具体功能,深入学习被测系统3 .探索式测试的实施阶段,完成主要功能点的测试验收,覆盖测试4 .在上一步的基础上,发散式探索式测试,挖掘一些深层次的问题5 .对前面的测试工作的总结,整理过程的测试信息6 .缺陷大扫除优缺点:探索式测试的优点探索式测试的缺点L更能激发测试人员的创造性和工作乐趣L测试管理上有局限性,较难协调和控制2,增加了发现新的或较深入Bug的可能性2对于Bug的重现伤作用有限3.在较短的时间内找到更多Bug以
22、及对SUI(被测系统)做一个快速的评估3.对测试人员的测试技能和业务只是深度依赖较大4.有利于更加有效的实施自动化4,只有在SOT已完全可用的前提下才更有作用5,更加适用于敏捷项目5.ET的生产率很难定义6.减少了再简单、繁复上用例的无为编写时间6.ET本身较难进行自动化ST【基于脚本的测试】和ET【探索性测试】互补实际项目实施情况:purescripted完全参照测试用例执行,测试用例十分详细vaguescripted写测试用例,对预期结果,执行步骤的描述简单fragmentarytestcases不再编写测试用例,只是写一些测试点charters详细的任务列表,写出测试对象,测试策略,可能
23、风险,参考文档roles给测试人员一个角色,测试人员从角色出发测试产品freestyleET完全自由,无文档,不记录要点STvsETSTVsET奈统性程客易管理、控制设计在先,执行在后主耍星验还自己的思路三隔用性 自由灵活 和5T是亘补的 执行和iS计(思考) 井行 不断和系统交亘.带蔷 问砸测试 学习的过程ST(四)基于风险的测试RBTRisk-baseTesting种基于对软件失效的风险评估并以此指导测试计划、设计、执行、结果评价的软件测试类型风险包括:质量风险、管理风险风险级别=风险可能性*风险严重度识别风险:可能性、复杂性、时间压力、高变更率、技能水平、地理分散度严重程度:使用频率、失
24、效可视性、商业损失、组织负面影响和损害、社会损失和法律责任(五)基于模型的测试MBT它的测试用例是从一个模型中导出所得,这个模型描述了被测系统的某些方面,通常是功能部分。模型:对需求功能建模第三课时:软件测试类型软件测试按测试类型:功能测试、性能测试、兼容性测试、部署测试、易用性测试、文档测试、本地化测试、安全测试、无障碍测试、可靠性测试一、功能测试根据产品特性、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。针对的问题:功能错误或遗漏、界面问题、性能错误、数据及访问错误、初始化及终止错误。功能测试工具:商用:QTP(web应用卜winrunner(桌面软件)、sil
25、kTest、Rationalrobot开源:selenium、Watir(基于ruby语言,针对web应用)、Sikuli(屏幕截图)二、性能测试性能测试分类负载测试:在测试过程中,逐步的增加负载,来观察系统的表现,最终确定出系统在正常的指标范围下的最大负载。压力测试:测试系统在极限情况下的压力情况,最终系统是什么样的压力环境下会导致失效,不能正常运行,确定出我们这个系统所能承受的最大极限。稳定性测试:一般是以稍大于正常业务量的负载进行持续的、长时间的测试,比如:24*5,连续5天的对这个系统进行24小时的施加压力,以确定系统在较长时间的运行情况下,我们这个系统地稳定性情况。性能指标并发用户数
26、VU,同时访问系统的用户数量;每秒事务数TPS每秒系统处理业务的数量;系统响应时间;设备性能,CPU等性能测试工具LoadRunner,Silkperformer,Jmeter(java开源的有效的测试工具),WebLoad,ApacheBench,LoadUI专门针对接口的性能测试)静态性能评估开发web应用时,基于一系列web应用性能优化的最佳实践对web应用的页面进行静态分析,并给出评估结果的性能分析方法评估的标准/工具(YSIow,PageSpeed)应用性能管理APM提供对系统的实时监控以实现性能管理,故障管理的解决方案三、安全测试安全测试:对软件产品进行测试以确保其符合产品安全需求
27、和质量标准渗透测试:通过对软件系统的恶意攻击行为来评估系统安全性的一种测试区别:渗透测试:尝试去攻破软件的防御机制安全测试:建立全方位攻击防御机制OWasp:openwebapplicationsecurityproject开放的WED应用安全项目安全测试最关注:A.OWASPtoptenprojectInjection注入脚本漏洞使用户访问到不该访问的数据的目的2. BrokenAuthenticationandSessionManagement失效的身份认证和会话管理会话劫持漏洞3. CrossSiteScripting(XSS跨站脚本1.1 nsecureDirectObjectRefe
28、rences不安全的对象直接引用参数的保护1.5 ecurityMiseonfiguration安全配置类错误1.6 ensitiveDataExposure敏感信息泄露信息传递没有对关键信息进行加密7. MissingFunotionLevelAccessControl功能级别访问控制缺失,比如访问网站可以访问到用户没有权限到达的地方8. Cross-SiteFunctionLevelAccessControl(CSRF跨站请求伪造9. UsingComponentswithKnownVulnerabilities使用了已知有漏洞的组件10. IInvalidatedRedirectsadn
29、Forwards未被验证的重定向和转发(钓鱼网站)11. 试指南testingproject安全测试工具:appscan(针对web),webinspect(web)nessus(服务器)nmap(端口)metasploit(攻击框架,有大量插件,渗透测试)webscarab(代理坚持,攻击路径)fortify(白盒,源代码静态测试)W3AF(web)四、兼容性测试(1)软件本身的兼容性:主要是软件的向后兼容,如软件升级,以前版本的功能也能使用(2) 不同平台下的兼容性:如在Linux系统下的ubuntu、openSUSE等,进行平台的兼容性测试(3) 对不同的设备的兼容性:如32位、64位、如小型机、PC等(4) 软件的互操作性:如和一些主流应用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南京市政道路路面施工方案
- 卫生间橡皮金防水施工方案
- 退股协议方案
- 上承式钢箱拱桥施工方案
- 蒸汽管道下穿铁路施工方案
- 水库堤坝加固工程施工方案
- 铁路变配电所维修施工方案
- 构建健全的外商投资服务体系的策略
- 发展中医药服务与传统医疗模式的策略及实施路径
- 低空经济的市场前景
- 2025年中储粮吉林分公司招聘(74人)笔试参考题库附带答案详解
- 2024-2025学年九年级化学人教版教科书解读
- 2024年上海烟草集团有限责任公司招聘笔试真题
- 2025年长春医学高等专科学校单招职业技能测试题库及完整答案1套
- 2025年中国大唐集团有限公司重庆分公司高校毕业生招聘笔试参考题库附带答案详解
- 游戏账号购买协议书范本
- 北京工装合同范本
- 建筑工地道路养护的进度与措施
- 加油站合作经营协议书范本
- 《苗圃生产与管理》教案-第二章 园林苗木的种实生产
- 2025年西安铁路职业技术学院高职单招高职单招英语2016-2024历年频考点试题含答案解析
评论
0/150
提交评论