crystal's Blog

生活、技术个人博客


  • Home

  • Archives

Jmeter集成Jenkins

Posted on 2018-06-19

配置ANT

1.下载Ant(https://ant.apache.org/bindownload.cgi)

2.直接解压压缩包

3.添加系统环境变量

connect
connect

4.cmd中运行ant -version 查看是否安装成功

connect

配置Jmeter

1.将 jmeter的extras目录中ant-jmeter-1.1.1.jar包拷贝至ant安装目录下的lib
目录中

2.修改Jmeter的bin目录下jmeter.properties文件的配置:
==jmeter.save.saveservice.output_format=xml==

connect

3.在jmeter安装路径下创建一个文件夹build,在build文件夹下面再创建一个文
件夹,此文件夹的名称与项目名一致,在项目文件夹下创建一个build.xml文
件.

connect

内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<!-- 需要改成自己本地的jmeter目录-->
<property name="jmeter.home" value="D:\软件\apache-jmeter-3.1" />
<property name="ReportName" value="TestReport" />
<!-- jmeter生成的jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="D:\Jenkins\workspace\Jmeter\jtl"/>
<!-- jmeter生成的html格式的结果报告的路径-->
<property name="jmeter.result.html.dir"
value="D:\Jenkins\workspace\Jmeter\html" />
<!-- ʺ生成的报告的前缀-->
<property name="jmeter.result.jtlName"
value="${jmeter.result.jtl.dir}/${ReportName}.jtl"/>
<property name="jmeter.result.htmlName"
value="${jmeter.result.html.dir}/${ReportName}.html" />
<!-- ʺ声明运行顺序-->
<target name="run">
<antcall target="test" />
<antcall target="clean" />
<antcall target="report" />
<antcall target="cleanjt" />
</target>
<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="D:\测试文件\测试\Jmeter_Script" includes="*.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 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-detail-report_21.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>
<!-- ʺ定义删除Jmeter报告缓存-->
</target>
<target name="clean">
<delete dir="${jmeter.result.html.dir}" />
<delete file="${jmeter.result.htmlName}" />
</target>
<target name="cleanjt">
<delete file="${jmeter.result.jtlName}" />
</target>
</project>

备注:
这块的运行逻辑是,ant运行Jmeter脚本,先生成jtl的缓存文件,再转为html的报告

4.在build路径下创建run.bat文件,文件内容如下:(这一步仅作为检查用,可以省略)
%ANT_HOME%\bin\ant -f %JMETER_HOME%\Jmeter\build\build.xml
双击运行run文件,若在指定路径下(第六步文件中有指定路径)能都看到测试报告,则证明ant+Jmeter配置成功ant -f 意思是用来运行xml文件

5.在Jenkins中配置ANT(系统管理->全局工具配置)

connect

6.进入Jenkins的项目,打开配置,添加构建

connect

connect

targets中是运行顺序,是build文件中配置的字段
build file后填写build文件所在路径

邮件发送配置

1.在Jenkins系统设置中设置Extended E-mail Notification:

connect

connect

2.在构建项目中添加构建后操作:

connect

connect

3.添加trigger操作:

connect

4.在success中点击“高级”:

connect

1
2
subject:
Jenkins构建通知:$PROJECT_NAME - Build # $BUILD_NUMBER-$BUILD_STATUS!

content:中的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<!DOCTYPE html>  
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
</head>

<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
offset="0">
<div>
<table width="95%" cellpadding="0" cellspacing="0"
style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">

<tr>
<th align="center" colspan="2"><br />
<h2>构建信息</h2>
</th>
</tr>
<tr>
<td>
<ul>
<li>项目名称:${PROJECT_NAME}</li>
<li>构建编号:${BUILD_NUMBER}</li>
<li>触发原因:${CAUSE}</li>
<li>构建日志:<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>

<li>项目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li><br />
</ul>
</td>
<td>${JELLY_SCRIPT,template="html"}<br/>
</tr>

<tr>
<td colspan="2" align="center"><br />
<h2>测试报告</h2>
</td>
</tr>

<tr>
<td colspan="2" align="center">
<div>${FILE,path="D:/Jenkins/workspace/Jmeter/html/TestReport.html"}</div>
</td>
</tr>

</table>
</div>

</body>
</html>

5.添加测试报告显示在邮件中:Publish HTML report
(如果在构建后操作中没有此插件,到Jenkins系统管理-插件管理中下载)

connect

6.设置好以上步骤之后,接收到的邮件内容为:

connect

jmeter接口参数化

Posted on 2018-06-14

1. Jmeter参数化之用户变量

在测试计划里面添加一个用户自定义的变量,变量名:uid,变量值:GS0044

connect
connect


2. Jmeter参数化之函数读取数据  

随便选取了几个函数作为实例,函数具体参数和百度查询
  __Random:生成随机数
  __RandomString:生成随机字符串
  __time:获取当前时间
  __UUID:生成唯一UID
  __threadNum:线程ID
  __CSVRead:从文件中读取一列
  _StringFromFile:从文件中读取一行

connect
connect
connect


3.Jmeter参数化之从文件中读取数据

添加一个CSV Data Set Config 配置元件

connect

data.txt文件内容如下:

connect
connect


4.Jmeter参数化之从数据库读取数据

可以从数据读取数据,进行参数操作;也通过jdbc进行造测试数据
==注意:一定要在测试计划中上传mysql驱动==

connect
connect
connect
connect

移动端抓包

Posted on 2018-05-16

Jmeter抓包

1
2
3
4
点击测试计划右击新增“线程组”
右击“线程组”新增“HTTP请求默认值”
修改“服务器名称或IP”为本机IP(如:192.168.100.243)
修改“端口号为”为:8888
Jmeter
1
2
3
选择工作台>新增“HTTP代理服务器”
修改“目标控制器”,更改为:测试计划>线程组
一般情况下默认的端口号是:8888(这里可以改,如果有端口冲突的话)
Jmeter

手机设置

1
2
在手机中设置手动代理为HTTP请求默认值的IP
端口为HTTP代理服务器端口号:168.192.100.243
Jmeter
1
2
配置好之后,进入“HTTP代理服务器”中点击底部“启动按钮”
点击手机上的应用,此时就会有调用的包出现在“线程组”中
Jmeter

charles抓包

1
2
3
4
选择“proxy”
点击“proxy setting”
进入proxy setting 页面
在端口处填写端口号(默认为8888,可以更改)
Jmeter

手机设置

1
2
在手机中设置手动代理为HTTP请求默认值的IP:168.192.100.243
端口为HTTP代理服务器端口号:8888
Jmeter

1
2
3
链接成功之后,点击手机上的应用在“structure”上就会显示该应用的服务器地址端口号下所调用的包
如果你觉得太多接口出现的话可以选择你想查看的包,右击鼠标选择“focus”
此时就会把分成你想看到的接口和“Other Hosts”
Jmeter

Hexo中next主题自动变化图片

Posted on 2018-05-15

Next主题自动更换背景图片


图片来源是

1
https://source.unsplash.com/

修改背景样式

修改themes\next\source\css\ _custom\custom.styl文件,这个是Next故意留给用户自己个性化定制一些样式的文件,添加以下代码:
1
2
3
4
5
6
body {
background:url(https://source.unsplash.com/random/1600x900);
background-repeat: no-repeat;
background-attachment:fixed;
background-position:50% 50%;
}
1
2
3
repeat:重复出现
attachment:滚动效果
position:调整图片的位置

修改不透明度

调整背景的不透明度了。同样是修改themes\next\source\css\ _custom\custom.styl文件。在后面添加如下代码:
1
2
3
4
5
6
7
.main-inner { 
margin-top: 60px;
padding: 60px 60px 60px 60px;
background: #fff;
opacity: 0.8;
min-height: 500px;
}
1
2
background: #fff; 白色
opacity: 0.8;不透明度

Python selenium

Posted on 2018-05-15

Python selenium等待的区别

强制等待 sleep()

1
2
3
4
5
import time
driver = webdriver.FirefoxProfile()
driver.get('http://ehrtest.source3g.com/auth//#/login?ehr')
time.sleep(10) # 强制等待10秒
driver.quit()

优点:简单方便.
缺点:缺点时不智能,设置的时间太短,
元素还没有加载出来,那照样会报错;设置的时间太长,
则会浪费时间,不要小瞧每次几秒的时间,case多了,
代码量大了,很多个几秒就会影响整体的运行速度了.


隐性等待 implicitly_wait()

1
2
3
4
5
from selenium import webdriver
driver = webdriver.FirefoxProfile()
driver.implicitly_wait(20) # 隐性等待,最长等30秒
driver.get('http://ehrtest.source3g.com/auth//#/login?ehr')
driver.quit()

优点:简单方便.
缺点:因为随着ajax技术的广泛应用,
页面的元素往往都可以时间局部加载,
也就是在整个页面没有加载完的时候,
可能我们需要的元素已经加载完成了,
那就么有必要再等待整个页面的加载
执行进行下一步,而隐性等待满足不了这一点.


显性等待(WebDriverWait)

selenium中的wait模块的WebDriverWait()方法,
配合until或者until_not方法,再辅助以一些判断条件,
就可以构成这样一个场景:每经过多少秒就查看一次locator的元素是否可见,
如果可见就停止等待,如果不可见就继续等待直到超过规定的时间后,报超时异常。

1
2
3
4
5
6
7
8
9
from selenium import webdriver  
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver = webdriver.Firefox()
driver.get('http://ehrtest.source3g.com/auth//#/login?ehr')
WebDriverWait(driver,20,0.5).until(EC.presence_of_element_located((By.XPATH, './/*[@id='app']/div/div[2]/form/div[3]/button')))
driver.implicitly_wait(20)
driver.close()
1
2
3
20:最长等待时间。
0.5:检查间隔时间,每隔0.5秒检查一次操作是否完成。
EC.presence_of_element_located(locator):判断目标元素是否已经成功加载.
123

Crystal_Girl

Thinking....

15 posts
© 2019 Crystal_Girl
Powered by Hexo
|
Theme — NexT.Muse v5.1.4