作为一名测试工程师,在职业技能的发展道路上很难绕开性能测试,但除了简单的使用功能对接口进行并发测试外,更深入的性能测试往往让人难以下手。
性能测试对专业的技术知识有较高的要求,在测试工程师的日常工作中,属于较难上手的类型。这里整理了作为一个测试想要做性能测试需要了解的基础知识。
一、计算机基础类知识
计算机从最基本的原件晶体管开始,只能进行简单的“或与非”运算,到能进行大量运算的CPU,再到输入终端、存储终端,内存。到此为止都还算是机器的层面,而操作系统则是连接机器和人类的桥梁。
计算机的基础知识,在计算机相关的大学专业课程,已有介绍学习。而对于大学专业是非计算机相关专业的测试工程师则需要补充这方面的知识。这篇文章(https://blog.csdn.net/sd01397055/article/details/93959977)有对这方面的知识进行简单介绍。
在性能优化中,对服务器操作系统的优化,也是优化的一个方方向。
二、网络基础
作为接口的性能测试,对网络基础知识的掌握是必不可少的一部分,最重要的是对网络协议的掌握。这篇文章(https://www.runoob.com/w3cnote/summary-of-network.html)有对常见网络协议进行详细的介绍。
三、中间件
中间件是连接软件与系统之间的服务,衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。在性能测试中,根据不同的场景,选择不同的中间件、调整配置也能达到提高性能的效果。
常用基础中间件:
- 路由与web服务器:处理和转发其他服务器通信数据的服务器。 如被业界广泛使用的阿里基于 Nginx 研发的 Tengine、阿里内部的集中式路由服务 VipServer
- RPC框架:微服务时代的远程服务调用框架。如grpc, Thrift, 阿里的 HSF, Dubbo, SOFA-RPC
- 消息中间件:支持在分布式系统之间发送和接收消息的软件。 如 Apache kafka, Apache RabbitMQ, NSQ, 阿里孵化开源的 Apache RocketMQ
- 缓存服务: 分布式的高速数据存储层,一般是内存存储。如 阿里 Tair,业界的 Redis, Memcached, Ehcache
- 配置中心:用来统一管理各个项目中所有配置的系统。如 阿里 Nacos、携程 Apollo、百度 Disconf
- 分布式事务:事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。 如 阿里 seata、腾讯 DTF
- 任务调度:分布式环境下提供定时、任务编排、分布式跑批等功能的系统。如 阿里 SchedulerX、业界 xxl-job、当当 elastic-job、有赞 TSP
- 数据库层 用于支持弹性扩容和分库分表的 TDDL,数据库连接池 Driud, Binlog 同步的 Canal 等。
原文地址:https://www.zhihu.com/question/19730582/answer/1663627873
四、数据库
数据库在测试工程师日常的工作中也时常用到,而测试工程大部分的工作也只涉及到增删改查方面。而性能测试则要涉及到数据存储和查询的相关算法的优化。
数据库基本概念:https://www.cnblogs.com/cainiao-chuanqi/p/11191647.html
数据库的性能优化:https://www.cnblogs.com/easypass/archive/2010/12/08/1900127.html
五、接口测试技能
在日常的接口功能测试工作中,HTTP请求、抓包工具(fidder、charles),接口请求工具(postman),这些也是在接口性能测试当中会用到的技能。
除了这些还有性能测试工具(Jmeter、loadrunner)。在已有的工具都具有局限性的情况下,也需要掌握一门编程语言,以便进行性能脚本编写。