jmeter接口自動化測試環境部署(ant+jmeter+jenkins+svn+釘釘)

jmeter接口自動化測試環境部署

注意:以下內容適應用於公司測試團隊小,同時技術不足以開發或者不願意投入時間精力開發接口自動化測試平臺的測試團隊。同時本文章內容是使用docker技術實現搭建,當然如果公司沒有使用docker技術的也適用。將docker鏡像看作是一臺服務器即可。但是docker並不是虛擬機。他只是服務器中的一個進程。請讀者不要混淆。

另外需要該文章pdf版本的讀者可在百度網盤下載
鏈接:https://pan.baidu.com/s/1N7lkkh29YZgPB4RJF8Ywvg 密碼:rked

一、概述
         jmeter是做API和性能測試的一把利器。也是接口自動化測試的一種非常棒的一款開源的測試軟件。本次接口自動化的環境搭建主要圍繞着jmeter展開。主要用到的工具/應用程序有:jmeter+ant+apache/tomcat+jenkins+DingDing+SVN。搭建自動化測試環境的時候注意,無論是任何的框架或者說是架構都是圍繞着簡單、易用、功能強大三個特點來開展的。所以我們要做的就是儘可能能的減少重複性的操作。讓使用者能夠節省時間的同時儘可能的保證該架構的穩定性。
結構圖如下:
在這裏插入圖片描述
注意:該內容講解的所有內容均在docker鏡像中操作、如果有自己服務器的同學可以直接使用服務器進行操作

二、環境準備環境搭建
(一)Linux docker環境搭建
1、centos安裝docker
         如果linux環境中安裝了yum工具包那麼直接使用yum install docker便可以直接安裝了,在安裝過程中如果詢問直接‘y’就好
在這裏插入圖片描述
使用docker --version可以查看當前的docker版本
在這裏插入圖片描述
2、ubuntu安裝docker
         前提條件:Docker 要求 Ubuntu 系統的內核版本高於 3.10 ,查看本頁面的前提條件來驗證你的 Ubuntu 版本是否支持 Docker。
通過 uname -r 命令查看你當前的內核版本
在這裏插入圖片描述
檢查完版本後在命令行中輸入wget -qO- https://get.docker.com/ | sh
在這裏插入圖片描述
輸入當前用戶的密碼後,就會下載腳本並且安裝Docker及依賴包。
在這裏插入圖片描述
在這裏插入圖片描述
安裝完成後有個提示:

    If you would like to use Docker as a non-root user, you should now consider
    adding your user to the "docker" group with something like:
    sudo usermod -aG docker runoob
   Remember that you will have to log out and back in for this to take effect!  

使用docker --version可以查看當前的docker版本
在這裏插入圖片描述
3、啓動docker

service docker start

4、下載linux鏡像文件
5、搜索鏡像
         搜索ssh鏡像文件docker search ssh
在這裏插入圖片描述
6、下載鏡像
         下載鏡像文件到本地 docker pull jdeathe/centos-ssh
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20190730113231759.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDAxOTQwNg==,size_16,color_FFFFFF,t_70
7、檢查與查看
         查看鏡像文件是否下載成功 docker images
在這裏插入圖片描述
8、運行docker鏡像並開啓所需端口
         1)運行鏡像 “docker run -it --name jmeterTest -d -p 7890:8080 -p 7891:22 -p 7892:80 jdeathe/centos-ssh”此命令會運行docker倉庫中的jdeathe/centos-ssh鏡像並重新命名爲jmeterTest 並且會將鏡像中的8080、22、80端口映射到docker宿主機的7890、7891、7892上。
在這裏插入圖片描述
         2)查看正在運行的docker鏡像 “docker ps”
在這裏插入圖片描述

         3)進入docker鏡像內執行sh命令 “docker exec -it jmeterTest bash”,如果此時發現主機名稱變成了12位的字符便成功了,不過你會發現字符是你啓動docker鏡像的時候返回給你的前12位字符
在這裏插入圖片描述
(二)、安裝JDK
1、下載
         下載地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,
在這裏插入圖片描述
2、上傳
         將jmeter壓縮包上傳到服務器,由於docker下載的鏡像是比較乾淨的鏡像所以有很多我們常見的命令不能執行,需要我們手動的去下載。所以先使用rz或者scp命令將壓縮包上傳到宿主機,退到宿主機只要執行exit命令就可以了
在這裏插入圖片描述
         複製jmeter壓縮文件到運行的鏡像中
在這裏插入圖片描述
         將鏡像文件中的jmeter壓縮包解壓到鏡像的usr/local目錄下
在這裏插入圖片描述
         新增jmeter“JAVA_HOME”環境變量,並修改完後讓配置立即生效
在這裏插入圖片描述
在這裏插入圖片描述
         查看java版本 java -version
在這裏插入圖片描述
(三)、安裝jmeter
1、下載jmeter
         地址:http://jmeter.apache.org/download_jmeter.cgi。在jmeter官網中有兩處下載:Binaries爲jmeter應用程序下載。Source爲源碼下載。下載的時候可以在Binaries處自己選擇想要下載的格式,.tgz和.zip。這裏我選擇第一個.tgz。(兩個是一樣的,下載後只是解壓格式不一樣)
在這裏插入圖片描述

2、將jmeter壓縮包上傳到服務器。
在這裏插入圖片描述
         複製jmeter壓縮文件到運行的鏡像中
在這裏插入圖片描述
         將鏡像文件中的jmeter壓縮包解壓到鏡像的usr/local目錄下
在這裏插入圖片描述
         新增jmeter“JMTER_HOME”環境變量,並修改完後讓配置立即生效
在這裏插入圖片描述
在這裏插入圖片描述

(四)、安裝ANT
1、下載ANT
         地址:https://ant.apache.org/bindownload.cgi
在這裏插入圖片描述
2、將jmeter壓縮包上傳到服務器。
在這裏插入圖片描述
         複製jmeter壓縮文件到運行的鏡像中
在這裏插入圖片描述
         將鏡像文件中的jmeter壓縮包解壓到鏡像的usr/local目錄下
在這裏插入圖片描述
         新增jmeter“ANT_HOME”環境變量,並修改完後讓配置立即生效
在這裏插入圖片描述
3、配置ANT
         將jmeter目錄下的ant-jmeter-1.1.1.jar文件複製到ANT文件夾的lib目錄下
在這裏插入圖片描述

(五)、安裝svn
         執行命令:yum install subversion安裝完成後svn --version查看當前svn版本
在這裏插入圖片描述
(六)、安裝apache
1、安裝
         執行命令:yum install -y httpd 暗轉完成後輸入httpd -v查看當前版本
在這裏插入圖片描述
         查看完當前版本後訪問該鏡像,【http://ip地址:端口】
在這裏插入圖片描述
(七)、安裝jenkins
1、下載
         下載地址 :https://jenkins.io/download/ 選擇一個與自己docker鏡像相匹配的jenkins包,或者下載java的版本。這裏爲了教學方便所以選擇下載java版本
在這裏插入圖片描述
2、將jenkins包上傳到服務器。
在這裏插入圖片描述
         複製jenkins包文件到運行的鏡像中
在這裏插入圖片描述
         運行jenkins
在這裏插入圖片描述
3、jenkins基礎配置
         啓動後訪問地址:http://ip地址:7890/
在這裏插入圖片描述
         根據jenkins提示在docker鏡像中找到對應路徑文件,並打開復制內容,黏貼。黏貼後安裝推介的插件
在這裏插入圖片描述
在這裏插入圖片描述
         創建初始化帳號(最高權限)

![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20190730113700501.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDAxOTQwNg==,size_16,color_FFFFFF,t_70
三、文件環境準備
(一)、文件目錄準備
1、svn新建jmeterCase
         新建jmeterCase文件夾用於存放jmeter自動化測試腳本
在這裏插入圖片描述
(二)、jmeter腳本數據準備
在這裏插入圖片描述
(三)、ANT數據文件準備
         新建一個.xml的ANT編譯文件內容格式如下

<?xml version="1.0" encoding="utf-8"?>
<!--Project爲整個量的根目錄;name隨便寫,可自行更改;default默認執行什麼任務,下面有個target name = "all";basedir爲.代表當前目錄-->
<project name="jmeter_test" default="all" basedir="/var/www/jmeterCase/case/">
    <tstamp>
        <!-- 這裏是加入了年月日時分秒,用來加在報告的後綴上-->
        <format property="time" pattern="yyyyMMddhhmmss" />
    </tstamp>
    <!-- 需要改成自己本地的 Jmeter 目錄,寫到bin目錄的上一步就可以-->
    <property name="jmeter.home" value="/home/ubuntu/softWare/qjclouds/apache-jmeter-5.0" />
    <!-- jmeter生成jtl格式的結果報告的路徑-->
    <property name="jmeter.result.jtl.dir" value="/var/www/jmeterCase/report/jtl" />
    <!-- jmeter生成html格式的結果報告的路徑-->
    <property name="jmeter.result.html.dir" value="/var/www/html/report" />

    <!-- 生成的報告的前綴ReportName的value可以自定義值,下面的jtl和html的名字是用變量來的也不需要改 -->
    <property name="ReportName" value="${caseName}" />
    <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
    <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
    <!-- 接收測試報告的郵箱,不用這個發郵件,可以刪除 -->
    <property name="mail_to" value="[email protected]" />
    <!-- 電腦地址,也不用,可以刪除 -->
    <property name="ComputerName" value="Admin" />
    <!-- 對應到上面的,default爲all,下面調用了兩個:test和report-->
    <target name="all">
        <antcall target="test" />
        <antcall target="report" />
    </target>
    <!-- 對應到上面的target爲test -->
    <target name="test">
        <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
        <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
            <!-- 聲明要運行的腳本。"*.jmx"指包含此目錄下的所有jmeter腳本,腳本要執行某一個就寫死哪個 -->
            <testplans dir="/var/www/jmeterCase/case" includes="${caseName}.jmx" />
            <property name="jmeter.save.saveservice.output_format" value="xml"/>
        </jmeter>
    </target>
    <path id="xslt.classpath">
        <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
        <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
    </path>
    <!-- 對應到上面的target爲report -->
    <target name="report">
        <tstamp><format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/></tstamp>
        <xslt classpathref="xslt.classpath" force="true" in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl" 
        >
         <param name="dateReport" expression="${report.datestamp}"/>
         </xslt>
        <!-- 因爲上面生成報告的時候,不會將相關的圖片也一起拷貝至目標目錄,所以,需要手動拷貝 -->
        <copy todir="${jmeter.result.html.dir}">
            <fileset dir="${jmeter.home}/extras">
                <include name="collapse.png" />
                <include name="expand.png" />
            </fileset>
        </copy>
    </target>
    <!-- 發送郵件 -->
</project>

注意:這裏個modle的腳本文件名稱用${caseName}代替了
(四)DINGDING文件
         因爲整個自動化結構都是由釘釘通知的所以首先要對釘釘消息進行模版化。在新建模版化json文件之前,我們需要先在DingDing上創建一個羣,並在羣內開啓一個釘釘機器人,新建一個json文件內容如下:
在這裏插入圖片描述

{
    "msgtype": "link",
    "link": {
        "text": "jmeter編譯成功",
        "title": "接口自動化環境通知!!!",
        "picUrl": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1547116083262&di=a123ecc9c1ae1b57809a51e83a81369a&imgtype=0&src=http%3A%2F%2F5b0988e595225.cdn.sohucs.com%2Fimages%2F20180623%2Fa55f0483026a41bf861e3c82afb7b9b4.jpeg",
        "messageUrl": "http://xxx.xxx.xxx.xxx/report/${html}"
    }
}

注意:這裏個modle的腳本文件名稱用${caseName}代替了

(五)、文件上傳
         將jmeter腳本名稱與ANT編譯文件名稱改爲一致的文件名稱例如:demo.xml、demo.jmx。改完名稱後將jmeter腳本上傳到jmeterCase文件夾下case文件夾。
在這裏插入圖片描述
(六)、服務器文件目錄準備
1、新建文件夾bin、DingDing
         命令:mkdir 目錄名稱
在這裏插入圖片描述
2、模版文件上傳
         將demo.xml、demo.json文件上傳到bin目錄
在這裏插入圖片描述

3、檢出jmeterCase目錄

在這裏插入圖片描述
在這裏插入圖片描述四、sh命令準備
(一)、創建新的ANT啓動.xml文件sh
內容如下:

home=/var/www
cp ${home}/bin/demo.xml ${home}/bin/$1.xml
sed -i -e 's/${caseName}/'$1'/g' ${home}/bin/$1.xml
mv ${home}/bin/$1.xml ${home}/jmeterCase/case/$1.xml
svn add ${home}/jmeterCase/case/$1.xml
svn commit  -m 新增$1.xml文件 ${home}/jmeterCase/case/$1.xml

(二)、發送釘釘消息sh

內容如下:
#定義jmeter自動化home文件夾

home=/var/www
if [ ! -f ${home}/jmeterCase/case/"$1".xml ]; then
sh -x ${home}/bin/createAntXML.sh $1
fi
#更新html報告文件夾
svn up ${home}/html/
#更新用例文件夾
svn up ${home}/jmeterCase/
#調用ant執行jmeter腳本並生成報告
ant -f ${home}/jmeterCase/case/$1.xml
#創建隨機變量文件名
random=${RANDOM}
#遍歷report目錄下以參數$1開頭的文件並排序,將內容吧寫入到隨機文件
ls -t ${home}/html/report | grep $1 >>${home}/html/report/${random}.txt
#讀取隨機文件的第一行文本
file=$(head -1 $home/html/report/${random}.txt)
#刪除隨機文件
rm -rf ${home}/html/report/${random}.txt
#刪除釘釘消息文件
rm -rf ${home}/DingDing/$1.json
#複製消息文件
cp ${home}/DingDing/msg.json ${home}/DingDing/$1.json
#替換url
sed -i -e 's/${html}/'${file}'/g' ${home}/DingDing/$1.json
#替換消息標題
sed -i -e 's/jmeter編譯成功/【'$1'】jmeter腳本編譯成功,點擊查閱:http:\/\/111.230.223.145\/report\/'$file'/g' ${home}/DingDing/$1.json
#讀取json文件
json=$(head -n 100 ${home}/DingDing/$1.json)
#發送釘釘消息
if [ $(grep -c "class=\"failure\"" ${home}/html/report/${file}) -eq  1 ]; then
	curl https://oapi.dingtalk.com/robot/send?access_token=992debb70f5fe66037383d5e7635e99cdc1608957affc6c4256127b500526c5a -H  'Content-Type: application/json'  -H "Data_Type:msg" -X POST -d  "${json}"
fi

注意:最後發送釘釘消息時將之前創建的DingDing機器人的token換成自己的“access_token”

五、jenkins配置

         新建一個job
在這裏插入圖片描述
         配置參數化構建
在這裏插入圖片描述
         添加需要執行的命令
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章