① Locust:可能是一款最被低估的压测工具
Locust.io 是一款基于 Python 的开源性能测试工具,其核心在于真实模拟用户操作并实现有效并发。用户通过编写 Python 代码定义测试用户的行为,进而模拟百万级并发用户访问。测试过程中,用户行为由您自定义,并可通过 Web UI 实时监控测试过程。
压力发生器作为性能测试工具的关键组件,需重点关注真实模拟用户操作和有效并发两个方面。对比其他主流压测工具,Locust.io 以其简洁高效和易用性脱颖而出。
Locust.io 的基本原理涉及三个核心类:HttpLocust、TaskSet、task。HttpLocust 类代表一组模拟用户,每个实例化用户对应一个 HttpLocust 类的实例。TaskSet 类则代表用户行为集合,即实际业务场景测试对应的任务集。每个 HttpLocust 类实例包含指向 TaskSet 的 task_set 属性,测试开始后,每个模拟用户会从 TaskSet 中随机挑选任务执行,并随机等待特定时间后执行下一个任务。
在 Locust.io 中,方法通过 @task() 装饰,定义为一个事务。装饰器的参数用于指定执行权重,权重值越大,虚拟用户执行该任务的频率越高。默认权重为1。例如,tasks = {classname:2} 表示每个用户执行 classname 方法的频率为2。
Locust.io 的执行原理遵循以下规律:测试启动后,每个虚拟用户遵循特定逻辑,依据预先定义的用户行为集和权重值执行任务,同时在指定的时间间隔内执行下一个任务。
Locust.io 提供了一个易于上手的快速启动示例。例如,QuickStartUser 继承自 HttpUser,定义用户行为集。通过 index() 和 search() 方法访问特定页面,使用 @task() 装饰为任务,权重参数可调整任务执行频率。
测试结果展示在 Web UI 上,直观展示性能指标,如响应时间、吞吐量、错误率等。通过启动性能测试,用户可以访问 127.0.0.1:8089 并查看结果。测试结束后,用户可从 UI 中获取性能数据和优化建议。
在软件测试领域,Locust.io 提供了一个高效、灵活的性能测试解决方案。通过加入技术交流群,您可以获取更多资源、与同行交流经验,并免费参与直播讲座和技术沙龙。群内不仅提供了丰富的学习资料,还汇集了自动化测试和性能测试方面的专家,共同推动技术进步。
② web测试中对客户端和服务器的性能测试都涉及到什么
这种就类似于云计算等后端基础服务的测试,对于一些大的公司,会有一个专门的团队来开发这种后端基础服务,这种服务当然也需要测试人员来保证质量。
这类服务一般都是通过HTTP接口的方式提供给刚才讲的WEB/APP的后端使用,所以,第一个要做的也就是接口测试,也就是用Postman等工具做手工测试、用TestNG+HttpClient或者Python的Nose框架做自动化测试。
不过,对于这类后端服务来说,接口只是暴露给外用的部分,内部逻辑通常是非常复杂的,所以,除了针对接口做测试之外,测试人员还需要细致地了解这些服务端产品的技术框架及技术实现,需要了解到模块的级别,对于系统框架图、时序图等都有很好的理解。针对这些理解去设计用例,再跟开发一起讨论如何实现用例。
如果这种基础服务用了某一个开源软件,那通常也需要测试人员能关注社区的进展,并把我们发现的Bug及解决方案等推到社区,为社区做贡献。
除了接口测试之外,在我们公司,异常测试、稳定性测试、性能测试也是服务端测试必备的测试类型。
异常测试会模拟各种异常情况,比如硬件异常-机器挂掉的情况下能否启动备机、硬盘挂掉的情况下是否会丢失数据;网络异常-网络忽然断掉、或者网络流量变小的情况;系统异常-操作系统忽然挂掉的情况。这些极端的情况出现的时候,我们需要验证数据有没有丢、能不能尽快启动备机对外提供服务、系统状态有没有异常等。我们会采用各种方式或者工具来模拟这些异常,比如用TrafficControl工具来控制网络流量。
稳定性测试,就是模拟系统在7*24的运行下会不会出问题,一般会用接口测试或者性能测试用例不断地跑,在运行期间,我们会模拟各种情况,比如说负载的变化、系统的各种干扰等。可以用ChaosMonkey等工具来进行这类测试。
性能测试,其实细分起来会有各种类型,比如负载测试、压力测试、配置测试、甚至还有线上压测、容量规划等。最常规的性能测试,一般是先规定一个系统需要承受的压力,比如说,某一个系统,1个小时之内会有1W单的单子,那基于这个需求我们分析服务器后端需要承受的压力,分析出来以后,就写性能测试脚本,然后逐渐增加压测的力度,直到超过这个预定的压力。通常在这个测试过程中会发现各种问题,比如数据库索引没有建、线程池太小、系统异常等。需要解决了之后再加大压力测试。也是用Grinder/JMeter等工具来进行性能测试,不过难的不是这些工具的使用,而是发现问题以后的定位。
对于这种后端服务的测试人员来说,技术上的要求是挺高的,需要有较好的编程能力,需要对数据库、操作系统等机制有很好的了解才行。