有没有针对软件可扩展性测试的明确模式?

5
我最近对软件可扩展性测试中的模式识别产生了浓厚兴趣。由于不同软件解决方案的变化性,似乎有正好与设计和实现软件一样多的解决可扩展性测试软件问题的良好方法。对我而言,这意味着我们可以可能提炼出一些广泛使用的此类测试的模式。为了消除歧义,我预先说明,我正在使用wikipedia definition的可扩展性测试定义。我最感兴趣的是提出具有彻底描述的特定模式名称的答案。
2个回答

4
我所了解的所有测试方案都使用相同的基本结构进行测试,其中涉及在一个或多个请求者上生成一定数量的请求,以便测试处理代理。 Kurt 的回答是这个过程的一个很好的例子。通常你会运行测试来查找一些阈值,并且还会运行一些替代配置(较少的节点、不同的硬件等)来建立准确的平均数据。
请求者可以是机器、网络卡、特定软件或软件中的线程,其作用只是生成可以被某种方式处理的请求。
处理代理是实际处理请求并返回结果的软件、网络卡、机器。
然而,你对结果的处理决定了你正在进行的测试类型,它们是: 负载/性能测试:这是最常见的测试类型。处理结果的方式是查看在各种级别或各种配置下处理了多少。再次,上面 Kurt 所寻找的就是这种类型的一个例子。 平衡测试:在扩展方面的常见做法是使用负载均衡代理将请求定向到处理代理。与负载测试相同,设置相同,但目标是检查请求分布。在某些情况下,您需要确保在处理代理之间实现平均(或尽可能接近可接受水平)的请求平衡,在其他情况下,您需要确保处理特定请求者的第一个请求的处理代理处理所有后续请求(Web 农场通常需要这样做)。

数据安全性:通过此测试收集结果并比较数据。在这里要查找的是锁定问题(例如 SQL 死锁),它会阻止写入或数据更改是否以可接受的时间或更短的时间复制到您正在使用的各个节点或存储库中。

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

我还建议阅读 容量规划艺术 这本关于此主题的优秀书籍。


罗伯特,我同意库尔特的答案是如何通常进行可扩展性测试的典型方式。你的答案更符合我期望的方向。 - Paul Morie

2
我可以在Robert提到的测试类型中再添加一种:浸泡测试。您选择一个适当的重负载测试,并运行一段时间 - 如果您的性能测试通常持续一个小时,则运行它一整夜,一整天或一整周。您要监控正确性和性能。其想法是检测随着时间推移而慢慢积累的任何问题:例如内存泄漏、堆积、偶发死锁、需要重建索引等。
这是一种不同的可扩展性,但同样重要。当您的系统离开开发商并投入使用时,它不仅会“水平”地变得更大,即增加更多的负载和资源,而且也会在时间维度上变得更大:它将在生产机器上连续运行数周、数月或数年,在开发过程中没有这样做过。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接