我用clojure写了一个测试网站压力的工具

说明:

网站压力测试工具有很多,ab,jmeter等等。但是当你真正测试自己的系统时,特别是动态的系统,比如oa系统,那些工具似乎都不好使了。(可能是我研究不深)。

面临的问题:

1、用户需要登陆

2、按照用户的操作习惯,按序访问一系列url

源代码:

https://github.com/jianglibo/pressure-it

如何使用:

(defn oa-user-login
  [cs]
  (let [login-url "http://someappurl.cc/Login"]
    (client/post login-url {:form-params {:fLoginVerification 1
                                          :Username "username"
                                          :Password "password"
                                          :DBPath "/domcfg.nsf"
                                          :Path_Info "/index.nsf"
                                          :Path_Info_Decoded "/index.nsf"
                                          :SaveOptions 1
                                          :$PublicAccess 1}
                            :cookie-store cs})))

(def oa-user-request-urls
  ["http://someurl.cc"
   "http://someurl.cc/RndStr={{rand}}"])

(pressure-it/benchmark [oa-user-login oa-user-request-urls 20 5])

oa-user-login是登陆代码,oa-user-request-urls是通过观察用户打开网页时请求后台的路径,不管是iframe还是ajax都可以。

benchmark的参数是:登陆函数,访问url列表,用户数(线程数),重复几次。

你得到的报告如下:

7361549 [nREPL-worker-19] INFO  pressure-it.core  - total time costs:  46086
nil
user=> (require ‘[pressure-it.pressure-this :as pmy] :reload)
7593807 [nREPL-worker-20] INFO  pressure-it.core  - thread number:  30
7593865 [nREPL-worker-20] INFO  pressure-it.core  - ({"http:///db_publicaffair.nsf/Toppic?OpenForm&RndStr={{rand}}"
  {:request-num 150,
   :total-download 94734,
   :success
   {:request-num 18, :slowest 3055, :fastest 2882, :average 2997.5},
   :failure {:request-num 132}}}
 {"http:///TopBottomFrameSetWin?Open
Form&path=/db_mqhb.nsf&fTitle=%E6%B0%91%E6%83%85%E4%BC%9A%E5%
8A%9E&RndStr={{rand}}"
  {:request-num 150,
   :total-download 0,
   :success {:request-num 0, :slowest nil, :fastest nil, :average -1},
   :failure {:request-num 150}}}
 {"http:///db_printview.nsf/PeoplePrintView?O
penAgent&infoid=mqhb_Info&path=app&dbname=db_mqhb.nsf"
  {:request-num 150,
   :total-download 512424,
   :success
   {:request-num 44, :slowest 3060, :fastest 239, :average 2214.068},
   :failure {:request-num 106}}})

7593865 [nREPL-worker-20] INFO  pressure-it.core  - total time costs:  46266
nil

可以看到,在30个并发用户的时候,这个oa基本不可用了。

TODO:

在有验证码的情况下,必须将验证码图片保存在磁盘上,并提示用户输入验证码。

时间: 2024-07-30 08:48:08

我用clojure写了一个测试网站压力的工具的相关文章

Web Bench测试网站压力

1.web bench下载,地址:http://home.tiscali.cz/~cz210552/webbench.html 2.wen bench安装 [[email protected] tmp]#tar -zxvf webbench-1.5.tar.gz [[email protected] tmp]# cd webbench-1.5 [[email protected] webbench-1.5]# ll total 28 lrwxrwxrwx 1 1001 root    16 No

自己写的一个IOS自动打包脚本工具

#!/bin/bash #----------------------------------------------------------------------------------# 功能:编译xcode项目并打ipa包# 使用说明:# 编译project# ipa-package <project directory> [-c <project configuration>] [-n] [-o <ipa output directory>]## 参数说明:

利用django创建一个投票网站(五)

创建你的第一个 Django 项目, 第五部分 这一篇从第四部分(en)结尾的地方继续讲起.我们在前几章成功的构建了一个在线投票应用,在这一部分里我们将其创建一些自动化测试. 自动化测试简介 自动化测试是什么? 测试,是用来检查代码正确性的一些简单的程序. 测试在不同的层次中都存在.有些测试只关注某个很小的细节(某个模型的某个方法的返回值是否满足预期?),而另一些测试可能检查对莫个软件的一系列操作(某一用户输入序列是否造成了预期的结果?).其实这和我们在教程的第一部分(zh)里做的并没有什么不同

【转】 详细介绍windows下使用python pylot进行网站压力测试

windows下使用python进行网站压力测试,有两个必不可少的程序需要安装,一个是python,另一个是pylot.python是一个安装软件,用来运行python程序,而pylot则是python的一个功能插件,作用是进行网站压力测试.本文将介绍在windows下如何使用python pylot进行网站压力测试. 一.安装python 如果你已经成功安装了python,那么可以忽略这步.否则,请首先正确安装python,确保能运行正常.可以看看这里,windows安装python详细教程

Windows Azure 创建虚拟机并发布测试网站

很多人刚开始使用Windows Azure,希望可以测试最基本的功能:使用虚拟机发布一个测试网站.Azure虚拟机的大部分功能与本地类似,某些设置需要用户在管理门户上做特殊操作.接下来,我们共同完成从创建Win Server 2012R2虚拟机到使用该虚拟机发布测试网站的全过程. 登录管理门户 https://manage.windowsazure.cn  之后,选择 新建>虚拟机>从库中 此处选择镜像,有Windows以及Linux多种镜像版本供我们选择,版本介绍不在此赘述.我们选择Wind

一个不会写代码的测试员

高中时,我数学学的烂,当时我就决定,大学绝对不学数学.然后考进了信息与计算科学,然后,这专业的前身叫做——应用数学. 大学时,我一看到代码就头疼,当时我就决定,毕业后绝对不从事计算机相关工作.然后,在找工作的大潮中,我最终选择了现在这个工作,进入了计算机行业. 同学们都觉得我太逗趣了,很长一段时间,我也郁闷. 后来我才知道,原来这才是真谛,在大学这个专业的学习,我很满足也很快乐:现在的工作也时常让我觉得有收获,有乐趣. 原来没有一点点防备,阴差阳错,才是生活的真谛. 进入工作后,我开始做手工测试

Java基础-继承-编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数 loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。每个 类都有构造方法和输出相关数据的方法。最后,写一个测试类来测试这些类的功 能。

#29.编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight.小车类Car是Vehicle的子类,其中包含的属性有载人数 loader.卡车类Truck是Car类的子类,其中包含的属性有载重量payload.每个 类都有构造方法和输出相关数据的方法.最后,写一个测试类来测试这些类的功 能. package hanqi; public class Vehicle { private int wheels; private int weight

用thinkphp写的一个例子:抓取网站的内容并且保存到本地

我需要写这么一个例子,到电子课本网下载一本电子书. 电子课本网的电子书,是把书的每一页当成一个图片,然后一本书就是有很多张图片,我需要批量的进行下载图片操作. 下面是代码部分: public function download() { $http = new \Org\Net\Http(); $url_pref = "http://www.dzkbw.com/books/rjb/dili/xc7s/"; $localUrl = "Public/bookcover/"

十大抢手的网站压力测试工具

两天,jnj在本站发布了<如何在低速率网络中测试 Web 应用>,那是测试网络不好的情况.而下面是十个免费的可以用来进行Web的负载/压力测试的工具,这样,你就可以知道你的服务器以及你的WEB应用能够顶得住多少的并发量,以及你的网站的性能.我相信,北京奥组委的订票网站的开发团队并不知道有这样的测试工具. Grinder –  Grinder是一个开源的JVM负载测试框架,它通过很多负载注射器来为分布式测试提供了便利. 支持用于执行测试脚本的Jython脚本引擎HTTP测试可通过HTTP代理进行