软件测试分类
-
根据
项目流程阶段
划分软件测试
(1)单元测试(或模块测试):对程序中的单个子程序或具有独立功能的代码进行测试的过程
(2)集成测试:集成测试是在单元测试的基础上,先通过单元模块组装成系统或子系统,再进行测试。重点是检查模块之间的接口
是否正确。
(3)系统测试:,验证系统是否满足需求规格的定义,以及软件系统的正确性和性能等是否满足其需求规格的要求。
(4)验收测试:验收测试的目的是确保软件准备就绪,向软件购买者展示该软件系统能够满足用户的需求 -
根据
软件测试工作中对软件代码的可见程度进行划分
(1)黑盒测试:只关心软件的输入数据和输出结果。着眼于程序外部结构,不考虑内部逻辑结构, 主要针对软件界面和软件功能进行测试
(2)白盒测试:研究源代码和程序执行结果。
它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条逻辑路径是否都能按预定要求正确工作。
(3)灰盒测试:介于黑盒测试与白盒测试之间。即关注输出对于输入的正确性,同时也关注内部表现。(但这种关注不像白盒测试那样详细、完整,它只是通过一些表征性的现象、事件、标志来判断内部的运行状态。有时候输出是正确的,但内部其实已经错误了,这种情况非常多) -
根据
软件的不同测试面
:
(1)功能测试:检查实际功能
是否符合用户的需求(可细分为很多种逻辑功能测试、界面测试、易用性测试、安装测试、兼容性测试等。
)
(2)性能测试:是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试
, 主要有时间性能
(主要是指软件的一个具体的响应时间)和空间性能
(主要指软件运行时所消耗的系统资源,例如硬件资源,CPU、内存,网络带宽消耗等。
)两种。 -
根据
软件测试工作的自动化程度
(1)手工测试
(2)自动化测试:把以人为驱动的测试行为转化为机器执行
的一种过程。
1)功能自动化测试: 主要检查实际功能是否符合用户的需求,主要以回归测试为主,涉及图形界面、数据库连接,以及其他比较稳定而不经常发生变化的元素。
2)性能自动化测试:依托自动化平台自动地执行性能测试、收集测试结果,并能分析测试结果的一种可以接近无人值守的性能测试。具有以下特性:
自动化测试与手工测试
- 自动化测试:利用工具或者脚本来达到软件测试的目的,没有人工或极少人工参与的软件测试活动称为自动化测试
- 自动化测试的优势:(1)更方便对系统进行回归测试。当软件的版本发布比较频繁时,自动化测试的效果更加明显。(2)可以自动处理原本烦琐、重复的任务,提高测试的准确性和测试人员的积极性。(3)自动化测试具有复用性和一致性,即测试脚本可以在不同的版本上重复运行,且可以保障测试内容的一致性。
- 什么项目适合做自动化测试:
1)任务测试明确,需求不会频繁变动。
2)每日构建后的测试验证。
3)比较频繁的回归测试。
4)软件系统界面稳定,变动少。
5)需要在多平台上运行的相同测试案例、组合遍历型的测试,大量的重复任务。
6)软件维护周期长,资源丰富。
7)项目进度压力不太大。
8)被测软件系统开发比较规范,能够保证系统的可测试性。
9)具备大量的自动化测试平台。
10)脚本重复利用率高。 自动化测试脚本变化的大小与频率决定了自动化测试的维护成本
。一种折中的做法就是先对系统中相对稳定的模块与功能进行自动化测试,而变动较大的部分用手工测试进行- 自动化测试脚本的重复使用要从三个方面来考量:一是所测试的项目之间是否存有很大的差异性(如C/S系统架构与B/S系统架构的差异);二是所选择的测试技术或工具是否适应这种差异;三是测试人员是否有能力设计开发出适应这种差异的自动化测试框架。
分层的自动化测试
-
Martin Fowler大师在测试金字塔模型的基础上提出分层自动化测试的概念。
-
单元测试更强调的是
程序的最小可测试单元
, 而模块测试更强调被测程序功能的完整性
单元测试框架,如Java语言的Junit、TestNG,C#语言的NUnit,以及Python语言的unittest、pytest -
Web应用的接口测试大体分为两类:
模块接口测试
和Web接口测试
(1)模块接口测试:主要测试模块之间的调用与返回。它主要强调对一个类方法或函数的调用,并对返回结果的验证,所用到的测试工具与单元测试相同。
(2)Web接口测试又可分为两类:服务器接口测试和外部接口测试。接口的分类
(1)系统与系统之间的接口(例如QQ的第三方登录)
(2)下层服务上层服务的接口
(3)系统内部,服务与服务之间的调用
UI自动化测试工具介绍
- UI层是用户使用该产品的入口,所有功能都通过这一层提供并展示给用户。(目前主流的测试工具有UFT(QTP)、Watir、Robot Framework、Selenium 等。)
- Robot Framework是一款基于
Python
语言编写的自动化测试框架,具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试。 - Sikuli 是由 MIT 的研究团队发布的新型图形化编程技术。它以
图像检索技术
为基础,提供了一套基于 Jython(python语言在java中的完整实现) 的脚本语言以及集成开发环境。使用者可利用屏幕截图直接引用 GUI 元素
进行编程,完成交互操作。(Sikuli 一词取自墨西哥 Huichol Indian 土著语,意为“上帝之眼”,正如其开发者所说—— Sikuli 让电脑能像人一样“看”这个“真实世界”。) - UFT:
企业级的自动测试工具
,提供了强大易用的录制回放功能,同时兼容对象识别模式与图像识别模式两种识别方式,支持B/S 与C/S 两种架构的软件测试,是目前主流的自动化测试工具。 - Selenium也是一个用于
Web应用程序测试
的工具,支持多平台、多浏览器、多语言
去实现自动化测试。目前在Web自动化领域应用越来越广泛。 - 为什么选择Selenium(Webdriver)
(1)开源免费
(2)使用灵活、简单
(3)后期用例易于维护
(4)支持多种语言
(5)容易与单元测试框架结合
(6)可支持多浏览器同时,支持远程启动其他服务器
(7)高度复用性
(8)代码可自主掌控,对于搭建框架、平台等有不可替代的优势
Selenium介绍
-
四大组件:
(1)Selenium集成开发环境(IDE)
(实现为Firefox扩展,在测试脚本上提供记录和回放功能。 它允许测试人员以HTML,Java,Ruby,RSpec,Python, C# ,JUnit和TestNG等多种语言导出录制的脚本。 可以在Selenium RC或Webdriver中使用这些导出的脚本。)
Selenium远程控制器(现已弃用)
(2)webdriver
(提供了一个编程接口来创建和执行测试用例。 编写测试脚本是为了识别网页上的Web元素,然后对这些元素执行所需的操作。) 【是按照client- server的经典设计模式设计的】
WebDriver是基于JSON Wire Protocol的,它是在HTTP协议的基础上,对HTTP请求及响应信息的BODY部分的数据进一步规范。(3)
Selenium Grid
:它允许在不同的机器上并行运行不同浏览器的测试。 简单来说,可以在运行不同浏览器和操作系统的不同机器上同时运行测试。 -
elenium自动化测试需要三部分。
(1)测试代码
: 自动化测试代码发送Http请求
给浏览器的驱动
(2)浏览器驱动
:解析
这些自动化测试的代码,解析后把它们发送给浏览器
(3)浏览器
:执行
浏览器驱动发来的指令,并最终完成工程师想要的操作 -
Selenium 工作流程
(1) 自动化程序调用Selenium 客户端库函数(比如点击按钮元素)
(2) 客户端库会发送Selenium 命令 给浏览器的驱动程序
(3) 浏览器驱动程序接收到命令后 ,驱动浏览器去执行命令
(4) 浏览器执行命令
(5) 浏览器驱动程序获取命令执行的结果,返回给我们自动化程序
(6)自动化程序对返回结果进行处理
自己查询Selenium环境配置步骤的相关文档吧,我就不再赘述了。