【问题标题】:How to rigorously test a site?如何严格测试网站?
【发布时间】:2011-02-03 06:39:15
【问题描述】:

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

有什么方法和工具?

我们能否模拟数百个访问该站点的虚拟用户来查看其负载处理情况?

【问题讨论】:

标签: php performance unit-testing security


【解决方案1】:

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

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.

【讨论】:

    【解决方案2】:

    由于我经常这样做,因此我想扩展一些建议。

    Siege 是一个很棒的理智检查工具,而且它的进入门槛非常低。它是 Ubuntu 和其他系统中的标准包,只需要命令行参数即可运行。因此,您可以随心所欲地(或敢于)猛烈抨击您的网站,以查看断点在哪里。我的经验是很少有网络服务器以线性方式降级。随着负载的增加,它们会变慢一点,然后再慢一点,然后 BAM 你的加载时间会跳到 20 秒。知道什么时候发生这种情况可以让你知道有多少担心以及是否需要做一些事情。如果您在 500 多个并发用户之前不碰壁,那么您还有一些余地。

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

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

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

    我详细说明这一点,因为您的第一点是“大力”测试您的网站,我假设这意味着测试所有功能,而不仅仅是用大量精力测试它。

    除了编写彻底的测试之外,我不知道任何灵丹妙药(这是您通常进入脚本的地方,因为很多东西都可以重复使用,例如填写表格)。

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

    我还没有找到适用于网络应用程序的“覆盖”工具。如果有的话,但我很想听听。

    【讨论】:

      【解决方案3】:

      你检查过 apachebenchmark 了吗?

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

      这对于测试如何处理负载和并发连接很有用

      【讨论】:

        【解决方案4】:

        另外,我想提一下Tsung

        Reding 来自他们的介绍:

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

        可用于强调HTTP、WebDAV、 SOAP、PostgreSQL、MySQL、LDAP 和 Jabber/XMPP 服务器。宗(原 称为 IDX-海啸)是免费的 在 GPLv2 下发布的软件 许可证。

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

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

        Tsung 是用 Erlang 开发的,一个 爱立信开发的开源语言 用于构建健壮的容错 分布式应用程序。

        Tsung 受 Process-One 支持

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

            来自他们网站的引述:

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

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

            最重要的部分可能是: Selenium-RC(远程控制)

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

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

            【讨论】:

              【解决方案7】:

              如果这只是压力测试,请尝试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

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

              【讨论】:

              • @Gordon:+1,谢谢,很高兴了解这些工具,谢谢
              • 比起 Selenium,我更喜欢 Celerity。它确实要求您知道如何编写 Ruby,但是一旦您知道,它就是一个很棒的前端测试框架。
              【解决方案8】:

              你可以试试谷歌的Skipfish。它是一个安全扫描器,但它会偶然向您的站点生成大量请求。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-05-22
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多