如何严格测试网站?

时间:2010-04-01 08:04:59

标签: php performance unit-testing security

如何严格测试网站的安全性和速度?

有哪些方法和工具?

我们可以模仿数百名访问该网站的虚拟用户来查看其负载处理吗?

9 个答案:

答案 0 :(得分:6)

我建议你阅读这篇文章,我每次构建一个动态网站时都会查看它非常有用。

https://stackoverflow.com/questions/72394/what-should-a-developer-know-before-building-a-public-web-site#answer-305381

编辑:

http://jmeter.apache.org/

Apache JMeter是一个开源软件,是一个100%纯Java桌面应用程序,旨在加载测试功能行为和测量性能。 It was originally designed for testing Web Applications but has since expanded to other test functions.

答案 1 :(得分:5)

如果这应该是压力测试,请尝试http://freshmeat.net/projects/siege/

  

Siege是一种回归测试和基准测试工具。它可以使用用户定义数量的模拟用户对单个URL进行压力测试,也可以将许多URL读入内存并同时强调它们。该程序报告记录的命中总数,传输的字节数,响应时间,并发性和返回状态。 Siege支持HTTP / 1.0和1.1协议,GET和POST指令,cookie,事务日志记录和基本身份验证。其功能可根据每个用户进行配置。

http://httpd.apache.org/docs/1.3/programs/ab.html

  

ab是一个用于对Apache性能进行基准测试的工具        超文本传输​​协议(HTTP)服务器。它通过这样做        告诉您每秒有多少请求        你的Apache安装可以服务。

要测试您的PHP代码,请使用PHPUnit。要测试您的前端,请使用Selenium

对于安全测试,我强烈建议您购买审核并将其留给专门的专家。有太多可能的攻击向量超出了您的应用程序代码。

答案 2 :(得分:4)

我想扩展一些建议,因为我做了很多。

Siege是一个伟大的理智检查器,它具有真正的低入门门槛。它是Ubuntu和其他软件包中的标准软件包,只需要运行命令行参数。因此,您可以尽可能地(甚至不敢)看到您的网站,以查看其中的突破点。我的经验是很少有Web服务器以线性方式降级。随着负载的增加,它们会慢一点,然后慢一点,然后BAM你的加载时间会跳到20秒。知道何时发生这种情况可以让您了解需要担心多少以及是否需要完成任务。如果你在500多个并发用户之前没有碰壁,那么你有一些余地。

但请注意,围攻更多的是测试您的网络服务器而不是您的网站。

正如前面提到的同一张海报Selenium是一个很好的工具,但是,期望投入一些时间。实际上,您可以使用Selenium IDE弹出一些测试,并在Selenium RC下的浏览器中作为HTTP套件运行它们,而无需编写脚本(尽管您希望这样做)。这种方法的优缺点在于它为真正的浏览器提供动力,因此仅在一台机器上运行测试将无法获得真实世界的结果,因为您的机器无法跟上。你需要运行并设置SRC和Selenium Grid可能是一项艰巨的任务,但如果这是你将要一次又一次地做的事情,那么完全值得,特别是如果你有一点VM知识。

创建Selenium的人现在提供基于云的商业RC,它运行所有标准浏览器并捕获会话视频(您可以关闭以进行性能测试)。它位于http://saucelabs.com,无论是进行负载测试,还是对所有浏览器进行免费的快速测试都很棒。 (我仍然在本地运行功能测试)。再次,它是成本,但它是合理的。

我更多地说明这一点,因为你的第一点是“大力”测试你的网站,我认为这意味着测试所有功能,而不仅仅是用大量的能量进行测试。

除了编写全面的测试之外,我不知道任何神奇的子弹(这是你通常会编写脚本的地方,因为很多东西都可以重复使用,例如填写表格)。

最后一件事是,在你启动它之前,如果你没有可用性程序,让一些非程序员/网络人员使用它并观察它们并要求它们做各种“任务”(注册)找到一些东西,没有“点击”的声音)这听起来像是可用性测试但是为时已晚,但你会惊讶于那些不认为你的人会在你的代码中发现错误。这应该有希望开辟你尚未测试过的领域的新视野。

我还没有为网络应用找到“覆盖”工具。如果有的话,我很乐意听到它。

答案 3 :(得分:3)

另外,我会提到Tsung

从他们的介绍中删除:

  

Tsung是一个开源的多协议   分布式负载测试工具

     

它可以用来强调HTTP,WebDAV,   SOAP,PostgreSQL,MySQL,LDAP和   Jabber / XMPP服务器。 Tsung(原名   被称为IDX-Tsunami)是免费的   根据GPLv2发布的软件   许可证。

     

Tsung的目的是模拟   用户为了测试可伸缩性   和基于IP的性能   客户/服务器应用程序您可以   用它来做负荷和压力测试   你的服务器许多协议都有   已经实施和测试,它   可以很容易地扩展。 WebDAV,LDAP   和MySQL支持已添加   最近(实验性的)。

     

它可以分布在几个上   客户端机器并且能够   模拟成千上万的   虚拟用户同时(甚至   数百万,如果你有足够的硬件   ...)。

     

Tsung是在Erlang开发的   爱立信制作的开源语言   用于构建强大的容错   分布式应用程序。

     

Tsung得到了Process-One的支持

答案 4 :(得分:2)

您可以使用WEBLOAD。它是负载测试的工具.. 转到www.webload.com

答案 5 :(得分:2)

你检查过apachebenchmark吗?

http://httpd.apache.org/docs/1.3/programs/ab.html

它可用于测试如何处理加载和并发连接

答案 6 :(得分:1)

您可以尝试使用Google Skipfish。它是一个安全扫描程序,但它会偶然地为您的网站生成大量请求。

答案 7 :(得分:1)

登上slashdot的头版

答案 8 :(得分:1)

http://seleniumhq.org/是要寻找的技术。

来自其网站的引言:

  

Selenium是一套强大的工具   支持快速开发测试   基于Web的应用程序的自动化。   Selenium提供丰富的   测试功能专门适应   满足测试网络的需要   应用。这些操作是   高度灵活,允许多种选择   用于定位UI元素和比较   对实际的预期测试结果   应用行为。

     

Selenium的主要功能之一是   支持执行一个人的测试   多个浏览器平台。

最重要的部分可能是: Selenium-RC(遥控器)

  

Selenium-RC允许测试自动化   开发人员使用编程   语言最大的灵活性和   开发测试的可扩展性   逻辑。例如,如果   被测试的申请返回a   结果集,如果是自动测试   程序需要对每个程序运行测试   结果集中的元素,   编程语言的迭代   支持可用于迭代   结果集,调用Selenium   用于对每个项目运行测试的命令。

     

Selenium-RC提供API   (应用程序接口)   和每个支持的库   语言:HTML,Java,C#,Perl,PHP,   Python和Ruby。这种使用能力   Selenium-RC具有高级别   编程语言开发测试   案例也允许自动化   测试与...集成   项目的自动构建环境。