软件测试分类
软件测试分类
一、软件测试定义
软件测试(Software Testing):在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。
二、软件测试的对象
软件测试对象:程序,数据,文档
三、软件测试分类
按开发阶段分类
1、单元测试(Unit Testing)
又称为 模块测试 。对软件组成进行的测试,其目的是检验软件基本组成单位的正确性。测试对象是软件设计的最小单元: 模块 。【例如:登录模块】
2、集成测试(Integration Testing)
集成测试也称为联合测试(联调)、组装测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。其目的是检查软件单位之间的接口是否正确。【例如:淘宝订单支付时调用微信支付方式】
3、系统测试(SystemTesting)
将软件系统 看成一个系统 测试。包括对 功能、性能以及软件所运行的硬软件 环境进行测试。时间大部分在系统测试执行阶段,包括了回归测试和冒烟测试。
冒烟测试(Regression Tesing)
冒烟测试一般是开发人员开发完毕之后送给测试人员进行测试时,测试人员要先进行冒烟,用以保证基本功能是正确的,不会阻碍后续的测试。
回归测试(Regression Tesing)
回归测试指的是研发修改了旧的代码之后。重新进行测试以确认缺陷得到修复且修改没有引入新的错误或导致其他代码产生错误,自动回归测试将大幅降低系统测试、维护升级等阶段的成本。
4、验收测试
验收测试是部署软件之前的最后一个测试操作,它是技术测试室的最后一个阶段,也叫做 交付测试 ,验收测试的目的是保证软件的准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件的购买者展示该软件的原始的需求。
实施验收测试测策略有三种:
- 正式验收测试
- 非正式验收测试或 α测试
- β测试
按是否手工执行划分
1、手工测试(Manual Testing)
手工测试:是由人一个一个的输入测试用例,然后观察结果、和机器测试相对应,属于比较原始,大事需要一个一个步骤进行测试。问题的发现主要集中在手工测试阶段。
2、自动化测试(Automation Testing)
在预设条件下运行系统或应用程序,评估运行结果、预先条件应该包括正常的条件和异常条件。简单的说自动化测试是把人为驱动的测试行为转化为机器执行的一种过程。
自动化测试按照测试的对象来分:分为接口测试、UI测试等。
按是否查看代码
1、黑盒测试(Black-box-Testing)
黑盒测试也是功能测试,测试中把被测的软件当成一个黑盒子,不关心盒子的内部结构是什么,只关心软件的 输入数据 和 输出数据 。
2、白盒测试(White-box-Testing)
白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒指的是打开盒子,去研究里面的 源代码和程序结果 。
3、灰盒测试(White-box-Testing)
是介于白盒测试与黑盒测试之间的一种测试,主要用于集成测试阶段。不仅关注输入输出的正确性,同时也关注程序内部的情况。
按是否运行进行划分
1、静态测试(Static Testing)
静态测试指的是不运行程序本身,仅通过分析和检查源程序的语法、结构、过程、接口来检查程序的正确性。对需求规格说明书、软件设计说明书、流程图分析、符号执行来进行找错。
2、动态测试(Dynamic Testing)
动态测试指的就是运行被测的程序。检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性的等性能,这种方法主要是由三部分进行组成的:测试用例、执行程序、分析程序运行输出的结果。
按测试对象进行划分
1、功能测试(Functional Testing)
功能测试就是对产品的各项功能进行验证,根据功能测试用例逐项测试,检查产品功能是否达到用户要求。
2、非功能测试
(1)性能测试(Performance Testing)
检查系统是否满足需求规格说明书中规定的性能.
通常表现在以下的几个方面:
对资源的利用(如内存、处理机周期等)进行精确地度量。
对执行间隔、日志文件(如中断、报错)
响应时间
吞吐量(TPS)
辅助存储区(例如缓冲区、工作区的大小) 处理精度等进行检测
(2)安全测试(Safety Testing)
对系统进行安全测试。安全测试是一个相当于来说独立的领域,需更多的专业知识,例如Web的安全测试、需要熟悉各种网络协议,Tcp/Http,防火墙、CDN、熟悉各种操作系统的漏洞。 熟悉路由器等。从软件来说熟悉各种的攻击手段,例如sql注入、Xss等。
(3)兼容性测试(Compatibility Testing)
配置测试核实测试对象在不同的软件和硬件配置中的运行情况。在大多数生产环境中,客户机工作站、网络连接和数据库服务器的具体硬件规格会有所不同。客户机工作站可能会安装不同的软件例如,应用程序、驱动程序等而且在任何时候,都可能运行许多不同的软件组合,从而占用不同的资源。(如浏览器版本,操作系统版本等)
兼容性主要表现在以下方面:
- 浏览器兼容性
- 操作系统兼容性
- 硬件兼容性
(4)易用性测试(User Ability Testing)
易用性测试时交互的适应性、功能性、有效性的集中体现,又叫 用户体验测试 。
(5)界面测试(User Interface Testing)
界面测试也成为 UI测试 。测试功能模块界面的布局是否合理,整体风格是否一致、各个控件的放置位置是否符合客户的使用习惯,还要测试操作界面便捷性、导航简单易懂性、页面元素的可用性,页面元素的可用性、界面中文字是否正确,命名是否统一,页面是否美观、文字、图片组合是否完美。
(6)文档测试(Document Testing)
文档类型分为:
开发文档:可行性报告、需求规格说明书、概要设计文档、详细设计文档、数据库设计文档
用户文档:用户手册、操作手册
管理文档:项目计划
文档测试关注点:
文档术语
文档的正确性
文档的完整性
文档的一致性
文档的易用性
(7)安装测试(Installation Testing)
测试程序的 安装、卸载 ,典型的就是测试APP的测试的安装和卸载。
按实施的组织进行划分
1、α测试(Alpha Testing)
主要是由一个用户在开发环境进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。
主要的目的是:评价软件产品的FLURPS(即功能、局域化、可使用性、可靠性、性能和支持)。
2、β测试(Beta Testing)
由软件的最终的用户们在一个或者多个客户场所进行的测试。
3、第三方测试(Third-party Testing)
介于开发方和用户之间的组织测试。【例如:众测网】
4、α与β测试区别
- 测试的场所是不同的:α测试是把用户请到开发方的场所进行的测试,β测试值的是就是在一个用户或者多个用户场所所进行的测试。
- α测试的测试环境是由开发方进行控制的,用户的数量是相对比较少的,时间也是相对比较集中的。β测试的测试场所也不是由开发方进行控制的,相对来说用户的数量是相对比较多的,但是时间也不是很集中的。
- α测试是先与β测试的,通用的软件产品时需要大规模的β测试,猜测是的周期是相对是比较长的。