Web服务处于分布式计算的核心位置,它们之间的交互通常很难测试。分布式开发、大型的开发者团队以及对代码日益组件化的期望都有可能使 Web服务的开发变得越来越容易隐藏错误。本文是一篇进行Web网站压力测试教程。

Web网站压力测验进程中的过错极难检测出来。压力测验是检测这类代码过错的一种有用办法,可是只需在压力体系规划得比较有用的状况下 才干发挥作用。本文将让您深化了解一下这种压力体系的根本要求。

进行Web网站压力测验教程详解(web压力测试方法)  Web网站压力测试 第1张

Web网站压力测验教程

传统的测验办法包含某种办法的简略 单元测验 ,一般由开发人员履行。规划这些测验需求了解软件的内部常识,而且这些测验简直总是针对产品的十分小的、特定的部分。这些类型的测验十分合适与其他代码组件很少交互,乃至没有交互的简略 Web 服务。

功用验证(Functional Verification)也 是一种测验进程,在这个进程中,对产品源代码了解有限的规划者进行测验以承认产品或服务的中心功用。规划这种测验是为了证明这个中心功用契合某个标准。举 个比方,我的在线拍卖显现的是输入的正确出价吗? 我的稳妥经纪人体系找到***的报价了吗?假如这些测验失利,一般就意味着检测到了产品的一个根本问题(这个问题一般是能够直接修正)。这种测验也是合适 简略的 Web 服务,使您能够查看服务是否能够正确履行它的各个功用。

体系测验(System Test)一般是在功用验 证阶段完结,验证了中心功用后进行。它倾向于把整个体系作为一个全体来查找问题 — 澄清 Web 服务作为体系的一部分怎样运作,以及 Web 服务相互之间怎样交互。因为体系测验是在开产生命周期快结束时才进行,所以一般不能给它分配满足的时刻来完结。又因为严重的发行日程安排以及开发的各个重 要阶段的后移,体系测验阶段常常被疏忽,而且一些一般都能够发现的、罕见的过错都不能被检测到。即便发现了这种过错,这时也来不及确认过错的原因并设法修 复它们了。因而,在查找代码过错时,必需把体系测验运用规划得尽或许高效。体系测验一般由三部分组成,它们是:

功用(Performance):这触及到确认相关的产品统计数据的进程。例如:每秒有多少条音讯?一个服务可一同承受多少个用户?

事例(Scenario):这是从头创立客户所需的切当装备的进程。因而在事例中发现的任何问题都能够在客户运用该产品之前被检测出来。

压力(或称作业负载平衡):它 与另两个部分不同,因为它被规划为经过运用很大的作业负载来使软件超负荷运转。假如压力测验经过对产品坚持高强度的运用(但不逾越功用统计数字确认的限 制)能有用地履行,那么它就常常能够发现许多荫蔽的过错,而这些过错用上面说到的任何其他技能都是发现不了的(这些过错也常常是最难修正的)。

从检测代码过错这方面来说,能够证明这三个体系测验组件中功率***的是 压力测验 部分。但因为这个进程常常跟体系的其他要素或功用测验混杂在一同,所以这个进程触及到的办法还没有被正确着手处理或完结。
压力下的过错

运用压力测验,您有期望找到很多种用其他测验办法更难发现的过错。有两种过错类型是:

内存走漏(Memory leak): 一种极难检测的现象。内存走漏常常产生在已发行的产品中,原因很简略,很难规划测验 用例来检测它们。运用简略的功用测验,简直发现不了内存走漏问题,因为在产品完结之前测验没对产品进行满足多的运用。内存走漏一般要求操作要重复十分多的 次数以使内存耗费到达能引起留意的程度。虽然与其它编程言语(如 C/C++)比较,Java 程序更难引进内存走漏过错,但只需程序仍坚持着对目标的引证,该目标仍有或许被实例化而且它占用的内存永久不会被开释。

并发与同步(Concurrency and Synchronization):压力测验在查找并发性问题上十分拔尖,这是因为在任何一个测验生命周期中,它都运用了许多不同的代码途径和守时条件。一般的规则是,压力测验运转的时刻越 长,触及并运用的代码途径组合和守时条件就越多。当然,这也确实使得这些问题很难再现(过错能够在 5 分钟或 5 天后产生)。死锁、线程走漏以及任何一般的同步问题一般只能在压力测验阶段被检测出来。这些类型的问题很难经过履行单元测验来发现。开发人员不会一向考虑 他或她的代码将与其他地方的代码(在履行单元测验时这些代码或许还没写出来)进行交互。

现有的压力测验东西

有许多宣称能够对 产品进行压力测验的可用东西现在正在开发中。被广泛运用的是针对 Web 服务的那些东西。可是,这些东西中有许多只是简略的 HTML/SOAP 生成器,它们模仿许多客户机衔接,并因而对 Web 服务器生成高负载(这关于查找 Web 服务器的问题很有用,但关于查找 Web 服务的问题就没那么有用了)。这些东西对根本的压力测验比较有用,但它们常常是只是扩展功用验证阶段来重复地履行相同的功用使命。假如满足的时刻和资源可 用,就能够经过创立定制构建的压力测验体系来完结更有用的测验。因为压力体系的规划者一般对要测验的产品和 Web 服务有更多的了解,所以他们将能够确保压力体系能够用于哪些具体的代码区域。

规划压力运用

规划企图对 Web 服务进行压力测验的压力测验体系时,要让它们以某种特定的办法运转代码。这些风格逾越了功用验证,意图是要澄清楚被测验的 Web 服务是不是不只能做咱们以为它能做的事,而且在被施加了某些高强度压力的状况下依然持续正常运转。压力测验有必要对 Web 服务运用四个根本条件。许多已树立的压力体系运用了这些条件。有用的压力测验体系将运用以下这些要害条件:

重复(Repetition): 或 许最显着的且最简略了解的压力条件便是测验的重复。换句话说,测验的重复便是一遍又一遍地履行某个操作或功用,比方重复调用一个 Web 服务。功用验证测验能够用来被澄清楚一个操作能否正常履行。而压力测验将确认一个操作能否正常履行,而且能否持续在每次履行时都正常。这关于揣度一个产品 是否适用于某种出产状况至关重要。客户一般会重复运用产品,因而压力测验应该在客户之前发现代码过错。许多最简略的压力体系只完结这一个条件,但简略地扩 展功用验证测验来屡次重复并不能构成一个有用的压力测验。当与下面的一些准则结合起来运用时,重复就能够发现许多荫蔽的代码过错。

并发(Concurrency):并 发是一同履行多个操作的行为。换句话说,便是在同一时刻履行多个测验,例如在同一个服务器上一同调用许多 Web 服务。这个准则不一定适用于一切的产品(比方无状况服务),可是大都软件都具有某个并发行为或多线程行为元素,这一点只能经过履行多个代码示例才干测出 来。功用测验或单元测验简直不会与任何并发规划结合。压力体系有必要逾越功用测验,要一同遍历多条代码途径。至于怎样做到这一点取决于具体的产品。例如,一 个 Web 服务压力测验需求一次模仿多个客户机。Web 服务(或许任何多线程代码)一般会拜访多个线程实例间的一些同享数据。因额定方面的编程而添加的复杂性一般意味着代码会具有许多因并发引起的过错。因为引 入并发性意味着一个线程中的代码有或许被其他线程中的代码中止,所以过错只在一个指令集以特定的次序(例如以特定的守时条件)履行时才会被发现。把这个原 则与重复准则结合在一同,您能够运用许多代码途径 和 守时条件。

量级(Magnitude):压力体系应该运用于产品的另一个条件考虑到了每个操作中的负载量。压力测验能够重复履行一个操作,可是操作本身也要尽量给产品添加担负。例如,一个Web服务答应客户机输入一条音讯,您能够经过模仿输入超长音讯的客户机来使这个独自的操作进行高强度的运用。换句话说便是,您添加了这个操作的量级。这个量级 总是特定于运用的,可是能够经过查找产品的可被用户计量和修正的值来确认它—例如,数据的巨细、推迟的长度、资金数量的搬运、输入速度以及输入的改动等等。独自的高强度操作本身或许发现不了代码过错(或许仅能发现功用上的缺点), 但与其他压力准则结合在一同时,您将能够添加发现问题的时机。

随机改动:***一点,任何压力体系都多多 极少具有一些随机性。假如您随机运用前面的压力准则中介绍的很多改动办法,您就能够在每次测验运转时运用许多不同的代码途径。下面是几个关于怎样在测验生 命周期内改动测验的示例。运用重复时,在从头启动或从头衔接服务之前,您能够改动重复操作间的时刻距离、重复的次数,或许也能够改动被重复的 Web 服务的次序。运用并发,您能够改动一同履行的 Web 服务、同一时刻运转的 Web 服务数目,或许也能够改动关所以运转许多不同的服务仍是运转许多相同的实例的决议。量级或许是最简略更改的 — 每次重复测验时都能够更改运用程序中呈现的变量(例如,发送各种巨细的音讯或数字输入值)。假如测验彻底随机的话,因为很难一致地重现压力下的过错,所以 一些体系运用根据一个固定随机种子的随机改动。这样,用同一个种子,重现过错的时机就会更大。

一个压力测验一般会结合上述的所 有准则,而且在答应的规模内尽或许长时刻地运转。测验被答应的履行时刻越长,就能够遍历越多的代码途径,而且发现的过错也越多。当然,一旦找到过错就有必要 确诊并修正它。因为一个代码过错能够在压力测验运转多日今后自己显现出来,所以体系有必要确保当呈现过错时一切可用的调试信息都被生成 — 不然或许就有必要花费相同多的时刻来重现这个过错。

Web网站压力测验教程结束语

测验是软件开发进程中至关重要 的部分,而且一个重要的、常常被误解或疏忽的部分是压力测验。遵从上面具体阐明的准则,您就能够规划并完结有用的压力测验体系,用来查找一些与您的代码相 关的、比较荫蔽的问题。无论是使用预先写好的东西,仍是创立一个彻底专用的压力体系,压力测验都是用于查找 Web 服务(或其他任何程序)问题的实质办法,并能终究进步您的软件产品质量。

【修改引荐】

  1. JSP Web开发技能的优势与技能难点剖析
  2. 装置和装备Web服务器和JSP引擎
  3. Web开发须知JSP技能
  4. JSP变量在标准中称作规模变量
  5. 详解JSP技能的办法
转载请说明出处
知优网 » 进行Web网站压力测验教程详解(web压力测试方法)

发表评论

您需要后才能发表评论