# 测试圈TC：如何在实际工作开展性能测试？



<br>

#### 问题：

__测试好多都是性能小白，虽学了些性能知识，但在实际工作做开展性能测试，都很茫然，求指导，应该怎么处理？__

----

#### 回答：

从小入手，从简单的开始，然后慢慢的做更系统更复杂的性能测试。

__确定需求__

刚接触性能测试的同学往往不知道性能测试是有需求的。比如
给我测一下系统的性能
线上xx服务器挂了，能否重现一下线上问题

如果你是性能测试同学，假设时间有限，这两个需求你只能接一个，你是接哪个？

很多同学会选第一个，因为第一个需求似乎是性能测试的需求，第二个跟性能测试似乎没有特别强烈的关系。

但是第一个需求太泛泛了，如果不细化的话操作起来会很难，第二个尽管看起来是亡羊补牢的行为，但现实工作中这类的需求很多，操作起来也是有套路的，不会特别发散。

总之，建议新人在需求分析的时候接一些具体的，可以操作的需求。需求是否可以细化分解，基本就注定了性能测试能否顺利完成

__了解业务__

比如重现线上问题的需求，拿到手之后，我们就必须熟悉线上的业务。用户是怎么操作的，系统崩溃的时段是哪个，这个时段里有多少用户在使用系统，他们都在做什么？

尽可能精确的重现用户的行为或者预测用户的行为，这是性能脚本的是否符合实际的关键。而这种精确是建立在了解业务的基础之上的。

__搭建测试环境__

尽可能搭建跟线上环境一致的性能测试专用环境。

关键字:

* 一致：最好跟线上环境一样，如果不可能的话，可以减配，但是要保证架构一致。比如线上集群100台，测试环境没那么多资源的情况下，可以适量减少，比如测试环境集群2台，但是一定要是集群，不然就没意义了

* 专用：测试环境是性能测试专享的，其他测试不要在上面搞

__实现脚本__

比如可以用jmeter实现测试脚本，推荐 [JMeter教程](/jmeter/)。

对于新人来说，实现脚本往往比较困难。

另外一些基本的性能知识也是必要的，推荐看 [性能基础知识教程](/performance/).

__脚本执行及监控__

根据负载模型去执行相应的脚本，这里就不展开了。

__收集测试结果__

对于新人来说，只需要把测试结果提交给项目组的开发人员分析就好了。对于有一定经验的性能测试人员，希望可以通过监控和代码走查的方式找到系统瓶颈，并给出部署的建议方案。

__持续学习__

* linux知识：比如服务器kpi指标，简单监控命令，并发模型等
* 架构知识：最简单的方式，自己搭建性能测试环境或者线上环境，多搞几次就熟了
* 更多知识：总之遇到不懂的就学，比如数据库优化，jvm优化等知识

<br>
综上。希望对你有所帮助。




原始封面

![课程图片](https://images.unsplash.com/photo-1419332552192-47d29e59b1e0?w=300)


