如何使用Python提高测试效率
1、选用Python的原因
Python是一种简单的、解释型的、交互式的、面向对象的编辑语言,适用于多种操作系统,没有平台差异。Python是解释运行的,大大节约了每次编译的时间,使用的语法简单,内置了多种高级数据结构,如字典、列表等。Python对各类文件的读写以及一些数据处理有非常好的效率,对于目前的测试工作来说,能够用来处理关于接口、数据提取、服务器数据等。
对于测试工作来说,Python更注重的是可读性、一致性和软件的质量,相对其他语言来说更具有可读性和可维护性。对于工作效率方面,Python相对于java、c等,Python的代码的大小更小,这意味着编写更少的代码,对于调试和维护的代码就更少,而且Python能够独立编译,这很大程度上提高了工作的效率。
2、Python能够做的事
Python作为一种编制组件、实现独立程序的工具,能够应用在各个领域,对于系统服务方面,Python内置各种接口,使得Python可以对系统文件进行遍历搜索、访问、读写等。本身内置的标准库中,绑定了操作系统处理的OS模块,以及环境变量,文件,套接字,管道,进程,多线程,正则表达式等。
在目前工作中,需要接触到服务器与设备之间的接口数据交互,针对接口测试的自动化工具也很多,例如Soup UI、Postman、robotframework,甚至jmeter这样的性能测试工具都可以进行接口测试。Python内置库的urllib能够处理一些HTTP请求的接口信息,urllib能够处理大部分http请求,如post和get等常用的。
Robot Framework是一款python编写的功能自动化测试框架,具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发。robotframework测试框架有很多的第三方库可以使用,采用的是填表的方式进行,较容易上手。
Python对于数据分析这一方面也起到了独特的作用,网络的数据抓取,服务器返回数据以及一些日志分析的处理,使用比较多的数据格式为csv、json、xml等,使用Python进行相应的格式转换,文件操作,Python在处理这一些数据格式时能够很方便的进行,而且能够对接大部分的编程语言,灵活地在语言之间转换。在数据库编程方面,Python语言对传统的数据库需求提供了对所有主流关系数据库系统的接口:像是SQL Server、Sybase 、ODBC 、MySQL 、SQLite 、Oracle等。在处理服务器接口返回数据时,能够对接到数据库进行相关数据的对比和查询,这在接口测试的工作中起到重要的作用。
3、工作中的运用
实际工作中使用Python进行服务器接口的测试,目前是用作接口的HTTP请求,通过Python脚本进行POST/GET请求,获取服务器响应,对服务器返回报文信息进行处理,对比数据与ap端返回的数据和实际数据是否正确,编写自动化接口测试脚本,设计相关框架,对接口做自动化测试。连接数据库,查询相应数据去对比ap端或接口请求到的数据是否正确。
使用Python处理android ap客户端运行日志,分析设备操作信息,初始化信息,数据更新信息,用来定位事件出错的原因,分析数据的正确性,对比ap与服务器的数据交互是否有误。使用脚本进行批量、自动下载设备原始数据,通过相关工具进行数据转换分析并定位问题。
4、接口测试框架的设计思路
服务端提供业务服务的能力,主要依靠接口。测试人员通过服务端接口功能测试来确保接口功能实现正确,为后续服务端的深层次测试打好基础。目前工作中所做的服务器接口测试主要是实现HTTP请求,对返回的响应信息做处理,提取信息或转换相关的原始数据,主要实现的方法是通过选用Python脚本来驱动测试,通过访问配置文件提取相应的数据,包括请求url地址,http请求传递的参数。对服务器返回的响应做处理,主要处理的方法有提取需要的数据并打印、处理数据格式保存到文档供使用(csv/txt/excel等)。整体的设计框架比较简单,具体的设计思路图如下:
1.png 2.png读取配置文件:
配置文件采用ini格式,在Python3中对ini文件的访问支持[header][url]格式,对于采用键值对的数据源来说起到很大的方便,并且能够添加相应的注释说明,给文档提供了更高的可读性。
发送请求:
接口请求采用Python内置的urllib模块对HTTP(POST、GET)请求进行访问,从配置文件中读取需要发送的参数。对使用比较频繁的接口做单独脚本的处理,实现界面实时输入相关参数进行传递。
访问接口:
根据接口文档,编写接口的URL及参数列表到配置文件中,根据需求选择需要访问的接口及参数。
数据处理:对服务器响应返回的结果进行处理,例如提取accessToken、userId、原始数据等。
该设计流程是针对服务器的接口请求,对框架的设计要求不是很高,只是完成基本的接口请求脚本的设计,模块化的部分并不多,采用的数据驱动方法是比较符合接口测试的类型。该脚本设计能完成一般的接口请求的测试。
5、总结
对于测试工作来说,Python的数据类型结构,各种API的封装,代码编译的简洁性和可读性,对框架的测试用例进行模块化、封装方法类型、使用数据驱动方法等,对后期脚本的维护,测试工作都带来方便,而且Python能够兼容目前流行的大部分编程语言,能够提供第三方插件进行调用相关的语言的方法和函数,脚本也能够实现跨平台的使用,兼容性很好。这些都能够提高测试工作的效率。