一、背景介绍

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端客户,对外提供的产品主要是接口,所以测试人员在测试过程中主要测试对象是接口。根据实际工作中所见,目前主要有两大类接口:

  1. 基于HTTP协议的接口,以对外提供给商户为主(会涉及到加密和解密)
  2. 基于RPC框架的Dubbo接口,以内部系统间调用为主

针对上述两类接口,本文总结了当前公司内部常用的一种测试方式:即搭建测试项目,通过代码来进行测试。好处有四:

  • 针对HTTP协议接口,加解密方便,调用灵活,需要时只调用相关方法即可
  • 快速增加Dubbo类接口测试脚本(目前市场上能够进行该类接口的测试工具需要一定的二次开发)
  • 长期使用java代码测试,有利于提高QA人员技术思路、技术功底和技术视野
  • 便于后期实现接口自动化测试

二、准备工作

2.1安装准备

搭建测试项目前需要安装一些软件:

集成开发环境IDEA(本文以IDEA为例,也可使用eclipse等其他IDE,实现方法类似)

Java开发包:JDK,安装并调试成功

配置项目管理工具:Maven,安装并配置好环境变量,调试成功。配置文件参考https://www.cnblogs.com/xiuxingzhe/p/9250838.html

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可见https://www.cnblogs.com/xiuxingzhe/p/9250786.html

3.1.9 配置文件新增

在src/resources目录下新增spring目录,新增application-context.xml配置文件

3.1.10 配置文件获取

配置项目启动需要加载的本地配置文件,配置文件中包含JDBC、zk等配置信息。该文件可以在对应应用的linux部署机器上找到,一般在/data目录下,不清楚的可以咨询开发同事

下载该文件至本地,然后在本地创建对应目录,要求必须和当前测试项目在相同磁盘下,文件名称则随意

详细配置可参考https://www.cnblogs.com/xiuxingzhe/p/9250825.html

3.1.11 配置web.xml

统一编码配置:UTF-8

配置监听器:ContextLoaderListener

指定加载项目配置文件路径和名称

详细配置可参考https://www.cnblogs.com/xiuxingzhe/p/9250808.html

3.1.12 Dubbo消费者配置

在src/spring/目录下创建dubbo-consumer.xml配置文件,并且在application-context.xml中加入导入dubbo-consumer.xml配置,如下图所示:

dubbo-consumer.xml配置详细可参考https://www.cnblogs.com/xiuxingzhe/p/9250829.html

3.1.13 logback.xml配置

logback.xml日志配置,详细可参考https://www.cnblogs.com/xiuxingzhe/p/9250832.html

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,其余测试类继承该父类,只负责具体的测试方法即可。具体如下:

02.基于IDEA+Spring+Maven搭建测试项目--详细过程的更多相关文章

  1. 01.基于IDEA+Spring+Maven搭建测试项目--综述

    目前公司的测试工作中常见两种接口:HTTP和Dubbo,这两种接口类型均可以使用相关测试工具进行测试,但都会有一定的局限性和不便之处,具体如下: 1.HTTP接口,当需要对于参数进行加密解密时,就得对 ...

  2. 08.基于IDEA+Spring+Maven搭建测试项目--Maven的配置文件settings.xml

    <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://mav ...

  3. 07.基于IDEA+Spring+Maven搭建测试项目--logback.xml配置

    <?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 控制台日志 ...

  4. 05.基于IDEA+Spring+Maven搭建测试项目--web.xml配置

    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" " ...

  5. 03.基于IDEA+Spring+Maven搭建测试项目--常用dependency

    <!--常用的依赖配置--> <!--未展示完整的pom.xml文件内容--> <properties> <java.version>1.8</j ...

  6. 06.基于IDEA+Spring+Maven搭建测试项目--dubbo-consumer.xml配置

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  7. 04.基于IDEA+Spring+Maven搭建测试项目--application-context.xml配置

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  8. 利用vue-cli3快速搭建vue项目详细过程

    一.介绍 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统.有三个组件: CLI:@vue/cli 全局安装的 npm 包,提供了终端里的vue命令(如:vue create .vue ...

  9. Maven 搭建 SSM 项目 (oracle)

    简单谈一下maven搭建 ssm 项目 (使用数据库oracle,比 mysql 难,所以这里谈一下) 在创建maven 的web项目时,常常会缺了main/java , main/test 两个文件 ...

随机推荐

  1. Spring学习(十五)----- Spring AOP通知实例 – Advice

    Spring AOP(面向方面编程)框架,用于在模块化方面的横切关注点.简单得说,它只是一个拦截器拦截一些过程,例如,当一个方法执行,Spring AOP 可以劫持一个执行的方法,在方法执行之前或之后 ...

  2. linux分区满了,如何进行扩容

    转自:https://blog.csdn.net/valage/article/details/73332147 图片中可以看到挂载点“/”的利用率移到100%,空间不够,所以要对其进行分区. 1.  ...

  3. Python+Selenium UI自动化测试环境搭建及使用

    一什么是Selenium ? Selenium 是一个浏览器自动化测试框架,它主要用于web应用程序的自动化测试,其主要特点如下:开源.免费:多平台.浏览器.多语言支持:对web页面有良好的支持:AP ...

  4. Bailian 2808 校门外的树(入门线段树)

    题目链接:http://bailian.openjudge.cn/practice/2808?lang=en_US 总时间限制: 1000ms 内存限制: 65536kB 描述 某校大门外长度为L的马 ...

  5. WPF阴影效果(DropShadowEffect)(转载)

    <TextBlock Text="阴影效果" FontSize="32"> <TextBlock.Effect> <DropSha ...

  6. 洛谷P1585 魔法阵

    题目传送门 这题就是一个有技巧的DFS+一大堆乱七八糟的剪枝 进行DFS时注意一下以下点 根据题意,我们可以把DFS分成两块,即1--n*m/2与n*m/2--n*m,第一块边找边记录,第二块就开始计 ...

  7. 解决网速慢时maven仓库访问慢

    构建maven项目时会下载很多依赖,会从官网地址下载是个外国网站,访问速度会很慢,但可以通过修改maven的settings.xml文件换成国内的镜像地址就可以加快访问速度: 一.找到settings ...

  8. First Day!

    刚申请博客第一天,多多关照! 小弟,给各位大佬递茶! 出现什么错误, 还请明确指出! 现在, 正在找工作, 如果有老哥, 公司缺人, 何不让老弟我去试试! 不入前端, 不知水深. 一入前端, 如入泥潭 ...

  9. Python 利用 BeautifulSoup 爬取网站获取新闻流

    0. 引言 介绍下 Python 用 Beautiful Soup 周期性爬取 xxx 网站获取新闻流: 图 1 项目介绍 1. 开发环境 Python: 3.6.3 BeautifulSoup:   ...

  10. Python序列之元组 (tuple)

    作者博文地址:http://www.cnblogs.com/spiritman/ Python的元组与列表类似,同样可通过索引访问,支持异构,任意嵌套.不同之处在于元组的元素不能修改.元组使用小括号, ...