一、背景介绍
1.1公司相关技术
- Git:是一款免费的开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,方便多人集成开发
- Maven:是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具,同时还提供了高级项目管理工具
- Jira:是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域
- Dubbo:是阿里巴巴公司一个开源的分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,内部系统间同步请求使用,可以和spring框架无缝集成
- Zookeeper:分布式环境下的协调工具。开源的分布式应用程序协调服务,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等
- MQ:消息队列,应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,无需专用连接来链接它们。分为rabbitMq、kafkaMq,分布式环境下的异步消息系统,解决系统相互依赖的耦合情况
- Redis:非关系型数据库的一种,可以当做缓存使用,减少应用系统对数据库的访问提高系统处理速度。开源,支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。支持主从同步
- Nginx:http协议的分布式协调系统。轻量级、高性能的HTTP和反向代理服务器及电子邮件(IMAP/POP3)代理服务器。占有内存少,并发能力强、负载均衡
- FastDFS:开源的轻量级分布式文件管理系统,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,主要解决大容量存储和负载均衡的问题
- Jenkins:项目自动发布工具,持续集成,开源
- IDEA:全称IntelliJ IDEA,Java语言开发的集成环境之一,业界公认最好的IDE之一
1.2两类接口测试
公司主要面对B端客户,对外提供的产品主要是接口,所以测试人员在测试过程中主要测试对象是接口。根据实际工作中所见,目前主要有两大类接口:
- 基于HTTP协议的接口,以对外提供给商户为主(会涉及到加密和解密)
- 基于RPC框架的Dubbo接口,以内部系统间调用为主
针对上述两类接口,本文总结了当前公司内部常用的一种测试方式:即搭建测试项目,通过代码来进行测试。好处有四:
- 针对HTTP协议接口,加解密方便,调用灵活,需要时只调用相关方法即可
- 快速增加Dubbo类接口测试脚本(目前市场上能够进行该类接口的测试工具需要一定的二次开发)
- 长期使用java代码测试,有利于提高QA人员技术思路、技术功底和技术视野
- 便于后期实现接口自动化测试
二、准备工作
2.1安装准备
搭建测试项目前需要安装一些软件:
集成开发环境IDEA(本文以IDEA为例,也可使用eclipse等其他IDE,实现方法类似)
Java开发包:JDK,安装并调试成功
配置项目管理工具:Maven,安装并配置好环境变量,调试成功
2.1技术准备
搭建过程中,用到如下知识:
- Java
- Spring
- Maven
- Dubbo
- Zookeeper
不要求完全掌握,但需要了解其作用和简单用法,可参照1.1章节介绍。具体细节请通过其他途径深入了解
三、具体搭建
3.1 基础搭建
3.1.1 新建项目
启动IDEA,选择Create New
Project
3.1.2 项目原型选择
左侧选择Maven
Project SDK:选择本机安装的java,如果如果Project SDK是None,则通过New本地安装Java的根目录,如笔者Java安装根目录为:D:\Program Files (x86)\Java
勾选:Create
from archetype,
选择原型:org.apache.maven.archetypes:maven-archetype-webapp,点击Next
说明:这里选择的是从原型创建一个Web动态项目
3.1.3 确定项目坐标
确定当前项目的maven坐标:GroupId和ArtifactId,确保GroupId+ArtifactId唯一
填写好之后,点击Next
3.1.4 Maven项目配置
Maven home directory:选择本机安装的Maven版本
User settings file:maven的配置文件,默认是本机个人当前用户.m2目录,如笔者默认目:C:\Users\BF100400\.m2\目录下,可更改为自己实际放置的目录,也可把setting.xml配置文件拷贝至默认目录
Local repository:本地存放jar包的仓库,该路径是读取User settings file配置文件中的<localRepository>配置,只要User settings
file选择正确,该项可不用管
建议增加键值配置参数archetypeCatalog=internal,如果不添加此参数,在maven生成骨架的时候将会非常慢,甚至直接卡主
具体意思:archetypeCatalog表示插件使用的archetype元数据,不加这个参数时默认为remote,local,即中央仓库archetype元数据,由于中央仓库的archetype太多了,所以导致很慢,指定internal来表示仅使用内部元数据
配置好之后点击Next
3.1.5 设置项目名称
设置Project name 和 Module
name,以及项目放置的位置location,名字见名知义即可。设置好之后,点击Finish
说明:如果创建的项目名称没有对应的目录,可能就会弹出如图所示提示框。不用理会,点击OK后会自动在本地创建对应目录。(也可在创建之前就在本地想要保存的目录下创建文件夹,和项目名称对应起来,这样就不会出现该提示)
3.1.6 Maven自动导入设置
首次创建项目,加载相对较慢,因为有很多相关文件和插件需要下载。无需着急,慢慢等待其下载完成。否则自动创建的项目没有src目录
项目加载完成后,点击下Enable
Auto-Import,这样后续maven的pom.xml有配置更改后会自动刷新
3.1.7 增加测试目录
因测试人员基本只写测试代码,所以无需配置tomcat服务器(如需可自行搜索方法)
在src目录下右键-->New-->Directory,增加test目录
设置test为测试根目录
3.1.8 配置pom.xml
Pom中在项目生成之初默认Junit配置,除此之外还需要加入一些常用依赖,主要包含:
Springframework,mybatis,mysql,c3p0,jdbcdslog,dubbo,logback,lombok,log4j,dfs-client,zkclient等
详细dependency可见附件maven中常用依赖包dependency.txt
3.1.9 配置文件新增
在src/resources目录下新增spring目录,新增application-context.xml配置文件
3.1.10 配置文件获取
配置项目启动需要加载的本地配置文件,配置文件中包含JDBC、zk等配置信息。该文件可以在对应应用的linux部署机器上找到,一般在/data目录下,不清楚的可以咨询开发同事
下载该文件至本地,然后在本地创建对应目录,要求必须和当前测试项目在相同磁盘下,文件名称则随意
3.1.11 配置web.xml
统一编码配置:UTF-8
配置监听器:ContextLoaderListener
指定加载项目配置文件路径和名称
详细可参考附件web.xml
3.1.12 Dubbo消费者配置
在src/spring/目录下创建dubbo-consumer.xml配置文件,并且在application-context.xml中加入导入dubbo-consumer.xml配置,如下图所示:
dubbo-consumer.xml配置详细可参考附件
3.1.13 logback.xml配置
日志配置,详细可参考附件logback.xml
3.1.14 配置bean目录
增加测试目录,配置自动注册bean目录
3.2 项目实战
3.1介绍了测试项目基本框架搭建,下面以ma-query中接口MaMemberManagerService的 Result<Boolean> insertMemberIndividual(MemberIndividualReqDTO
memberIndividualReqDTO)方法为例,说明具体的测试相关配置和方法
说明:下面是以dubbo类接口为例,读者可根据自己公司内部接口进行尝试。HTTP接口相对简单,可自行搜索研究,本文不做介绍,如有问题可联系笔者,联系微信:125270461
3.2.1 下载测试目标jar包
在pom.xml中增加ma-query项目依赖,maven会自动下载,确保下载成功
3.2.2 配置dubbo消费者
3.2.3 增加测试类
3.2.4 使用注解的方式加载配置文件
3.2.5创建测试方法并调用
3.2.6测试方法调试
执行测试方法,查看服务日志,能调通即OK
四、注意事项
4.1 Maven依赖配置
测试中碰到的maven依赖主要有两种:
4.1.1公共依赖
可在maven官方仓库中搜索,地址:http://mvnrepository.com/
如:需要spring-context,通过下图所示方法找到该依赖坐标后,拷贝至项目pom.xml中的<dependencies></dependencies>中即可
4.1.2测试依赖
如:ma-query项目对应接口的jar包或者相关联的jar包
① 开发接口文档中会包含依赖信息,如没有,可向对应开发咨询
② 获取对应依赖的坐标,一般去所在公司中央仓库中搜索
4.2配置文件加载
上文中使用注解方式注入bean,也可使用ApplicationContext,示例如下:
4.3配置文件加载优化
当同一个测试项目中需要添加多个测试应用时,可以抽象一个父类,在父类中加载配置文件,并且注入bean,其余测试类继承该父类,只负责具体的测试方法即可。具体如下:
原文地址:https://www.cnblogs.com/xiuxingzhe/p/9250737.html