上一篇文章聊到了性能测试最基本的三个术语:并发、TPS、响应时间,并且以高速收费站的故事为例,详细的分析了这三个术语在实际的应用实践中该如何理解,以及三者之间的关系。
这篇文章是性能测试基础知识科普的第二篇,我想聊聊在实际工作中,性能测试最常见的一些测试策略。
在聊测试策略之前,很有必要聊聊性能测试的目的,或者性能测试的本质是要做什么,解决什么问题。只有想明白这点,后面的需求分析、工具选型、制定测试策略才能更好的开展。
在实际的软件研发测试交付过程中,对测试同学来说,除了要验证功能的正确性之外,系统的性能表现也是很重要的一项工作内容。简单理解就是用户在使用系统提供的服务时,除了功能不出错,还要尽可能支持更多的人用系统提供的服务。功能的正确性是基本盘,更好的性能具有更大的附加值。
软件系统是运行在服务器上面的,服务器的底层是硬件资源和网络,从另一个角度来看摩尔定律的话,就是硬件的配置越高越好,原则上能提供更好的性能。当然,软件的性能还与其最初的设计和构建有很大的关系。因此,性能测试的本质是什么?
基于上述两点,再看下面这张图:
上图列举了常见的影响软件性能的一些因素和例子,对于性能测试来说,就是针对上述的这些因素,去设计对应的测试策略,验证是否存在相关的影响软件性能的因素。
很多网上的文章或者技术专栏抑或技术书籍,告诉了我们很多的测试策略名词,比如并发测试/负载测试/极限测试/配置测试/容量测试/浪涌测试/高可用测试/容错恢复测试。这些理论知识容易让小白云里雾里,不知道什么情况该用什么策略。
当然,这些理论都没问题,但理论和实践之间存在一个巨大的鸿沟,那就是如何让理论成为自己的理论,这需要大量的实践思考和总结。我曾经也写过这种理论性很强的文章,现在回头看确实有点贻笑大方。
新手小白最需要的是什么?我一直思考这个问题。现在回头看,他们最需要的是能以他们可以理解的方式一步步走入实践的方法,或者说理论切入实践的路径。
还是以实际工作的场景来谈常用的测试策略,其中最关键的就是2点:如何设置脚本并发和测试数据。下面是一些常见的工作案例,我会先介绍案例,然后举例说明测试策略。
案例名称 | 脚本并发策略/测试数据策略 | 服务配置/并发推荐数值 |
---|---|---|
新服务上线 | 梯度递增压力/参数化 | 4C8G/20-100 |
性能优化验证 | 梯度递增压力/参数化 | 4C8G/10-40 |
负载均衡验证 | 梯度递增压力/参数化 | 4C8G/10-60 |
参数配置调整验证 | 恒定并发压力/参数化 | 4C8G/固定数值 |
业务/技术逻辑调整验证 | 恒定并发压力/参数化 | 4C8G/固定数值 |
一些经验之谈:
以上就是关于性能测试常见测试策略的内容,下篇文章,聊聊压测工具的选型和使用。