一、自动化基础
“工欲善其事,必先利其器”。学习自动化测试之前需要熟悉至少一门开发语言。自动化测试是把手工执行测试的过程转换为机器执行测试的过程,用机器语言来模拟自然人的操作。自动化测试人员根据评审通过后的测试用例来编写和执行自动化脚本,最终产生测试报告,分析测试报告并根据测试报告评估被测系统的质量。自动化测试主要应用在以下场景:
1)冒烟测试:在新版本的软件上执行关键性的测试用例,保证新的程序代码不出故障。
2)回归测试:主要是验证新发布的功能或修复的bug有没有对现有的系统功能造成影响。
3)兼容性测试:主要是验证被测试系统在不同的硬件平台、不同的操作系统、不同的应用软件之间和不同的网络等环境中是否能够正常地运行。常规的兼容性测试有浏览器兼容性测试、操作系统兼容性测试、移动设备的兼容性。
1、自动化测试流程
1)可行性分析阶段:主要确定是否开展自动化测试。可从几下方面进行考虑:项目周期时间长(项目周期在3个月 以上)、页面对象容易识别、软件需求变更不频繁。
2)测试需求分析阶段:主要熟悉被测试系统的业务流程,分析测试需求,为后期的测试计划做准备(如获取系统开发技术文档,熟悉系统架构及开发使用的技术;根据已有的手工测试用例来了解系统业务的流程)。
3)制定测试计划阶段:此阶段主要工作如下:资源、测试范围、测试工具的选择、测试进度、交付物。
4)测试设计阶段:主要由自动化框架开发人员和自动化脚本开发人员共同完成。自动化框架开发人员需要设计自动化测试框架,在设计时,需要考虑脚本的复用性,已经秉承数据、业务和脚本相分离的宗旨,方便自动化脚本开发人员进行自动化测试脚本开发;自动化脚本开发人员需要把手工用例转为自动化测试用例,有时也要根据需求补充自动化用例,完成系统自动化用例的设计开发。
5)脚本开发联调阶段:尽量保持测试脚本满足可复用性、健壮性、稳定性、模块化、跨平台性。
6)运行阶段:部署了自动化测试脚本后,就可以开始自动化测试,并自动记录测试结果,然后根据测试结果进行分析。
7)提交阶段性测试结果:根据运行结果,编写测试报告,测试报告主要包含运行环境、覆盖用例数、失败用例数、成功用例数、执行时间和执行人员等指标。
8)持续维护阶段:每次版本变更后,都需要不断地维护响应的脚本。
2、自动化测试特定
覆盖率高、节省人力成本、保证基本功能的正确性、测试脚本和测试数据复用性、测试时间短、测试并行、无人值守。
3、自动化测试工具
Selenium 1.0、Selenium 2.0、QTP、Cucumber、EarlGrey
4、标记语言
标记语言是一种将文本及文本相关的信息结合起来,展现出关于文档结构和数据处理细节的编码,被广泛用于网页和网络应用程序。
1)HTML(Hyper-Text Markup Language)
超文本标记语言,是由一套标记符号和语法规则组成,用于表现数据。熟悉HTML是学习自动化测试的基础。
2)XML(Extensible Markup Language)
可扩展标记语言,被用来作为多种多种数据源间进行数据的交换或存储,广泛应用于互联网。XML文档定义的方式有:文档类型定义(DTD)和XML Schema。DTD定义了文档的整体结构和文档语法;XML Schema定义出现在XML文档里的元素和元素的个数、类型。XML文档类似树结构,从根节点开始,形成枝叶。XML元素大小写敏感。XML简化了网络中数据交换和表示,使得数据、代码和表示相分离,并作为网络数据交换的标准格式,它常被成为智能数据文档。
3)XPath
XPath是XML路径语言,用来查找XML文档中信息,包含了一个标准的函数库。XPath使用路径表达式来选取XML文档中的节点或节点集,节点是沿着路径来选取的。
4)XHTML(Extensible HyperText Markup Language)
XHTML是以XML应用的方式定义的HTML,是更纯净、有规则的HTML。
二、Web自动化测试
常见的Web自动化测试,主要使用浏览器运行被测系统,使用浏览器插件对元素定位,找到相应的元素。找到元素可使用Selenium IDE录制脚本,或使用Selenium的API编写测试脚本,然后对元素进行单击、下拉、输入等动作后,检查预期结果和实践结果是否一致(页面元素的定位可使用Firefox浏览器的Firebug和FirePath插件、Chrome浏览器提供的开发者工具、IE浏览器的开发者工具。Web页面元素定位不会因浏览器的不同而有所不同,因此可使用不同的浏览器来进行元素定位)。
三、接口自动化测试
在做接口测试前需要熟悉接口使用的协议,不同的协议其测试方法不同。大部分接口采用RESTful、Socket、Web Service等方式实现。
1、RESTful架构(Representational State Transfer)
一种比较流行的互联网软件架构,其主要包含如下几个方面:
1)资源:指表现层的资源,是一种信息实体,每种资源对应一个特定的URI(资源的位置)。
2)表现层:把“资源”以各种形式表现出来。
3)状态转换:RESTful采用HTTP协议(无状态协议),可使用GET、POST、PUT、DELETE让服务器端的状态发生变化。
2、Socket
用IP地址和端口实现不同计算机之间的通信,包括以下3个步骤:
1)服务器监听:监听客户端的请求,实时监控网络状况。
2)客户端请求:客户端套接字提出连接请求,需要描述服务端套接字的地址和端口号,然后向服务端套接字发送连接请求。
3)连接确认:当服务器端套接字监听到客户端套接字连接请求,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发送给客户端,一旦客户端确认了此描述,连接就建立好了。
3、Web Service
是一种面向服务(Web服务是软件系统)的技术架构,通过标准的Web协议提供方法,目的是保证不同平台数据的互操作性。它由大量的网络程序API组成,Web服务器为这些API提供一个外界机器可以识别的服务,执行客户提交服务的请求。
四、接口测试工具
接口测试无界面,需要开发一些测试工具来辅助测试。常见开源的接口测试工具有SoapUI、JMeter、FireFox的RestClient插件、Chrome的postman插件。在开始接口测试前,先了解被测系统的接口采用的协议,再选择合适的工具。
五、 Mock测试
软件的时限是充满依赖关系的,对于某些不容易构造或不容易获取的对象,创建一个虚拟的对象进行测试的方法称为Mock测试。在模拟对象中,要关注三个方面:设置测试数据、设定预期结果、实际返回预期结果。
六、TestNG框架(Test Next Generation)
TestNG是一个开源的测试框架,其灵感来自JUnit和NUnit,特点如下:
1)支持注解和XML,使编写测试脚本更加方便;
2)使用JAVA和面向对象的功能;
3)支持综合类测试;
4)支持数据驱动测试
5)支持依赖测试方法,并行测试,负载测试;
6)灵活的插件API;
7)支持多线程测试。