以某一用户名和密码 登录请求脚本_如何自动登录禅道和自动开Bug?

“禅道”是一个国产的开源项目管理软件,支持需求管理、任务管理、缺陷管理和测试用例管理。本章将综合之前所学的知识,包括HTTP 协议、Fiddler 抓包和 JMeter 发包,来完成禅道系统的自动化测试。

本章涉及自动化登录禅道、自动开Bug、自动关Bug, 同时讲述 JMeter中HTTP Cookie 管理器和HTTP请求默认值的用法。

1.1

HTTP Cookie 管理器

前面的章节中解释过,HTTP 协议本身是无状态的,为了维持登录的状态,我们引入了Cookie机制。

Cookie 的流程如下。

第一步,浏览器发送第一个HTTP请求给Web 服务器,里面包含用户名和密码。Web服务器验证用户名和密码后,把登录相关的Cookie 发送给浏览器客户端。

第二步,浏览器客户端再一次访问的时候,会带上Cookie.这样才处于登录状态,否则会被服务器跳转到登录页面。

现在用JMeter来模拟整个登录过程,那么我们需要在第一步后,用正则表达式提取器把登录相关的 Cookie 提取出来,然后把登录的 Cookie 插入后续的HTTP请求中形成关联。

这里如果用正则表达式来做的话会稍显麻烦。

JMeter中的HTTP Cookie 管理器可以自动管理Cookie.有了它,我们就不需要去处理Cookie 了,HTTP Cookie 管理器会自动存储和发送Cookie.

如果HTTP响应中包含 Cookie, 那么 HTTP Cookie 管理器会自动保存这些 Cookie.用户再次访问该站点时,HTTP请求会自动使这些Cookie.一个线程组有自己存储 Cookie 的区域,并且一个线程组只能添加一个HTTP Cookie 管理器。

选择线程组,用鼠标右键单击添加-> 配置元件-》HTTP Cookie 管理器,HTTP Cookie 管理器里面不需要修改任何字段,如图1-1所示。

2c301f9eb6095b9ec85f3ccac2255728.png

▲图1-1 HTTP Cookie 管理器

1.2

HTTP请求默认值

我们在 Jmeter 里一般都会添加多个HTTP 请求,这些HTTP 请求的HOST、协议和端口都是一样的。我们可以添加一个HTTP 请求默认值,相当于一个模板。在HTTP请求默认值中设置HOST、协议、URL、端口等内容,这样后续的HTTP请求就会继承HTTP 请求默认值中的内容,如图1-2所示。

cefe68c05175f6b1b22571db235121d4.png

▲图1-2 HTTP 请求默认值

1.3

禅道介绍和部署

禅道是一个开源的项目管理系统,集产品管理、项目管理、Bug 管理、文档管理、组织管理和测试用例管理于一体,是一款功能完备的项目管理软件,完美地覆盖了项目管理的核心流程。很多创业公司都使用禅道。部署禅道非常简单,强烈建议读者自行搭建一个禅道系统,大概10分钟就能搭建好。不想自己搭建的话就用我提供的禅道。

我部署的禅道地址是 http://49.234.93.93:8081/zentao/, 用户名是admin, 密码是password.

现在用 JMeter 来实现禅道系统的自动登录,新建一个Bug, 把这个Bug修改为“已修复”, 再把这个Bug修改为“已关闭”。

1.4

禅道操作和抓包分析

我们一边用浏览器来手动操作,一边用 Fiddler 抓包分析,一边用 JMeter 来实现,以此逐步实现整个流程的自动化。

1. 4. 1 第1步,自动登录禅道

具体的操作步骤如下。

(1) 启动Fiddler, 启动过滤。过滤掉一些不相干的HTTP请求,能让我们快速找到我们需要的 HTTP请求。

在Fiddler中的 Filter 选项卡中激活 Filter, 并且在 Response Type and size 中选中“Show only HTML”,如图1-3所示。

79edc345375bf86d2859680daf29883e.png

▲图1-3 Fiddler启动过滤功能

(2)启动Fiddler,打开浏览器,输入http://49.234.93.93:8081/zentao/,然后输入用户名和密码,单击“登录”。抓包如图1-4所示。

5749345a2587876bf25acb6bbf83a1b4.png

▲图1-4 登录抓包

从抓包可以看到,登录用的是 POST方法,但是密码是加密后发送给服务器的,Body中的数据是 account=book&password=5f4dcc3b5aa765d61d8327deb882cf99。

(3) 确认密码是怎么被加密的。该密码估计是用 JavaScript 代码加密的。我们可以查一下 JavaScript代码。打开浏览器的开发工具,查找JS代码。不出所料,我们发现了一个叫MD5的JS文件,如图1-5所示。

9f48dcf15389367792a5506083f73f0b.png

▲图1-5 分析密码的加密方式

为了确定该密码是被 MD5 加密的,我们进行一下测试。打开 MD5的在线网站,网址是 http: //www.md5.cz/, 测试结果如图 1-6所示。现在可以确定密码是用MD5加密的。

836ebbd0486b7d1a20e5d2e3b8c7a395.png

▲图1-6 密码用MD5加密的

如何实现这个密码的加密呢?有两种方法。

第一种方法,先发送一个请求给 http: //www.md5.cz/, 在HTTP 响应中,我们用正则表达式把加密后的密码提取出来。这个方法的缺点是:如果网站不可用了,我们的脚本就不能工作了。

第二种方法,用 BeanShell 的方法,用Java代码来进行MD5加密,把一个Java的jar包引入进来。

我们采用第一种方法加密。如果读者想采用第二种方法,可以参考上一章中 BeanShell的用法。

(4) 启动JMeter, 新建一个线程组,新建一个用户自定义的变量。添加2个变量:一个叫 username, 一个叫 password, 如图1-7所示。

5bbd08e2b86469e75cdd915190dada35.png

▲图1-7 JMeter添加变量

(5)添加一个HTTP请求,命名为getmd5,如图1-8所示。

1b19070f079bccdbb5da61ff43b042ae.png

▲图1-8 为getmd5请求

(6)在getmd5 HTTP请求下面新建一个正则表达式提取器,填写的内容如图1-9所示。

2d7e89779b6704922bbd22e85af5bfa3.png

▲图1-9正则表达式提取加密后的密码

通过正则表达式,我们把加密后的密码存到变量password2 中。

(7) 选择线程组,添加一个HTTP Cookie 管理器,用来自动管理Cookie。

(8) 选择线程组,添加一个HTTP请求默认值,填写的内容如图1-10所示。

a9f7983e037d1ed070372ae22c559977.png

▲图1-10 添加HTTP请求默认值

(9)选择线程组,添加一个HTTP 请求,命名为login, 这个HTTP请求就是用来登录的。我们可以分析图1-11, 这是一个POST请求,URL 地址是/zentao/user-login.html, Body的数据应该是 account=$ {username} &password=$ {password2} 。

f5d95a2b502d11b33f1c87c1fd9f3828.png

▲图1-11 添加登录的HTTP请求

(10) 添加“察看结果树”, 并且运行,保存脚本。查看结果,如图1-12所示。

00c12ce058ae1876587ee8afc7c8e57c.png

▲图1-12 添加察看结果树

到这一步,我们的登录终于做好了,可以看到我们的密码是用MD5加密后发送的。

1. 4. 2 第2步,创建一个新的Bug

具体操作步骤如下。

(1)继续在浏览器中操作,在禅道中单击“测试”, 单击“Bug”, 在右边单击“新建一个Bug”,会弹出一个Bug的表单。在表单中填好一些必须字段,如图1-13所示。

1173e54c5ae488b257c24935b1bd14c9.png

▲图1-13 禅道中新建一个Bug

(2)单击保存,新建一个Bug的HTTP请求就被Fiddler抓到了,如图1-14所示。

7236abf40ed75999d3ab148034610c37.png

▲图1-14 新建Bug抓包

我们用 JMeter也模拟出一个一模一样的HTTP请求。

添加一个新的HTTP请求,命名为 CreateBug, 路径和 Body 的数据我们都从 Fiddler 里面复制过来,如图1-15所示。

43f44a3032a2a9029956360caa7ce1da.png

▲图1-15 JMeter实现新建Bug

在CreateBug中新建一个HTTP信息头管理器,把Header都从Fiddler中复制过来,记得一定要删除Host和Cookie这2个Header,如图1-16所示。

c69332cb813163f97aa9d64993f15785.png

▲图1-16 JMeter实现新建Bug添加Header

1. 4. 3 第3步,找到刚刚新建 Bug的ID

先在 JMeter中把上一步添加的 CreateBug 请求禁用,以防止创建太多的 Bug。

要修改这个Bug, 我们需要知道刚才所创建的Bug的ID是多少。

我们回到Bug 列表的页面,可以看到,根据Bug的标题,可以从这个页面获取到Bug的ID, 如图1-17所示。

9b3618890774cf893327f5139ef2cc43.png

▲图1-17 禅道中新建一个Bug

获取Bug列表的HTTP请求用的GET方法。在JMeter中,新建一个HTTP请求,将其命名为GetBugList,如图1-18所示。

416bd3e378ae7669aeff2112ca4d5e12.png

▲图1-18 JMeter获取Bug列表页面

在 GetBugList 请求下面,添加一个正则表达式用于提取Bug的ID, 如图1-19所示。通过正则表达式,我们可以从 GetBugList的 HTTP 响应中把Bug的ID的值提取出来,存到变量 bugid 中。

40cc80e1de9c1e43ad31571d89c3f387.png

▲图1-19 提取Bug的ID

1.4.4 第4步,修改Bug状态为“已解决”

在浏览器中把Bug的状态修改为“已解决”,浏览器的操作如图1-20所示。

6b9eae02607070603c3ddf63994f9e15.png

▲图1-20 Bug修改为“已解决”

Fiddler抓包如图1-21所示。

6bb5ae44c658e25daec9051809bf72bb.png

▲图1-21 Bug修改时 Fiddler 抓包

在 JMeter 中新建一个HTTP 请求,命名为 EditBug。按照上面抓到的包,把URL和body 数据都填好,如图1-22所示。注意Bug的ID是动态变化的,URL中我们需要使用${bugid} 。

8c24c85b2d31856fdcbbaaaa914f0fae.png

▲图1-22 JMeter 实现修改Bug

在EditBug这个HTTP请求下面新建一个HTTP信息头管理器,从Fiddler中把Header复制过来,粘贴到HTTP信息头管理器中。记得一定要删除Host和Cookie这2个Header。

1. 4. 5 第5步,关闭 Bug

同样的道理,在浏览器上操作,把Bug关闭,Fiddler 抓包,然后用 JMeter 实现。如图1-23所示。

d9a2249fc7e7184df46445ca83882379.png

▲图1-23 JMeter 实现关闭 Bug

1. 4. 6 总结

整个流程就做完了,我们可以用 JMeter 实现禅道的自动登录,自动开Bug, 自动修改Bug的状态并关闭Bug。

同样的道理,我们可以用此方法做接口的自动化测试。除了 JMeter 之外,还可以使用Postman来完成。

https://u.wechat.com/MKJanwpfC9HDXaD19lB-Xz8 (二维码自动识别)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值