问题:你如何理解性能测试在软件生命周期中的位置?

  宗刚:性能测试应该贯穿整个软件的生命周期,从需求到架构到迭代到上线再到运维都和性能测试息息相关。下图为借鉴了敏捷性能工程的思路整理出来的一个全生命周期性能管理图。

  主要分成4个大阶段:

  A、计划阶段:

  编写可测试的性能需求:详细说明可落地可测试的需求,而不是笼统的写着支持1.5亿的交易,支持1亿的用户。

  性能测试策略:需要提前考虑怎么进行性能测试,用什么工具?需要哪些培训等等 在产品代办列表里增加性能活动:由于性能测试一般实施周期比较长,建议单独成为一个列表项。

  B、架构评估:

  在系统架构阶段,在实现部分关键功能的情况下评估系统性能、容量、安全、可扩展性、稳定性等等是否满足系统设计的需要,我们常常缺少这个阶段的实践,等系统开发结束才进行,常常为时已晚。在系统规划时常常在缺少实际测试数据的时候拍脑袋规划硬件,出现“大马拉小车”的局面,架构评估的另一个作用是通过架构阶段的评估为规划提供数据支持。

  C、迭代阶段:

  系统不断的增加新特性、新需求,需要迭代验证系统的性能与容量

  D、运维阶段:

  研发人员常常觉得系统交给运维可以了,由于运维人员对应用本身不够清楚,所以常常是盲人摸象,抓不住根本。见过业务高峰期,运维人员看着CPU在往上涨,不知道应该怎么办,不清楚系统的容量点会在哪里出现,系统宕掉一台服务器会怎么样?多长时间能够恢复?到底能够支持多少的业务量?什么业务比较消耗时间?怎么优雅降级?在研发环境中,获得这些数据和手段都是比较容易的,运维人员是研发的第一个客户,应该多为他们考虑。

  上面介绍了整个生命周期性能的管理,从广度角度讲。那么从深度角度讲,性能管理应该包括:性能测试、性能优化和性能建模容量规划。

  性能测试:验证系统性能是否满足需求。

  性能优化:优化性能瓶颈,提升系统处理能力,测试和优化会有若干次的迭代。性能建模容量规划:生产环境可能出现各种场景,应该怎么预测与预防。

  如果比喻整个过程为病人看病,那么性能测试是体检,性能优化是对病下药,性能建模容量规划是保健。

  由于系统总在变化,新业务、扩容、软硬件版本升级等等,所以需要不断的迭代,如下图: