代码之家  ›  专栏  ›  技术社区  ›  Sarfraz

如何严格测试网站?

  •  9
  • Sarfraz  · 技术社区  · 16 年前

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

    有什么方法和工具?

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

    9 回复  |  直到 9 年前
        1
  •  5
  •   Gordon Haim Evgi    16 年前

    如果这只是一个压力测试,试试 http://freshmeat.net/projects/siege/

    围城是一个回归测试和基准实用程序。它可以使用用户定义的模拟用户数对单个url进行压力测试,也可以将多个url读入内存并同时对它们进行压力测试。程序报告记录的点击总数、传输的字节数、响应时间、并发性和返回状态。siege支持http/1.0和1.1协议、get和post指令、cookies、事务日志记录和基本身份验证。它的功能可以根据每个用户进行配置。

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

    ab是一个基准测试apache性能的工具 超文本传输协议(http)服务器。它通过 告诉你每秒有多少请求 您的apache安装可以提供服务。

    要测试php代码,请使用 PHPUnit . 要测试前端,请使用 Selenium .

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

        2
  •  6
  •   Community Mohan Dere    8 年前

    我建议你阅读这篇文章,它非常有用我检查我的动态网站每次我建立一个。

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

    编辑:

    http://jmeter.apache.org/

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

        3
  •  4
  •   zenWeasel    15 年前

    既然我经常这么做,我想再多提几点建议。

    围城是一个非常明智的检查,它有一个真正的低门槛进入。它是ubuntu和其他软件中的一个标准包,只需要运行命令行参数。所以你可以使出你所想(或敢于)的力气猛击你的网站,看看它的突破点在哪里。我的经验是,很少有Web服务器以线性方式降级。随着负载的增加,它们会变慢一点,然后变慢一点,然后砰的一声,您的负载时间会跳到20秒。知道什么时候发生会让你知道要担心多少,是否需要做一些事情。如果你在500多个并发用户之前都没有成功,那么你就有了一些回旋余地。

    但是请注意,围城实际上更多的是测试您的web服务器,而不是您的web站点。

    正如前面提到的一样,硒是一个很好的工具,但是,希望能投入一些时间。实际上,您可以使用selenium ide弹出一些测试,并在浏览器中以selenium rc作为http套件运行它们,而无需编写脚本(尽管您希望这样做)。这种方法的优点和缺点都是它为真正的浏览器提供了动力,因此仅在一台计算机上运行测试不会得到真实的结果,因为您的计算机无法跟上。您需要运行和设置src和selenium网格可能是一项艰巨的任务,但如果这是您将一次又一次地做的事情,特别是如果您有一点vm知识,则完全值得这样做。

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

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

    除了编写彻底的测试之外,我不知道这方面有什么妙招(因为很多东西都可以重复使用,比如填写表单,所以通常在这里编写脚本)。

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

    我还没有找到一个网络应用的“覆盖”工具。如果有,但我很想听听。

        4
  •  3
  •   Roberto Aloi    16 年前

    另外,我要提到 Tsung .

    根据他们的介绍:

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

    它可以用来强调http,webdav, soap、postgresql、mysql、ldap和 Jabber/XMPP服务器。Tsung(以前 被称为idx海啸)是免费的 GPLV2下发布的软件 许可证。

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

    它可以分布在几个 客户机能够 模拟数十万 同时(甚至)虚拟用户 如果你有足够的硬件 ……)

    Tsung在安大略省的二郎市开发 爱立信的开源语言 用于构建健壮的容错 分布式应用程序。

    Tsung由进程1支持

        5
  •  2
  •   Prashant Dubey    16 年前

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

        6
  •  2
  •   imightbeinatree at Cloudspace    16 年前

    你签过ApacheBenchmark吗?

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

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

        7
  •  1
  •   Alex Korban    16 年前

    你可以试试谷歌的 Skipfish . 这是一个安全扫描器,但它会顺便生成相当多的请求到您的网站。

        8
  •  1
  •   unlobito    16 年前

    上Slashdot的头版

        9
  •  1
  •   Andrei Ciobanu    16 年前

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

    引用他们的网站:

    selenium是一组健壮的工具 支持测试的快速发展 基于web的应用程序的自动化。 硒提供了丰富的 专门测试功能 满足web测试的需要 申请。这些操作是 高度灵活,允许多种选择 用于定位ui元素和比较 预期测试结果与实际测试结果对比 应用程序行为。

    硒的主要特征之一是 支持在上执行一个测试 多个浏览器平台。

    最重要的部分可能是: 硒RC(遥控)

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

    selenium rc提供了一个api (应用程序编程接口) 以及每个支持的 语言:HTML,Java,C语言,Perl,PHP, 巨蟒和鲁比。这种使用能力 高水平硒RC 测试开发语言 案例还允许 测试与 项目自动化构建环境。