FunkLoad是一款功能强大的Web测试程序,用Python编写,主要使用场景如下:
1)Web项目的功能测试,以及回归测试。
2)性能测试:通过加载Web应用程序和监视服务器,可以帮助你精确定位瓶颈,并提供性能测量的详细报告。
3)负载测试工具,以暴露粗略测试中不会出现的错误,如容量测试或稳定性测试。
4)压力测试工具压倒Web应用程序资源并测试应用程序的可恢复性。
5)通过脚本编写Web重复任务来编写Web代理。
Debian和Ubuntu快速安装
使用Debian Lenny或Ubuntu 8.10,9.04,10.04 ...,您可以这样安装最新的快照
sudo aptitude install python-dev python-setuptools python-webunit python-docutils gnuplot
sudo aptitude install tcpwatch-httpproxy
#如果为ubuntu,把aptitude 改为 apt-get ,其它保持一样
sudo easy_install -f http://funkload.nuxeo.org/snapshots/ -U funkload
安装最新的稳定版本替换最后一行
sudo easy_install -U funkload
如果要使用分布式模式(从1.14.0开始),你需要安装paramiko和virtualenv
sudo aptitude install python-paramiko python-virtualenv
就这样。
请注意,Debian Squeeze,包括可以以这种方式安装的FunkLoad 0.13.0软件包:
sudo aptitude install python-webunit funkload
CentOS快速安装
用根用户root安装:
yum install python-setuptools python-docutils gnuplot python-devel make
wget http://funkload.nuxeo.org/3dparty/tcpwatch-1.3.tar.gz
tar xzvf tcpwatch-1.3.tar.gz
cd tcpwatch
python setup.py install
easy_install webunit
easy_install -f http://funkload.nuxeo.org/snapshots/ -U funkload
在Mac上安装funkload
1、一外国小伙伴提供的最新安装方式:
virtualenv --no-site-packages loadtest
source loadtest/bin/activate
pip install ez_setup
pip install distribute
pip install tcpwatch
easy_install funkload
2、标准安装方式:
创建一个单独的环境来安装Funkload:
virtualenv --no-site-packages loadtest
source loadtest / bin / activate
pip install yolk
#Yolk是一个很好的软件包,提供有关环境中可用的所有软件包的信息。
安装Funkload是非常容易的事情:
pip install funkload
如果你的Mac没有gnuplot,你应该考虑安装它。它对Funkload创建的图形报告非常有用。
Macports是在Mac上管理这些软件包的好方法。还有其他的方法。
如果您已经安装了macports,那么可以执行以下操作来安装gnuplot。
sudo port install gnuplot
通过执行以下操作来测试您的安装
fl-install-demo
cd funkload-demo / xmlrpc /
make test
make bench
检查执行中的任何错误。报告应在
funkload-demo / xmlrpc / test_credential-XXXXXXXXXX / index.html
现在你可以准备好使用funkload了。
Windows安装
安装Python 2.7
安装Gnuplot
安装distutils(easy_install)
easy_install docutils
easy_install webunit
# 下载安装包 http://funkload.nuxeo.org/3dparty/tcpwatch-1.3.zip
# 解压并运行
python setup.py install
easy_install -f http://funkload.nuxeo.org/snapshots/ -U funkload
通用安装(所有系统)
某些部分是操作系统特定的:
1)监视器服务器仅在Linux上工作
2)认证服务器是一个unix守护进程,但是如果在调试模式下启动(可以使用startd而不是start)
在Windows下有安装docutils的方法(见下文),您也可以使用.py扩展名重命名脚本。
1、所需包
libexpat1(最近的操作系统不应该需要)
funkload 1.14.0需要python> = 2.5
只有当你想要启动python doctest,测试运行器才需要python 2.4,其他的东西可以使用python 2.3.5。python> = 2.5支持funkload> 1.6.0
python distutils
python xml
EasyInstall,使用软件包或下载ez_setup.py,并运行它:
cd /tmp
wget http://peak.telecommunity.com/dist/ez_setup.py
sudo python ez_setup.py
这将为你的Python版本下载并安装适当的setuptools egg。
2、可选包
为了避免破坏系统的Python模块和依赖关系,使用virtualenv来限制仅适用于FunkLoad是一个很好的做法。
比如Debian / Ubuntu的这里是如何使用virtualenv:
sudo aptitude install python-virtualenv
要使用FunkLoad> = 1.9.0:gnuplot 4.2生成图表,请使用包或访问http://www.gnuplot.info/网站。
gnuplot(或wgnuplot for win)必须在可执行路径中。
录制器使用TCPWatch,尚未使用easy_install:
cd / tmp
wget http://hathawaymix.org/Software/TCPWatch/tcpwatch-1.3.tar.gz
tar xzvf tcpwatch-1.3.tar.gz
cd tcpwatch
python setup.py build
sudo python setup.py install
3、不同的安装风格
1)安装最新的稳定包:
sudo easy_install -U funkload
这将安装FunkLoad,webunit和docutils等。
2)安装最新的快照版本:
sudo easy_install -f http://funkload.nuxeo.org/snapshots/ -U funkload
4、从源代码安装
你可以从源安装,通常用于测试/使用开发版本(可能不稳定)。
首先,为了避免破坏系统的Python模块和依赖关系,使用virtualenv限制仅适用于FunkLoad 的功能是一个好习惯。特别是如果你正在进行实验和开发。
如果你没有sudo权力,这种方法也很方便。
所以,让我们来安装一个专用于Funkload的virtualenv,让我们说〜/ opt:
mkdir --parent ~/opt
virtualenv ~/opt/funkload.virtualenv
. ~/opt/funkload.virtualenv/bin/activate
然后,你可以干净地构建和安装Funkload:
git clone git://github.com/nuxeo/FunkLoad.git
cd FunkLoad /
python setup.py build
python setup.py install
现在每次你想使用你构建的FunkLoad版本,你将必须指定要使用的virtualenv:
. ~/opt/funkload.virtualenv/bin/activate
fl-run-test --version
或者,可以执行以下操作来不使用virtualenv(已被警告):
git clone git://github.com/nuxeo/FunkLoad.git
cd FunkLoad/
python setup.py build
sudo python setup.py install
无网络访问的安装
从http://funkload.nuxeo.org/3dparty/ 上传所有文件放入一个目录:
mkdir -p /tmp/fl
cd /tmp/fl
wget -r -l1 -nd http://funkload.nuxeo.org/3dparty/
上传最新的FunkLoad安装包
# get setuptools package and untar
python setup.py install
easy_install docutils*
easy_install tcpwatch*
easy_install webunit*
easy_install funkload*
测试funkload安装是否成功
1、安装FunkLoad示例:
fl-install-demo
2、进入示例目录demo/xmlrpc,然后:
cd funkload-demo/xmlrpc/
make test
3、测试并生成报告:
make bench
常见安装问题及解决办法:
1、问题:error: invalid Python installation: unable to open /usr/lib/python2.4/config/Makefile (No such file or directory)
解决办法:安装 python2.4-dev 包。
2、easy_install发生冲突:
...
/usr/lib/site-python/docutils
Note: you can attempt this installation again with EasyInstall, and use
either the --delete-conflicting (-D) option or the
--ignore-conflicts-at-my-risk option, to either delete the above files
and directories, or to ignore the conflicts, respectively. Note that if
you ignore the conflicts, the installed package(s) may not work.
-------------------------------------------------------------------------
error: Installation aborted due to conflicts、
解决办法:如果以前安装了FunkLoad,webunit或docutils,而没有使用EasyInstall。你需要重新安装报,并使用--delete-conflictting选项引发冲突
如果仍然有冲突,请尝试从系统中删除FunkLoad:
easy_install -m funkload
rm -rf /usr/lib/python2.3/site-packages/funkload*
rm -rf / usr / local / funkload /
rm / usr / local / bin / fl- *
rm / usr / bin / fl - *
然后重新安装。
3、easy_install以下结束:
error: Unexpected HTML page found at
http://prdownloads.sourceforge.net...
解决办法:
Source Forge已经变更下载页面,需要更新 setuptools:
sudo easy_install -U setuptools
4、无法安装docutils 0.4 with easy_install 0.6a9,报下面错误:
...
Best match: docutils 0.4
Downloading http://prdownloads.sourceforge.net/docutils/docutils-0.4.tar.gz?download
Requesting redirect to (randomly selected) 'mesh' mirror
error: No META HTTP-EQUIV="refresh" found in Sourceforge page at http://prdownloads.sourceforge.net/docutils/docutils-0.4.tar.gz?use_mirror=mesh
解决办法:看起来sourceforge再次更改他们的下载页面
从http://prdownloads.sourceforge.net/docutils/docutils-0.4.tar.gz?download手动下载
然后sudo easy_install /path/to/docutils-0.4.tar.gz
5、当测试时make test返回:
### credentialctl: Stopping credential server.
python: can't open file '/usr/lib/python2.4/site-packages/funkload-1.2.0-py2.4.egg/funkload/credentialctl.py': [Errno 20] Not a directory
解决办法:
从FunkLoad 1.2.0开始脚本安装在/usr/bin中,以前它们在/usr/local/bin中,需要删除它们:
sudo rm /usr/local/bin/fl-*
6、当运行测试时收到下面错误信息:
Traceback (most recent call last):
File "/usr/local/bin/fl-run-test", line 8, in
load_entry_point('funkload==1.11.0', 'console_scripts', 'fl-run-test')()
File "build/bdist.linux-i686/egg/funkload/TestRunner.py", line 478, in main
File "build/bdist.linux-i686/egg/funkload/TestRunner.py", line 337, in __init__
File "build/bdist.linux-i686/egg/funkload/TestRunner.py", line 347, in loadTests
File "/usr/lib/python2.6/doctest.py", line 2412, in DocFileSuite
suite.addTest(DocFileTest(path, **kw))
File "/usr/lib/python2.6/doctest.py", line 2331, in DocFileTest
doc, path = _load_testfile(path, package, module_relative)
File "/usr/lib/python2.6/doctest.py", line 219, in _load_testfile
return open(filename).read(), filename
IOError: [Errno 2] No such file or directory: 'path/to/your/testcase'
解决办法:
这意味着你的测试文件无法作为python模块加载(可能是由于导入错误)FunkLoad,然后错误报告为无效的文档测试文件。
要查看原始错误,只需使用python而不是fl-run-test(python your_test_case.py)运行测试用例