是否有很好的软件可扩展性测试模式? [英] Are there well-identified patterns for software scalability testing?

查看:347
本文介绍了是否有很好的软件可扩展性测试模式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我最近对识别软件可扩展性测试的模式感兴趣。由于不同软件解决方案的不同性质,似乎有像可扩展性测试软件的问题一样多的好解决方案,就像设计和实现软件一样。对我来说,这意味着我们可能会为广泛使用的这种类型的测试提供一些模式。



为了消除歧义,我会提前说我正在使用可扩展性测试的维基百科定义



我最感兴趣的是提供特定模式名称的详细说明。

解决方案

所有的测试情景我知道使用相同的测试基础结构,涉及到一个或多个请求者生成一些针对待测试处理代理的请求者。 Kurt 的答案是这个过程的一个很好的例子。通常,您将运行测试以找到一些阈值,并且还可以运行一些备用配置(较少的节点,不同的硬件等)来建立准确的平均数据。



请求者可以是生成请求的软件中的机器,网卡,特定软件或线程。它所做的只是生成一个可以以某种方式处理的请求。



处理代理是实际处理请求并返回结果的软件,网卡,机器。



但是,使用结果做出的决定将决定您正在做的测试类型,它们是:



加载/性能测试:这是最常见的一个在使用。处理结果是查看在各种级别或各种配置中处理的数量。再次,Kurt上面寻找的是一个例子,如果这样。



平衡测试:缩放的常见做法是使用负载平衡代理其将请求引导到加工代理。设置与负载测试相同,但目标是检查请求的分发。在某些情况下,您需要确保实现跨处理代理的均衡(或接近可接受)的请求平衡,而在其他情况下,您需要确保处理特定请求者的第一个请求的进程代理处理所有后续请求(通常需要这样的网络农场)。



数据安全:通过此测试,收集结果,数据为相比较。您正在寻找的是锁定问题(例如SQL死锁),可防止写入或将数据更改复制到可接受的时间内使用的各种节点或存储库。



边界测试:这与加载测试类似,但目标不是处理性能,而是存储多少效果效果。例如,如果您有一个数据库,那么在I / O性能下降到可接受的水平之前,您可以拥有多少行/表/列。



我还建议能力规划的艺术作为这个主题的一本很好的书。


I've recently become quite interested in identifying patterns for software scalability testing. Due to the variable nature of different software solutions, it seems to like there are as many good solutions to the problem of scalability testing software as there are to designing and implementing software. To me, that means that we can probably distill some patterns for this type of testing that are widely used.

For the purposes of eliminating ambiguity, I'll say in advance that I'm using the wikipedia definition of scalability testing.

I'm most interested in answers proposing specific pattern names with thorough descriptions.

解决方案

All the testing scenarios I am aware of use the same basic structure for the test which involves generating a number of requests on one or more requesters targeted at the processing agent to be tested. Kurt's answer is an excellent example of this process. Generally you will run the tests to find some thresholds and also run some alternative configurations (less nodes, different hardware etc...) to build up an accurate averaged data.

A requester can be a machine, network card, specific software or thread in software that generates the requests. All it does is generate a request that can be processed in some way.

A processing agent is the software, network card, machine that actually processes the request and returns a result.

However what you do with the results determines the type of test you are doing and they are:

Load/Performance Testing: This is the most common one in use. The results are processed is to see how much is processed at various levels or in various configurations. Again what Kurt is looking for above is an example if this.

Balance Testing: A common practice in scaling is to use a load balancing agent which directs requests to a process agent. The setup is the same as for Load Testing, but the goal is to check distribution of requests. In some scenarios you need to make sure that an even (or as close to as is acceptable) balance of requests across processing agents is achieved and in other scenarios you need to make sure that the process agent that handled the first request for a specific requester handles all subsequent requests (web farms are commonly needed like this).

Data Safety: With this test the results are collected and the data is compared. What you are looking for here is locking issues (such as a SQL deadlock) which prevents writes or that data changes are replicated to the various nodes or repositories you have in use in an acceptable time or less.

Boundary Testing: This is similar to load testing except the goal is not processing performance but how much is stored effects performance. For example if you have a database how many rows/tables/columns can you have before the I/O performance drops below acceptable levels.

I would also recommend The Art of Capacity Planning as an excellent book on the subject.

这篇关于是否有很好的软件可扩展性测试模式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆