靓汤:这是我第一次使用涂鸦的方式写文章,请允许我,感谢梅子引路。另外本系列Chat希望通过由浅入深的方式带大家认识性能测试。一些调优和测试方法会在后面的Chat同样以涂鸦的方式展示给大家。后面三场会重点介绍如何进行性能测试,从需求到最后的调优。第一场主要希望没有接触过或接触过但认识不全的同学带去一些思考。比如红亮灯那个涂鸦就是做了些与目标不一致的事情。这是大家测试中常常犯的错,所以我希望是接触到的同学能抓住要点,即目标为导向,不去做一些看起来是性能测试的性能测试。另外针对大家提出的意见我希望在后面的Chat中,好好去完善。感谢。
问:性能测试最好什么时候开始更好?需求阶段、设计阶段、还是测试阶段?
答:有些同事在测试几轮之后,功能稳定了开始介入性能测试,这时才发现性能根本支撑不了预期值。这个时候开发再回头进行系统调优,如果事先选的架构能支撑就好,如果不能达不到预期值,后面讨论或者请教高手发现原先的架构缺陷,再调整架构代价就非常大。基本导致前期的功能测试成果作废。其实各个阶段都有事情做。需求阶段可以整理,评审出性能需求,评审需求可行性时就考虑好数据量和用户量。设计阶段--对预估的需求做设计,举个例子。背景:我们现在使用的是mysql数据库(公司去oracle化),我们要从一个5000W的一个数据表的6个不同查询维度查询数据,比如说城市、行业、地址类型、爱好、性别、时间范围。这样对于mysql的查询常见的优化设计可能是分表、建立索引,但,对于这个场景就不好处理了。数据耦合强,没有办法分表。索引,组合索引太多。后面的处理办法是用mongodb、nosql的方法解决。对于编码和测试阶段可以这样去分不同阶段做不同事情。
编码阶段,可以提出需要,让研发通过单元测试(开多线程)的方式进行压力测试。进行一些单元压力测试测试阶段---测试阶段也有策略的,建议先做一下单一场景单一用户的性能测试。常常会遇到有些同事在没有压单个场景的情况下,就进行负载测试,到处定位瓶颈,最后发现单一用户单一场景都是问题。这就是绕了一圈回到了起点。对于不同类别测试后面会专门的chat介绍。
原文转自:http://gitbook.cn/books/58a1cef89253167836c8acad/index.html