zoukankan      html  css  js  c++  java
  • Jmeter+Maven+Jenkins+Git接口自动化流程

       最近在实现 Jmeter+Maven+Jenkins+Git 接口自动化,研究不到两周,实现了 Jmeter+Maven+Jenkins+Git  接口自动化 的整体流程。 仅以此博客简单记录下自己实现的过程。

    一. 职责、角色明确

      Jmeter: 执行者,录制接口测试脚本,运行脚本,得到结果,生成报告,统计数据;

      Maven,Git :管理者, Maven 主要负责项目的依赖管理,Git 主要负责项目的代码管理;

      Jenkins:调度者,持续集成(CI)工具;构建、部署自动化;可以持续编译,运行代码;运行UT或集成测试;将运行结果发送至邮件,或展示成报告。

    二. 接口自动化意义

      基本上来说,有这么几点好处:提供测试效率;  完成手工测试复杂,但对自动化测试很简单的事 ;  反复执行; 提高维持测试覆盖度;日常巡检;

    三. 环境准备

          想要全部实现,首先需要确保环境是ok的。jdk,jmeter,maven,git,jenkins 都需要是ok的。

    3.1. java环境:java包安装,配置环境变量

    cmd中 输入 java -version,显示java版本即安装成功

    Java下载地址连接:https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html

    3.2  Jmeter安装

      Jmeter下载:http://jmeter.apache.org/download_jmeter.cgi

      jmeter下载压缩包后,解压,配置环境变量。

      即可使用 验证cmd,输入jmeter -v,显示jmeter版本,jmeter可正常使用。

    3.3 Maven

      maven 下载链接:http://maven.apache.org/download.cgi

      选择 二进制zip存档链接,下载解压,安装;

      配置环境变量,MAVEN_HOME;将%MAVEN_HOME%in添加到Path变量下

      验证:cmd中输入 mvn -v

    maven运行,需要安装maven IDE插件--eclipse:下载安装链接: https://www.runoob.com/eclipse/eclipse-install.html,安装neon版本。 (具体安装,不再详述)

    3.4 git 

      git 下载: http://git-scm.com/downloads

      git安装完成后,在菜单git-git bash,点击,显示一个类似命令行窗口的东西,说明git安装成功。

    其中git 安装完毕后,需要进行ssh连接,才能使用。 稍微,git的ssh 认证单独写一篇。

    3.5 Jenkins, 如果公司有运维,一般是运维在服务器上安装Jenkins,然后给相关人员 公司jenkins地址链接,同时每个人的用户名与密码。 

    当然,没有运维,自己电脑上也可以安装本地jenkins,进行自动化的构建。

    下面进入本篇的正题:接口自动化 整体流程。。  自动化流程 -----key

    一、使用jmeter 进行接口脚本准备,脚本运行通过,保存脚本jmx,导出。

    二、使用eclipse 创建Maven项目 eclipse打开--file---New--other,

    Select a wizard,选择Maven--Maven project,点击next。

    界面进入New Maven Project,选择 第二个:User default Workspace location:使用本地默认的工作空间

     默认使用第2 个,点击next。界面进入New Maven project,Catalog,Filter 选择 Artifact Id: maven-archetype-webapp,版本1.0,点击next、

    其中Group Id:组Id,针对一个项目的普遍唯一识别符。是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构,相当于我们日常使用的包名,例如:org.hhh,最好是填写公司或者组织名称 com.company Artifact Id:要新建的项目的名字,项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称 Version:版本号,默认0.0.1-SNAPSHOT。 package:输入group、artifact,会自动生成package,目录+名字=完整路径。输入group,artifact,点击next,生成maven项目 注意:group id+artifact id+version必须是一个唯一的名字,不要和任何别的jar包全名一模一样,否则会引发冲突。

     使用eclipse,创建maven项目、成功。

    使用eclipse 创建maven项目,只会自动生成src/main/resources 和target/classes, target/test-classes,需要自己手动添加其他目录,并且指定项目的source以及编译后的输出目录。 使用eclipse运行接口测试脚本,选择project 右击----run as ------maven build,然后再弹出的对话框Goals 写上verify,--run。运行后会有测试结果文件,显示BUILD SUCCESS,即为运行成功。

    二)、Maven项目约定

    Maven中使用项目约定,它约定Java源代码放在哪个目录,约定编译的class文件放在哪个目录,约定资源或配置文件放在哪个目录,每一种文件的存放目录都有着明确的约定,下面是Maven的项目约定结构图:

    MavenProject(项目根目录)    

    |----src —— 源代码目录    |     

      |----main        ----  开发使用

        |----java —— 存放项目的.java文件     

        |----resources —— 存放项目资源文件,如spring、hibernate配置文件    |      |       

        |----webapp ---如果是web项目则需要该目录,存放WEB-INF目录、web.xml、jsp、html、js等文件    | 

      |----test -----测试 主用         

        |----java —— 存放所有测试.java文件,如JUnit测试类  

        |----resources —— 存放项目测试用的资源文件,如spring, hibernate配置文件  

    |----target —— 项目输出目录,存放经过编译的class文件和打包部署的jar包等    

    |----pom.xml —— 定义项目的对象模型,同时标识该项目是一个Maven项目

    三)、本地构建Maven项目

    1.在src下手动新建test目录,src/test目录下新建jmeter文件夹,把准备好的jmeter接口测试的jmx脚本复制到这个文件夹下

    2.在src/test目录下创建resources文件夹,并把测试模板(E:apache-jmeter-5.1apache-jmeter-5.1extras的如下文件)复制到这个resources文件下

    文件1:jmeter-results-detail-report_21.xsl 

    文件2:jmeter-results-report_21.xsl

    3.将下面五个文件从jmeter/bin目录复制到 src/test/jmeter文件夹

    文件1 :jmeter.properties

    文件2:saveservice.properties

    文件3:system.properties

    文件4:upgrade.properties

    文件5:user.properties

    四)、关键点:pom.xml 配置文件 -------构建 Maven项目中最重要的一个文件

    pom 配置文件,maven项目生成时 ,pom文件中是有一部分内容的。 我们主要是在pom 文件中增加各种插件

    4.1 测试报告---html地址配置。properties 增加在dependencies依赖之前

    <properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <jmeter.result.jtl.dir>${project.build.directory}/jmeter/results</jmeter.result.jtl.dir >

    <jmeter.result.html.dir>${project.build.directory}/jmeter/html</jmeter.result.html.dir > <jmeter.result.html.dir1>${project.build.directory}/jmeter/html1</jmeter.result.html.dir1>

    <ReportName>TestReport</ReportName>

    </properties>

    其中需要注意,多个报告时, html 与 html1, dir 与dir1。 如果设置一样,生成报告 可能会存在 报告一致的情况。

    其他插件增加在 dependencies依赖 build finalName 后

    测试报告configuration中的 transformationSets配置

    <dir>${jmeter.result.jtl.dir}</dir>

    <stylesheet>src/test/resources/jmeter-results-detail-report_21.xsl</stylesheet>

    <outputDir>${jmeter.result.html.dir}</outputDir>

    <fileMappers>

    <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper"> <targetExtension>html</targetExtension> </fileMapper> </fileMappers>

    核心插件jmeter -maven-plugin     --------核心插件

    <plugin>

    <groupId>com.lazerycode.jmeter</groupId>

    <artifactId>jmeter-maven-plugin</artifactId>

    <version>2.4.1</version>

    <configuration>

    <resultsFileFormat>xml</resultsFileFormat>

    <ignoreResultFailures>true</ignoreResultFailures>

    <ignoreResultErrors>false</ignoreResultErrors>

    <testResultsTimestamp>false</testResultsTimestamp>

    <resultsDirectory>${jmeter.result.jtl.dir}</resultsDirectory>

    </configuration>

    <executions>

    <execution> <id>jmeter-tests</id>

    <phase>verify</phase>

    </plugin>

    <goals>

    <goal>jmeter</goal>

    </goals>

    </execution>

    </executions>

    此核心插件:用来执行jmx脚本,版本号特别注意。 上一页与本页是 该核心插件。其中配置解释 resultsFileFormat:设置jmeter生成结果文件格式; ignoreResultFailures:设置忽略失败是否停止运行; ignoreResultErrors:设置忽略错误是否停止运行 testResultsTimestamp:设置结果是否有时间戳 resultsDirectory: 指定jtl 生成目录。

    脚本所在文件夹

    <executions>

    <execution>

    <id>jmeter-tests</id>

    <phase>verify</phase>

    <goals>

    <goal>jmeter</goal>

    </goals>

    </execution>

    </executions>

    插件 xml-maven-plugin, 配置文件中: (该插件:根据xsl模板把jtl文件转换成html) ​

    <groupId>org.codehaus.mojo</groupId>

    <artifactId>xml-maven-plugin</artifactId>

    <version>1.0.2</version>

    <executions>

    <execution>

    <phase>verify</phase>

    <goals>

    <goal>transform</goal>

    </goals>

    </execution>

    </executions>

    <configuration>

    xml 插件的configuration 中配置两个报告 transformationSet ,每个报告中包括dir,stylesheet,outputDir,报告配置如下

    <transformationSet>

    <dir>${jmeter.result.jtl.dir}</dir>

    <stylesheet>src/test/resources/jmeter-results-detail-report_21.xsl</stylesheet>

    <outputDir>${jmeter.result.html.dir}</outputDir>

    <fileMappers>

    <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">

    <targetExtension>html</targetExtension> </fileMapper>

    </fileMappers>

    </transformationSet>

    注意:多个报告时,报告的stylesheet、outputDir 必须不能一致。stylesteet 是指定的报告样式,可以自己网上下载样式,放置jmeter 相关文件中,这里写上;也可以使用jmeter 包中现有的 报告样式; 另外,jmeter的配置文件,其实可以进行修改 代码,来获得自己想要的报告样式;

    最后一个插件,XSLT插件  (忘记这个插件是什么作用了)

    <dependency>

    <groupId>net.sf.saxon</groupId>

    <artifactId>saxon</artifactId>

    <version>8.7</version>

    </dependency>

    基本以上,是所有的pom 中需要配置的插件。 代码需要自己输入,粘贴会出现 缩进等问题

    五)、eclipse运行接口测试脚本

    运行接口测试脚本

    选择project 右击----run as ------maven build,然后再弹出的对话框Goals 写上verify,--run。

    运行后会有测试结果文件。运行,console中等待运行完毕,显示build success,即运行成功。

    脚本构建成功,在target中生成报告,target中 jmeter/html 中是生成的报告。

    如果有多维度报告,jmeter会存在多个html。

    注意问题:如果需要生成多个报告,pom.xml文件中html的transformationSet 中,stylesheet 配置两个报告模板,生成html报表文件路径outputDir 不能重复,一个dir,一个dir1 到此,jmeter + maven项目,本地已经构建成功。可成功生成报告。

     

     三、Jenkins   本地下载安装

    https://jenkins.io/download/ 官网下载安装;

    坑一:jenkins中新建项目 没有一个 “创建一个Maven项目”的选项

    解决:需要安装Maven 项目插件:Maven Integration.

    系统管理---管理插件--可选插件,搜索框中输入插件名Maven Integration,搜索到,点击安装,安装完毕重启,重启ok。

    jenkins 构建maven本地项目

    Maven项目本地调试通过,在cmd中切换到maven 项目 的pom.xml 所在路径, 执行mvn clean install ,显示BUILD SUCCESS----执行成功

    jenkins中 Manage Jenkins, Glogal Tool Configuration, 配置jdk,

    其中,install automatically ,如果想使用本地jdk,可以不勾选。

    写上本地jdk 版本号,jdk 本地安装路径 maven 使用本地maven的话,同样不勾选,install automatically ,写上本地maven 版本号,本地maven 安装路径。

    配置完成,点击应用。 (本地jenkins,JDK,maven需要自己配置。 公司服务器,jenkins 基础服务运维负责)

     Jenkins 本地构建

    jenkins新建项目----maven项目,构建Maven项目,

    General:输入简单的描述               源码管理:None   

    Pre Steps:Execute Windows batch command

    命令:  (cmd 命令窗口框中的命令一致,即可。)

    cd C:MavenMavenProject estOne    

    mvn clean install

    Build

    Root POM: C:MavenMavenProject estOnepom.xml

    点击:应用。

    即可 应用,构建的时候,起作用。

    点击构建,点击build 下的本次构建的进度条,--console output,查看日志,日志最后Finish success,即构建成功。 构建失败,同样可以在日志中查看错误。

    二)、Jenkins Html测试报告

    系统管理---- 插件管理-- 可选插件,下载HTML Publisher。 (本地jenkins需要,公司jenkins,运维)

    构建项目,构建后操作-----Publish HTML reports 构建后操作-----Publish HTML reports,

    HTML directory to archive: targetjmeterhtml (jenkins本地项目可使用路径,一般连接公司jenkins时,默认所在位置:当前项目目录,所以直接输入当前目录后路径即可)

    index page:index.html

    Report title: 测试报告

    三)Jenkins 邮件通知

    Email Extension Plugin 插件

    系统管理---系统设置,在系统设置中找到Jenkins Locaction 填好JenkinsURL 跟系统管理员的邮件地址,注意必填。

    邮件通知--点击高级配置 QQ邮箱smtp服务器地址:**smtp.qq.com** (qq邮箱要登陆邮箱→设置→账户 开启SMTP服务) 使用SMTP认证,勾选。

    jenkins 邮件通知输入,

    用户名:输入自己的QQ

    密码:Q邮箱的话,是你开启smtp服务后他会给你密码的,而不是你的QQ邮箱密码了。

    端口号:465 勾选通发送测试邮件测试配置 ,Test configuration 点击,测试是否配置成功。 如果email 显示成功,则测试 邮件发送成功。

    注意:邮件端口号:一定 465,其他,邮件通知发送不成功。

    四、 Jmeter + Maven + Jenkins + Git

    本地代码放置git上,代码同步;

    源码管理,选择Git,输入git 上该项目http地址,输入git用户名、密码

    需要配置--general、源码管理、构建触发器、Build、Post Steps、构建设置(E-mail Notification)、 构建后操作(html报告,邮件Edirtable Email Notification)--- 搞定。

    使用 git中代码,Pre Steps 就不需要输入命令。 ---build 中 pom + goals 命令就可以了 (使用公司服务jenkins,一般jenkins各种系统配置运维会配置。个人拿到自己的账号、密码,登录成功,就可以构建自己的自动化项目了)

    Build中,root Pom 输入maven 项目 ./pom.xml Goals and options :clean verify

    Post Steps   

    构建三个选择---可根据需要设置

    构建设置:邮箱设置,多个邮箱,英文空格为间隔。选择第一、第三 ------(可根据自己实际需要进行设置) 每一次不稳定的构建、每一次失败的构建--都需发送邮件

    构建后操作 构建后 HTML 报告,报告路径:target/jmeter/html index page:多个jmx 脚本,多个报告时,以英文逗号隔开 Report title:jenkins运行完毕脚本后,显示的报告title

    构建后邮件设置

    构建后邮件-Editable Email Notification

    勾选 Project Recipient List :xxxxxxx@xxxx.com xxxxxxxxx@qq.com (邮件接收人,多个接收人时可空格/逗号 隔开)

    Project Reply-To List : $DEFAULT_REPLYTO

    Content Type :HTML(text/html) ---- 邮件 中内容格式

    Default Subject : $DEFAULT_SUBJECT

    Default Content : $DEFAULT_CONTENT

    Advanced Setting:点击 (高级配置)

    Pre-send Script :$DEFAULT_PRESEND_SCRIPT

    Post-send Script: $DEFAULT_POSTSEND_SCRIPT

    Triggers , 勾选 Always, send to --勾选 Recipient List, 高级--点击

    展开中: Recipient List :收件人

    Reply-To List: $PROJECT_DEFAULT_REPLYTO (回复列表)

    Content Type:HTML(text/html)

    Subject: 【接口测试报告】$PROJECT_NAME - $BUILD_STATUS - Build #$BUILD_NUMBER!

    subject--邮件标题

    Content:邮件中内容,是一段 html 代码。

    点击应用。。

    到目前为止,jmeter + maven +jenkins +git,项目已全部增加。

    jenkins中点击testone,进入;

    点击左侧--立即构建,下面显示构建进度条 进度条走完,变成 蓝色球:构建成功;

    变成灰色球,构建失败;

    构建过程中,点击 该次构建,进入本次构建详情页, 构建详情页中,左侧有控制台输出,点击进入可查看 构建日志 构建完毕,收件人邮箱收到 本次构建结果。

  • 相关阅读:
    C# 文件类的操作---删除
    C#实现Zip压缩解压实例
    UVALIVE 2431 Binary Stirling Numbers
    UVA 10570 meeting with aliens
    UVA 306 Cipher
    UVA 10994 Simple Addition
    UVA 696 How Many Knights
    UVA 10205 Stack 'em Up
    UVA 11125 Arrange Some Marbles
    UVA 10912 Simple Minded Hashing
  • 原文地址:https://www.cnblogs.com/MTXue/p/11209268.html
Copyright © 2011-2022 走看看