软件测试基础-概念篇

软件测试基础概念

  • 第1章 课程介绍
    • 1-1、软件测试概要
  • 第2章 软件测试阶段、手段、模式
    • 2-1、软件测试阶段
    • 2-2、软件测试手段
    • 2-3、软件测试模式
    • 2-4、软件测试模式—敏捷测试
  • 第3章 软件测试类型
    • 3-1、软件测试类型
    • 3-2、软件测试类型-性能测试
    • 3-3、软件测试类型-安全测试
    • 3-4、软件测试类型-兼容性测试
    • 3-5、软件测试类型-文档测试
  • 第4章 其他软件测试类型
    • 4-1、其他测试分类

第1章 课程介绍

1-1、软件测试概要

什么是软件测试?
早期定义:软件测试是对程序能够按预期运行建立起一种信心。——Bill Hetzel 1973
经典定义:测试是为发现错误而执行程序的过程。——Myers 1979
IEEE定义(ISO/IEC/IEEE 29119):使用人工或自动的手段来运行或测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异。
**软件测试对象:**软件需求、软件概要设计、软件详细设计、软件源代码、可运行程序、软件运行环境等。
五大要素和两个目标:
软件测试基础-概念篇_第1张图片
软件测试所遵循的原则:
一、测试显示缺陷的存在,但不能证明系统不存在缺陷。
二、穷尽测试是不可能的,应设定及时终止的条件。
三、测试应该尽早进行。
软件测试基础-概念篇_第2张图片
四、缺陷具备群集特性。
五、测试是杀虫剂悖论。不断更新测试方法和测试用例
六、测试的二八原则。把百分之八十的资源用在百分之二十的重点模块上
七、测试活动依赖于测试背景。

第2章 软件测试阶段、手段、模式

2-1、软件测试阶段

软件测试的分类
按测试阶段来分类:单元测试、集成测试、系统测试、验收测试
什么是单元测试?对软件中最小可测试单元进行检查和验证。
单元测试的原则:
1、尽可能保证各个测试用例是相互独立的。
2、一般由代码的开发人员来实施,用以检验所开发的代码功能符合自己的设计要求。
单元测试的益处:
1、能尽早发现缺陷
2、有利于重构
3、简化集成
4、文档
5、用于设计
单元测试的限制:
1、不可能覆盖所有的执行路径,所以不可能保证捕捉到所有路径的错误。
2、每一行代码,一般需要3~5行测试代码才能完成单元测试,所以存在投入和产出的一个平衡。
单元测试框架: Xunit、Junit、nunit、CPPunit、PHPunit
集成测试定义:是在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动。
集成测试的主要实施方案:
1、Big Bang 一次性集成,把大部分的开发模块耦合起来,形成一个完整的软件系统或系统的主要组成部分,并把它们拿来做集成测试。
2、自顶向下,递增的组装软件结构的方法,一般来说从主程序开始,沿控制层逐层向下来集成,然后逐层测试覆盖到所有模块。
3、自底向上,最常用,从程序模块的最底层的模块开始,逐层的向上组装并逐层的测试。优点:能够比较好的锁定软件故障的所在位置。
4、核心系统集成,先把核心软件部分挑选出来,并对这些部件进行集成测试,在测试通过的基础上,再逐步的扩展到外围的一些部件,直到最后形成稳定的软件产品。
5、高频集成,同步于软件开发过程,每隔一段时间开发团队对现有代码进行集成测试。
集成测试与单元测试区别:
1、测试的对象不同
2、测试的依据不同,单元测试:详细设计文档,集成测试:概要设计文档
3、测试方法不同
系统测试定义:是将经过集成测试的软件,作为计算机系统的一部分,与系统中其他部分结合起来,在实际运行环境下,对计算机系统进行的一系列严格有效地测试,以发现软件潜在的问题,保证系统的正常运行。
关注点:关注系统本身的使用;关注系统与其他相关系统间的连通;关注系统在不同使用压力下的表现;关注系统在真实使用环境下的表现。
系统测试与集成测试区别
测试对象不同:
集成测试:由通过了单元测试的各个模块所集成起来的构件;
系统测试:除了软件之外,还包括计算机硬件及相关的外围设备、数据采集和传输机构、支持软件、系统操作人员等整个系统。
测试时间不同:集成测试介于单元测试和系统测试之间的测试,系统测试在集成测试之后。
测试内容不同:集成测试测的是各个单元模块之间的接口,系统测试测的是整个系统的功能和性能。
测试角度不同:集成测试偏于技术角度的验证,系统测试偏于业务角度的验证。
验收测试定义:也称交付测试。针对用户需求、业务流程的正式的测试,确定系统是否满足验收标准,由用户、客户或其他授权机构决定是否接受系统。
细分:用户验收测试、运行验收测试、合同和规范验收测试、alpha测试(在开发者环境下的测试)、Beta测试(完全脱离开发者环境,在用户提供的场所或环境下进行的测试)

2-2、软件测试手段

按测试手段来分类
黑盒测试、白盒测试
静态测试、动态测试
手工测试、自动化测试
黑盒测试:在测试中,将被测试的软件或系统看成不能打开的盒子,在完全不考虑程序内部结构和内部特性的情况下,通过相关暴露出来的接口来对程序进行测试,它只检查程序的功能是否能够按照需求规格说明的规定正常使用,程序是否能正常的接收输入数据并产生正确的输出信息。黑盒测试着眼于程序的外部结构,不考虑内部的逻辑。一般针对软件外部的界面,比如可见的功能来进行测试。做黑盒测试更多的是从用户的视角,通过不同的数据和时间来驱动系统,并通过输出结果进行判断。
软件测试基础-概念篇_第3张图片
黑盒测试的优缺点:
优点:
1、容易实施,不需要关注内部的实现;
2、更贴近用户的使用角度。
缺点:
1、测试覆盖率较低,一般只能覆盖到代码量的不到40%;
2、针对黑盒的自动化测试,复用率较低,维护成本较高。
黑盒测试主要测试什么?
1、是否有不正确或遗漏的功能?
2、在接口上,输入是否能正确的接受?能否输出正确的结果?
3、是否有数据结构错误或外部信息(例如数据文件)访问错误?
4、性能上是否能够满足要求?
黑盒测试的主要设计方法:等价类划分法、边界值分析法、错误推测法、因果图法、正交试验分析法、状态迁移图法、流程分析法。
白盒测试,又称结构化测试、透明盒测试,测试人员对内部结构非常了解,白盒测试针对程序的逻辑结构来设计测试用例,用逻辑覆盖率来衡量测试的完整性。
主要逻辑单位:语句、条件、条件组合、分支、路径。
白盒测试优缺点:
优点:
1、迫使测试人员去仔细思考软件的实现,理解原理;
2、可以检测代码中每条分支和路径;
3、揭示隐藏在代码中的错误;
4、对代码的测试比较彻底。
缺点:
1、昂贵;
2、无法检测代码中遗漏的路径和数据敏感性错误;
3、不能直接验证需求的正确性。
白盒测试的主要测试方法:代码检测法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法。
灰盒测试:介于黑盒和白盒之间的,关注输出对于输入的正确性,同时也关注内部表现。
静态测试定义:指无须执行被测程序,而是通过评审软件文档或代码,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率。
软件测试基础-概念篇_第4张图片
动态测试定义:指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等。
手工测试:由专门的测试人员从用户视角来验证软件是否满足设计要求的行为。更适用针对深度的测试和强调主观判断的测试。 如:众包测试、探索式测试
自动化测试:使用单独的测试工具软件控制测试的自动化执行以及对预期和结果进行自动检查。 如:单元测试、接口测试、性能测试等
软件测试基础-概念篇_第5张图片

2-3、软件测试模式

按测试模式来分类:瀑布模型、敏捷测试、基于脚本的测试、基于风险的测试、探索式测试等。
软件测试基础-概念篇_第6张图片
软件测试基础-概念篇_第7张图片
软件测试基础-概念篇_第8张图片
软件测试基础-概念篇_第9张图片
软件测试基础-概念篇_第10张图片
软件测试基础-概念篇_第11张图片

2-4、软件测试模式—敏捷测试

Agile Testing–遵循敏捷宣言的一种测试实践。

个体与交互 重于 过程和工具
可用的软件 重于 完备的文档
客户协作 重于 合同谈判
响应变化 重于 遵循计划

敏捷测试特点:
强调从客户角度进行测试
重点关注迭代测试新功能,不在强调测试阶段
尽早测试,不间断测试,具备条件即测试
强调持续反馈
预防缺陷重于发现缺陷
敏捷测试vs传统测试:
软件测试基础-概念篇_第12张图片
软件测试基础-概念篇_第13张图片
基于脚本的测试-SBT,Script-based Testing
Scripted Testing(ST)
探索式测试,Exploratory Testing(ET),完全抛开测试脚本的测试。
软件测试基础-概念篇_第14张图片
ST vs ET:
软件测试基础-概念篇_第15张图片
探索式测试优点:
1、更能激发测试人员的创造性和工作乐趣;
2、增加了发现新的或较深入Bug的可能性;
3、在较短时间内找到更多Bug以及对SUT(被测系统)做一个快速的评估;
4、有利于更加有效地实施自动化;
5、更加适用于敏捷项目;
6、减少了在简单、繁复上用例的无谓编写时间。
探索式测试的缺点:
1、测试管理上有局限性,较难协调和控制;
2、对于Bug的重复利用和重现上作用有限;
3、对测试人员的测试技能和业务知识深度依赖较大;
4、只有在SUT已完全可用的前提下才更有作用;
5、ET的生产率很难定义;
6、ET本身较难进行自动化。
软件测试基础-概念篇_第16张图片
软件测试基础-概念篇_第17张图片
软件测试基础-概念篇_第18张图片
基于风险的测试-RBT,Risk-based Testing,一种基于对软件失效的风险评估并以此指导测试计划、设计、执行、结果评价的软件测试类型。
哪些是风险?质量风险、管理风险
风险级别=风险可能性×风险严重
软件测试基础-概念篇_第19张图片
软件测试基础-概念篇_第20张图片
基于模型的测试-MBT,Model-based Testing,它是一种测试类型,它的测试用例是从一个模型中完整或部分导出得到的,模型描述了被测系统的某些方面(通常是功能部分)。
软件测试基础-概念篇_第21张图片

第3章 软件测试类型

3-1、软件测试类型

按照测试类型来分类:
软件测试基础-概念篇_第22张图片
功能测试:根据产品特性、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。
针对的问题:功能错误或遗漏、界面问题、性能错误、数据及访问错误、初始化及终止错误
软件测试基础-概念篇_第23张图片

3-2、软件测试类型-性能测试

性能测试:验证软件系统的性能可以满足规格给定的指标要求。
性能测试 衍生出
负载测试(测试过程中逐步增加负载并且记录下被测系统相应的性能表现,最终确定出系统在正常指标范围下的最大负载);
压力测试(测试系统在极限情况下的压力情况,测试系统在什么样的负载压力下会失效不能正常运行,确定系统所能承受的最大极限);
稳定性测试(稍大于正常业务量的负载对系统进行持续的长时间的测试,以确定系统在较长运行时间的情况下的稳定性情况)。
性能指标:并发用户数VU、每秒事务数TPS、系统响应时间、设备性能
软件测试基础-概念篇_第24张图片
静态性能评估:开发Web应用时,基于一系列Web应用页面性能优化的最佳实践对Web应用的页面进行静态分析,并给出评估结果的性能分析方法。
YSlow、PageSpeed
应用性能管理(APM):Application performance Management,提供对系统的实时监控以实现性能管理、故障管理的解决方案。
听云 网站 www.tingyun.com

3-3、软件测试类型-安全测试

安全测试:对软件产品进行测试以确保其符合产品安全需求和质量标准。
渗透测试:通过模拟对软件系统的恶意攻击行为来评估系统安全性的一种测试。
软件测试基础-概念篇_第25张图片
OWASP:Open Web Application Security Project,开放的Web应用安全项目。
官网:www.owasp.org
重点关注:OWASP Top 10和Test Guide
软件测试基础-概念篇_第26张图片

3-4、软件测试类型-兼容性测试

兼容性测试:软件本身的兼容性、不同平台下的兼容性、软件对运行设备的兼容性、软件互操作性
软件测试基础-概念篇_第27张图片
软件测试基础-概念篇_第28张图片

3-5、软件测试类型-文档测试

文档测试:针对软件产品的交付品,配套的文档类部件的测试。如用户手册、使用说明、用户帮助文档等。
文档测试关注要点:完整性、正确性、一致性、易理解性、易浏览性。
可靠性测试:
软件可靠性:软件系统在规定时间内以及规定的环境条件下能够完成规定功能的能力;
硬件可靠性:硬件产品在设计应用过程中受气候环境以及机械环境的影响能否正常工作。内容主要包括:老化、温度湿度、气体腐蚀性、高压、防尘防水、包装压力等。
易用性测试:指测试用户使用软件时是否感觉方便,是否能保证用户使用体验是测试类型。
本地化测试:针对软件的本地化版本实施的针对性测试。
主要测试内容:语言、书写习惯、时区、日期格式、货币单位、当地风俗、法律法规、政治敏感内容。
部署测试:也成为安装测试,主要验证系统部署过程,并确保软件经过安装测试后可以正常使用。
主要测试内容:在不同环境下的部署验证;参照部署文档执行,过程的合理、正确性;基础数据。
无障碍测试:Accessibility Test,也称可访问性测试。是指软件需要提供便于特殊人群使用的功能,包括视障、听障、老年人、身体残疾用户等无障碍测试则是针对这部分功能的测试。

第4章 其他软件测试类型

4-1、其他测试分类

回归测试、冒烟测试、Monkey测试、AB测试
回归测试:软件功能修改后,对软件进行重新测试以确认修改没有引入新的错误或导致其它部分产生错误。(重点在关键模块)
回归测试的重心在关键模块和重点功能组件。
软件研发周期中会进行多次回归测试,且尽量实现自动化。
Monkey测试:也称搞怪测试。就是用一些随机、稀奇古怪的方式来操作软件,以测试系统的健壮性和稳定性。
冒烟测试:来自于硬件板卡验证术语。软件上则用于确认代码中的更改会按预期运行,且不会破坏整个版本的稳定性。(重点在全流程)
“每日构建”中用冒烟测试来确认合入的代码没有影响主要功能的正常。
A/B测试:多用于互联网行业,通过为页面提供2个版本给用户使用并记录相关的用户行为数据,来确定更优化设计的一种测试方案。
A/B测试实施要点:多个方案并行;每次测试仅改动一个变量;按照某种规则进行优胜劣汰。
软件测试基础-概念篇_第29张图片

你可能感兴趣的:(软件测试)