![软件测试基础课程-慕课网_第1页](http://file4.renrendoc.com/view/122e9ff4c14dd1ddb15a561a23d228c4/122e9ff4c14dd1ddb15a561a23d228c41.gif)
![软件测试基础课程-慕课网_第2页](http://file4.renrendoc.com/view/122e9ff4c14dd1ddb15a561a23d228c4/122e9ff4c14dd1ddb15a561a23d228c42.gif)
![软件测试基础课程-慕课网_第3页](http://file4.renrendoc.com/view/122e9ff4c14dd1ddb15a561a23d228c4/122e9ff4c14dd1ddb15a561a23d228c43.gif)
![软件测试基础课程-慕课网_第4页](http://file4.renrendoc.com/view/122e9ff4c14dd1ddb15a561a23d228c4/122e9ff4c14dd1ddb15a561a23d228c44.gif)
![软件测试基础课程-慕课网_第5页](http://file4.renrendoc.com/view/122e9ff4c14dd1ddb15a561a23d228c4/122e9ff4c14dd1ddb15a561a23d228c45.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件测试基础教程——慕课网课程目标1•了解软件测试的含义2•软件测试遵循的准则3•软件测试有哪些分类?分别是什么概念4•何时开始测试?测试方案如何设计?5•测试流程是怎样的?怎么提bug?怎么写报告?6•为什么要作自动化?怎么做?第一课时:软件测试概要一、软件测试的定义软件测试是使用人工或自动的手段来运行或测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异。二、软件测试的测试的对象需求、概要设计、详细设计、运行环境、可运行程序、源代码。(软件测试工程序测试)三、 软测的五大要素及两大目标五大要素:质量(最为核心),人员(决定因素),技术(实现手段)【测试技术,方法,测试工具】,资源【测试所需的硬件,网络环境,测试生命周期,测试时间】,流程(测试标准)【测试计划,测试执行,报告】目标:提升测试覆盖率及测试效率四、 软件测试所遵循的原则:测试显示缺陷的存在,但不能证明系统不存在缺陷。穷尽测试是不可能的,应设定及时终止的条件。煽码单元测姦系域測试验收测就发布后测试应该尽早进行。煽码单元测姦系域測试验收测就发布后引入缺陷发现缺陷朕觸修复成本缺陷具备群集特性。越是发现问题多的模块,就是我们重点关注的对象。测试的杀虫剂悖论。在测试当中,我们采用同样的测试用例、同样的测试方法,多次、重复的来测试某一个模块,那最后我们就不能够再发现新的缺陷。所以我们的测试用例和测试方法应该不定期的评审和修改,并增加不同的测试方法或测试用例来测试软件或系统的不同部分,从而发现更多的缺陷。测试的二八原则。就是我们应该把80%的时间或资源用在20%的重点模块上,重点测试这款软件中20%的重要模块,来达到我们测试的效率和资源配置最佳的比例。测试活动依赖于测试背景。第二课时:软件测试阶段、手段、模式一、软件测试阶段软件测试按测试阶段来分类:单元测试、集成测试、系统测试、验收测试。(一)单元测试是各个阶段测试的基础,是对软件中的最小可测试单元进行检查和验证。单元是人为规定的可测试的最小的模块°(java面向对象语言来说,最小可测试单元是每一个类)单元测试是对代码进行测试测试框架:junit针对JAVAnunit针对.net phpunit针对PHPCppUnit针对C++原则:尽可能的保证各个测试用例是互相独立的。尽量避免使用依赖的方法。编写一个模拟的方法来取代使用外部依赖。一般由代码的开发人员来实施,用以检验所开发的代码功能符合自己的设计要求。益处:能尽早发现缺陷。有利于重构。简化集成。文档。简化文档作用用于设计。限制:不可能覆盖所有的执行路径,所以不可能保证捕捉到所有路径的错误。每一行代码,一般需要3~5行测试代码才能完成单元测试。所以存在投入和产出的一个平衡。(二)集成测试(偏于技术角度验证)是在单元测试完成的基础上针对已经完成单元测试的那些模块,把他们组成更高一级的模块和子系统,来针对这些子系统进行的集成。各个最小单元模块之间的接口和子系统的集成。主要实施方案:BigBang。也叫一次性集成。就是把所有的东西组装好,然后再一起进行测试。自顶向下。是一个递增的组装软件结构的方法。自底向上核心系统集成。高频集成。高频次的不断地进行集成。集成测试与单元测试的区别是:测试对象不同测试依据不同单元——主要;集成——概要测试的方法不同集成测试——关注接口之间的集成;单元测试——关注单元的内部(三)系统测试(偏于业务角度验证)(一般测试岗位,主要集中在系统测试)把整个系统组装以后置于真实的运行环境对这个系统进行全面的测试。主要做功能测试、性能测试、稳定性测试等多种测试。是将经过集成测试的软件,作为计算机系统的一个部分,与系统中其他部分结合起来,在实际运行环境下对计算机系统进行的一系列严格有效的测试,以发现软件潜在的问题,保证系统的正常运行。关注点关注系统本身的使用关注系统与其他相关系统间的连通关注系统在不同使用压力下的表现关注系统在真实使用环境下的表现系统测试&集成测试区别测试对象集成测试:由通过了单元测试的各个模块所集成起来的构件系统测试:除了软件之外,还包括计算机硬件及相关的外围设备、数据采集和传输机构、支持软件、系统操作人员等整个系统测试时间集成测试介于单元测试和系统测试之间测试系统测试在集成测试之后测试内容集成测试:各个单元模块之间的接口系统测试:整个系统的功能和性能测试角度集成测试:偏于技术角度的验证系统测试:偏于业务角度的验证(四)验收测试从用户的角度对系统软件的认可验收。也称交互测试。针对用户需求、业务流程的正式的测试,确定系统是否满足验收标准,由用户、客户或其他授权结构决定是否接受系统。定义:交付测试。针对用户需求、业务流程的正式的测试、确定是否满足验收标准,由用户、客户或者其他授权机构决定是否接受系统。验收测试细分可分为用户验收测试:开发交付之前运行验收测试:运维的层面合同和规范验收测试:参照约定的规范验收,还有法律法规alpha测试:在开发环境中,由用户进行测试Beta测试:脱离开发环境由用户提供的环境下进行测试二、软件测试手段软件测试的分类:按可见度:黑盒白盒按状态:静态、动态按测试执行方式:手工、自动化(一)黑盒测试在完全不考虑程序内部结构和特性的情况下,通过暴露出来的接口对程序进行测试程序是否能正常接收输入,正确输出,一般针对界面或可见功能用户视角,通过结果判断优:容易实施,不需要关注内部实现,操作简单更贴近用户视角,测试场景与正式场景更接近缺:覆盖率较近,只能覆盖代码量的不足40%(不了解内部实现不知道内部分支)针对黑盒的自动化测试,复用率较低,维护成本较高黑盒针对功能进行测试,变动较大,用例使用率较低主要测试的地方(关注点):功能是否正确或遗漏接口上输入、输出是否正确数据结构或外部信息是否有访问错误性能是否满足系统测试阶段主要使用黑盒测试其它各个阶段也会用到黑盒测试的主要设计方法1.等价类划分法:针对程序有很多输入条件,把所有的输入把等价的归为一类,形成若干等价的代表形输入,通过典型数据进行测试用例的设计。2.边界值分析法:特殊的等价类划分,更关注各种边界条件,开发时容易出现失误的地方需要重点关注错误推测法:基于经验或直觉,判断出程序中容易失误的地方,从而制作测试用例例如:特殊字符、文件不存在,或文件超大等因果图法:拿到程序的需求规格说明书,针对输入输出在因果图中看作原因和结果根据规划说明生成判断表正交试验分析法:主要用于筛选输入数据状态迁移图法:通过处理功能点的状态迁移关系,例如审批流程中的状态变化流程分析法:通过梳理逻辑程序的路径(二)白盒测试黑盒:内部不可见白盒:逻辑结构对测试人员是透明的,又叫结构化测试或透明盒,通过对逻辑结构来设计测试用例。用逻辑的覆盖率来测试逻辑的完整性。逻辑的单位:语句、条件、条件组合、分支、路径语句覆盖:保证每条语句至少被执行一次判定:条件覆盖:覆盖表达式分支是路径的一部分优:1.迫使测试人员去仔细思考软件的实现,理解原理2.可以检测代码中的每条分支和路径揭示隐藏在代码中的错误对代码的测试比较彻底缺:昂贵(较高的覆盖率,工作量大)无法检测代码中遗漏的路径和数据敏感性错误针对代码不是针对需求,不能正确验证需求实现是否正确白盒测试的方法:代码检测法:对代码进行检测静态结构分析法:通过测试工具分析系统结构数据结构、内部控制逻辑来制定测试用例静态质量度量法:iso标准制作度量模型4•逻辑覆盖法:6种主要覆盖测试方法:语句条件条件组合分支路径条件vs判定覆盖基本路径测试法:白盒中主要的一种测试方法在程序控制流图的基础上,通过分析控制构造复杂度导出基本可执行的路径的集合进而制作测试用例的方法控制流图:描述控制流灰盒:介于黑、白盒测试之间的,关注输入、输出的正确性、同时也关注内部表现结合了黑、白的测试要素,主要用于组件的测试(三) 静态测试静态测试:无须执行被测程序,通过评审软件文档或代码,度量复杂度,检查软件是否符合编程标准以发现程序的不足之处,减少错误出现的概率可以通过人工,也可以通过自动化工具方式:互审-走查(小组)-会议(记录正式),不正式到正式的集体活动(四) 动态测试动态测试:通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等黑盒:主要是动态测试方法白盒:代码检查法和静态代码分析法就是典型的静态方法(五) 手工测试手工测试:由专门的测试人员从用户视角来验证软件是否满足设计要求的行为。更适用针对深度的测试和强调主观判断的测试手工测试方法:众包测试、探索式测试优:1.易发现缺陷2.容易实施3.更具有创造性、灵性性缺:1.覆盖量化难2.重复测试效率低3.不一致性、可靠性低(前后不一致)4.人力资源依赖(六)自动化测试自动化:使用单独的测试工具软件控制测试的自动化执行以及对预期和结果进行自动检查自动化测试方法:单元测试、接口测试、性能测试等优:1.高效率、速度快2.高复用性3.覆盖率容易度量4.准确、可靠5.不知疲劳缺:1.机械、发现缺陷率低,不具备创造性不灵活一次性投入较大(从实施自动化测试之初、从测试工具的选型、框架的设计到自动化测试脚本的编写、维护都需要投入较大的精力和资源)手工和自动化各有适用场景手工测试vs自动化测试手工测试自动化测试•易发现缺陷•咼效率,MS快■容易实施*咼复用性•创造性、灵活•覆盖率容易度量,覆盖量化难•准确、可靠•重复测试效率低•平知疲劳*不一致性.可靠性低订几械、发现缺陷率低-人力资源依赖-_次性投入较大三、软件测试模式瀑布模型、敏捷测试、基于脚本的测试、基于风险的测试、探索式测试等。一)瀑布模型瀑布模型:项目计划、需求分析、软件设计、程序开发、软件测试、集成维护项目计划:制定总体的研发计划,确定主要的里程碑节点-输出项目计划书)需求分析:明确用户需求定义,并对定义进行清晰描述,充分理解需求,描述产品功能-输出产品需求规格说明)
软件设计:根据需求定义,设计产品的实现方案,包括定义软件硬件的结构、组件、实现方法、接口、界面、数据-输出概要设计、详细设计程序开发:根据概要和详细设计具体实现,根据编程规范构建各类组件模块,输出产品版本。软件测试:通过独立的测试小组评估产品是否满足需求定义-输出测试报告集成维护:交付用户,根据用户使用情况进行维护及升级优点:1.强调需求、设计的作用;2.前一阶段完成后,只需关注后续阶段;为项目提供了按阶段划分的检查点,里程碑清晰;4.文档规范缺点:1.难以适应需求的频繁变;2.项目周期后段才能看到成果,增加了风险强制的里程碑、完成时间点,适应能力差;4.文档工作量大瀑布模型的优缺点駐点>强调需求、设计的作用駐点>强调需求、设计的作用-前—阶段完成后,只需关注后续阶段*为项目提供了按阶段划分的检査点,里程碑清晰*文档规范-难以适应需求的频緊变化*项目周期后段才能看到成果•强制的里程碑、完成时间点口•文档工作量大(二)V模型(最广泛)是瀑布模型的变种明确表明测试过程的不同级别,阶段:单元测试-集成测试-系统测试-验收测试并且描述了各个阶段与开发过程各个阶段的对应关系。
软件编码V模型需求分桁验收测试概要设计隼成测试PaulRock详细设计软件编码V模型需求分桁验收测试概要设计隼成测试PaulRock详细设计优点:强调软件开发的协作和速度,反应测试活动和分析设计的关系,软件的实现和验证有机结合缺点:仅把关系明确对应,忽略了对需求分析的验证,对需求和功能的测试到验收测试才能发现;没有很好的体现测试的及时性(三)W模型(双V模型)开发与测试并行,可以尽早发现问题交忖实编集朗单元测试W模型用户需求验收测试设计验收测试系统测试设计需求分析概要设计隼成测试设计集成测试详细设计单元测试设计Eglutif开发与测试并行,可以尽早发现问题交忖实编集朗单元测试W模型用户需求验收测试设计验收测试系统测试设计需求分析概要设计隼成测试设计集成测试详细设计单元测试设计Eglutif公司优点:1.增加了开发各个阶段的验证,测试的对象不再是对象,对需求和分析都有测试过程2.有利于及于发现项目的风险,线性的相互关系缺点:不能很好的支持像迭帯这样的模式(四) X模型解决交接和频繁集成周期的问题(五) H模型把测试当成一个完全独立的流程,便于尽早的完成测试,与其他流程并发进行,可以是任何流程(比如设计流程,并发流程,甚至是测试流程),可交叉。四、软件测试模式——敏捷测试(一)敏捷测试定义:AgileTesting遵循敏捷宣言的一种测试实践敏捷宣言:个体与交互重于过程和工具可用的软件重于完备的文档客户协作重于合同谈判响应变化重于遵循计划敏捷测试:强调从客户角度测试重点关注迭代测试新功能,不在强调测试阶段尽早测试,不间断测试,具备条件即测试强调持续反馈预防缺陷重于发现缺陷敏捷测试vs传统测试:传统测试敏捷测试测试是质量的最后保护者开发和测试人员紧密合作,大家都有责任对软件负责严格的变更管理变更可以接受预先的计划和细节准备计划随着进展时常调整重量级文档只需要必要的文档各阶段测试严格的入口和出口标准各迭代之间没有明显入口和出口标准更多在回归测试时进行重量级自动化测试所有阶段都要自动测试,每个人都需要做,是项目集成一部分严格依赖测试流程流程不再需要严格执行测试与开发团队相对独立团队合作是无缝隙合作(二) 基于脚本的测试SBT基于脚本的测试Script(测试用例)-basedtestingScripted(测试脚本)testingST先设计测试,再执行测试。(三) 探索式测试ETET探索式测试:exploratorytesting完全抛开测试脚本的测试探索式测试分为局部探索式测试和全局探索测试局部探索式测试五大模块输入:接受输入、产生输出、存储数据、进行运算(主要是这四种任务)测试时是从输入顺序,输出内容输出异常几个角度来考虑测试的要点状态:可分为临时状态和永久状态运行有效、阶段是有效,这种是临时状态、数据库保存、文件保存,相对来说是永久状态。协助我们更叫有效的判断测试输入测试输出代码路径:多指代对码的覆盖 (例如白盒测试覆盖的方法)用户数据:构造真实的用户数据执行环境:软件运行的操作系统系统组网的网络拓扑与系统交互的第三方系统系统的配置数据运行系统的硬件设备对测试的影响(局部测试所要考虑的要点)全局探索式测试(漫游测试法)商业区:软件从启动到关闭,这期间主要可能使用到的功能;旅馆区:主要指软件在休息运行的功能(后台的进程,或者是定时的任务);历史区:以前测试中发现较多问题的功能;旅游区:新手使用的功能(新手指引);娱乐区:系统主要功能之外的辅助功能破旧区:系统已经废弃的或者看不到的探索式测试流程了解测试任务的重点、主要的测试方向,系统的环境,做到有个总体的思路了解系统的业务逻辑,具体功能,深入学习被测系统探索式测试的实施阶段,完成主要功能点的测试验收,覆盖测试在上一步的基础上,发散式探索式测试,挖掘一些深层次的问题对前面的测试工作的总结,整理过程的测试信息缺陷大扫除优缺点:探索式测试的优点探索式测试的缺点1•更能激发测试人员的创造性和工作乐趣1•测试管理上有局限性,较难协调和控制2•增加了发现新的或较深入Bug的可能性2•对于Bug的重现伤作用有限3•在较短的时间内找到更多Bug以及对SUI(被测系统)做一个快速的评估3•对测试人员的测试技能和业务只是深度依赖较大4•有利于更加有效的实施自动化4•只有在SUT已完全可用的前提下才更有作用5•更加适用于敏捷项目5.ET的生产率很难定义6•减少了再简单、繁复上用例的无为编写时间6.ET本身较难进行自动化ST【基于脚本的测试】和ET【探索性测试】互补实际项目实施情况:purescripted完全参照测试用例执行,测试用例十分详细vaguescripted写测试用例,对预期结果,执行步骤的描述简单fragmentarytestcases不再编写测试用例,只是写一些测试点charters详细的任务列表,写出测试对象,测试策略,可能风险,参考文档roles给测试人员一个角色,测试人员从角色出发测试产品freestyleET完全自由,无文档,不记录要点STvsETSTVsETETET(四) 基于风险的测试RBTRisk-baseTesting:—种基于对软件失效的风险评估并以此指导测试计划、设计、执行、结果评价的软件测试类型风险包括:质量风险、管理风险风险级别=风险可能性*风险严重度识别风险:可能性、复杂性、时间压力、高变更率、技能水平、地理分散度严重程度:使用频率、失效可视性、商业损失、组织负面影响和损害、社会损失和法律责任(五) 基于模型的测试MBT它的测试用例是从一个模型中导出所得,这个模型描述了被测系统的某些方面,通常是功能部分。模型:对需求功能建模第三课时:软件测试类型软件测试按测试类型:功能测试、性能测试、兼容性测试、部署测试、易用性测试、文档测试、本地化测试、安全测试、无障碍测试、可靠性测试一、功能测试根据产品特性、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。针对的问题:功能错误或遗漏、界面问题、性能错误、数据及访问错误、初始化及终止错误。功能测试工具:商用:QTP(web应用)、winrunner(桌面软件)、silkTest、Rationalrobot开源:selenium、Watir(基于ruby语言,针对web应用)、Sikuli(屏幕截图)二、性能测试性能测试分类负载测试:在测试过程中,逐步的增加负载,来观察系统的表现,最终确定出系统在正常的指标范围下的最大负载。压力测试:测试系统在极限情况下的压力情况,最终系统是什么样的压力环境下会导致失效,不能正常运行,确定出我们这个系统所能承受的最大极限。稳定性测试:一般是以稍大于正常业务量的负载进行持续的、长时间的测试,比如:24*5,连续5天的对这个系统进行24小时的施加压力,以确定系统在较长时间的运行情况下,我们这个系统地稳定性情况。性能指标并发用户数VU,同时访问系统的用户数量;每秒事务数TPS,每秒系统处理业务的数量;系统响应时间;设备性能,CPU等性能测试工具LoadRunner,Silkperformer,Jmeter(java开源的有效的测试工具),WebLoad,ApacheBench,LoadUI传门针对接口的性能测试)静态性能评估开发web应用时,基于一系列web应用性能优化的最佳实践对web应用的页面进行静态分析,并给出评估结果的性能分析方法评估的标准/工具(YSIow,PageSpeed)应用性能管理APM提供对系统的实时监控以实现性能管理,故障管理的解决方案三、安全测试安全测试:对软件产品进行测试以确保其符合产品安全需求和质量标准渗透测试:通过对软件系统的恶意攻击行为来评估系统安全性的一种测试区别:渗透测试:尝试去攻破软件的防御机制安全测试:建立全方位攻击防御机制OWasp:openwebapplicationsecurityproject开放的WED应用安全项目安全测试最关注:A.OWASPtoptenproject1.Injection注入脚本漏洞使用户访问到不该访问的数据的目的BrokenAuthenticationandSessionManagement失效的身份认证和会话管理会话劫持漏洞Cross—SiteScripting(XSS)跨站脚本4.InsecureDirectObjectReferences不安全的对象直接引用参数的保护5.SecurityMisconfiguration安全配置类错误6.SensitiveDataExposure敏感信息泄露信息传递没有对关键信息进行加密MissingFunctionLeveIAccessControI 功能级别访问控制缺失,比如访问网站可以访问到用户没有权限到达的地方Cross-SiteFunctionLeveIAccessControI(CSRF) 跨站请求伪造UsingComponentswithKnownVuInerabiIities 使用了已知有漏洞的组件UnvaIidatedRedirectsadnForwards 未被验证的重定向和转发(钓鱼网站)B・测试指南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年超净高纯试剂项目发展计划
- 2025年燃气掺混设备项目合作计划书
- 少年儿童文学奖作品征文
- 2025年牙科综合治疗机项目建议书
- 格林童话之灰姑娘的童话解读
- 办公IT设备采购说明及预算报告
- 小王子书中的成长读后感
- 3-tert-Butyl-4-methoxyphenol-Standard-生命科学试剂-MCE
- 教师年终总结动态
- 高中生职业规划讲座读后感
- 用电子表格和现金流量表计算投资项目财务指标FIRR-FNPV-Pt(新建项目)
- 9S管理知识考试题
- 2024年江西铜业集团有限公司招聘笔试参考题库含答案解析
- 于漪教育教学思想概要
- 早餐店员工管理制度
- 2022-2023学年北京市通州区部编版五年级下册期末考试语文试卷
- 人民医院泌尿外科临床技术操作规范2023版
- 构造复杂煤层开采课件
- 新高考2024届高三物理二轮复习策略讲座
- 设计基础全套教学课件
- 分条机作业指导书
评论
0/150
提交评论