第6.1节 精准测试Agent简介
在精准测试平台中,采用的是微服务开发模型,但是会发现有很多情况需要处理文件和数据,同时也有对服务器有特殊要求的,如IOS精准测试相关操作,需要mac系统以及xcode开发环境。为了更好的处理数据,兼容各种平台的测试需求,我们把数据处理,报告生成与解析等相关操作开发成一个独立的服务。
6.1.1 Android Agent介绍
Android Agent为完成Android端覆盖率报告的生成,关联用例等功能的服务,本来可以做成微服务的形式,早期由于和iOS端放在了一起,而iOS相关功能无法布置到容器上,就直接使用django开发了一个服务,通过Http接口完成相应的操作。后来功能越来越强大,就将Android和iOS拆分出来,Android agent为Flask框架开发的服务,django无法部署到公司的容器上。
Flask的‘微’体现在它只提供Web服务的基本功能,其他的功能是由Flask的扩展实现,用户可以根据需求应用核心扩展。它的基本功能依赖于符合 WSGI 规范(Web Server Gateway Interface)的 Werkzeug 库和模板系统 Jinja2。 当我们通过URL访问网站时,是向Web服务器发送了请求。服务器会根据URL将请求交给相应的Web程序处理。所以服务器与Web应用程序的交互需要一定的规则。而Python专用的规范是WSGI [PEP-3333定义],文章 WSGI简介 给出了简单说明。
框架介绍:https://geekkeen.github.io/introduce-flask.html
6.1.2 iOS Agent介绍
iOS由于其系统的特殊性,很多操作需要在Mac电脑上完成,覆盖率报告生成与解析,调用链路生成等都需要使用Mac上的命令来处理,所以也就无法部署到容器上。于是将iOS Agent开发成单独的服务,由Django开发,对外提供http请求接口,部署到Mac机器上以响应精准测试平台的请求。
Django 网络应用程序通常将处理每个步骤的代码分组到单独的文件中:
Django 是一个高级的 Python 网络框架,可以快速开发安全和可维护的网站。由经验丰富的开发者构建,Django 负责处理网站开发中麻烦的部分,因此你可以专注于编写应用程序,而无需重新开发。 它是免费和开源的,有活跃繁荣的社区,丰富的文档,以及很多免费和付费的解决方案。
框架介绍:https://developer.mozilla.org/zh-CN/docs/Learn_web_development/Extensions/Server-side/Django/Introduction
6.1.3 技术选型
在做测试开发的过程中,其实会遇到很多选择技术桟的情况。
1,与公司主流技术一致
比如说,在公司A,他们主流的开发语言是java, 当然开发测试工具或是平台的时候,就选择java技术桟,可以方便的使用公司的基建,调用被测试的服务等;如果公司B中使用的是Python或是Go,就要切换到相应的技术桟。
2,从解决问题出发选择技术
无论是开发的平台或是工具,都是为了解决一类问题的,什么技术解决问题方便,就使用什么技术。比如开发平台,我使用的是java spring+vue, 处理报告的数据就采用的是python系列的服务,当然做覆盖率SDK的注入,又会使用Shell和ruby编写脚本。每个语言都有其特点,不可能解决所有的问题。
3,从自身出发
从你自身出发,如果你会的语言多,就按上面的两个来处理,如果你会的不多。就选择你精通的语言,这样投入产出比最高,也不会浪费太多的时间去学习新的技术,当然后期还是需要不断地提高自己的能力,争取从解决问题出发,选择最优的解决方案。