• 性能测试方法全解


    性能测试是软件测试中的一个重要环节,其目的是评估系统在不同负荷下的性能表现,包括响应时间、吞吐量、并发数等指标。通常可以通过以下几种方法进行性能测试:

    1、负载测试

    负载测试是模拟多用户同时访问系统,测试系统在高并发、大流量情况下的性能表现。可以使用开源和商业负载测试工具,例如Apache JMeter或LoadRunner进行负载测试。这些工具可以模拟虚拟用户,并监测系统的性能指标,例如响应时间、吞吐量、错误率等。具体示例代码如下:

    1. // 导入jmeter相关的类库
    2. import org.apache.jmeter.control.LoopController;
    3. import org.apache.jmeter.engine.StandardJMeterEngine;
    4. import org.apache.jmeter.protocol.http.sampler.HTTPSampler;
    5. import org.apache.jmeter.reporters.ResultCollector;
    6. import org.apache.jmeter.testelement.TestElement;
    7. import org.apache.jmeter.testelement.TestPlan;
    8. import org.apache.jmeter.threads.SetupThreadGroup;
    9. import org.apache.jmeter.util.JMeterUtils;
    10.  
    11. public class LoadTest{
    12.     public static void main(String[] args) throws Exception{
    13.         // 初始化JMeter引擎
    14.         StandardJMeterEngine jmeter = new StandardJMeterEngine();
    15.         JMeterUtils.setJMeterHome("/path/to/jmeter");
    16.         JMeterUtils.loadJMeterProperties("/path/to/jmeter/bin/jmeter.properties");
    17.         
    18.         // 创建HTTP请求
    19.         HTTPSampler httpSampler = new HTTPSampler();
    20.         httpSampler.setDomain("www.example.com");
    21.         httpSampler.setPort(80);
    22.         httpSampler.setPath("/api/v1/login");
    23.         httpSampler.setMethod("POST");
    24.         
    25.         // 创建测试计划
    26.         TestPlan testPlan = new TestPlan("Login Test Plan");
    27.         testPlan.addThreadGroup(new SetupThreadGroup());
    28.         LoopController loopCtrl = new LoopController();
    29.         loopCtrl.setLoops(100);
    30.         testPlan.getThreadGroups().get(0).setSamplerController(loopCtrl);
    31.         
    32.         // 添加监听器
    33.         ResultCollector resultCollector = new ResultCollector();
    34.         testPlan.addTestElement(resultCollector);
    35.         
    36.         // 运行测试计划
    37.         jmeter.configure(testPlan);
    38.         jmeter.run();
    39.     }
    40. }

    上述代码使用了Apache JMeter库,模拟100个用户访问登录接口,并记录性能指标。

    同时,我也为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接点击文末小卡片免费领取资料文档

    软件测试视频教程观看处:

    字节大佬教你逼自己如何在15天内掌握自动化测试(接口自动化/APP自动化/Web自动化/性能测试),内含项目实战

    2、压力测试

    压力测试是通过逐渐增加负载,持续测试系统的极限承受能力。可以使用开源和商业压力测试工具,例如StressTest或LoadUI进行压力测试。这些工具可以持续发出请求,并监测系统的性能指标,例如响应时间、吞吐量、错误率等。具体示例代码如下:

    1. import time
    2. import requests
    3.  
    4. def stress_test():
    5.     url = "http://www.example.com/api/v1/login"
    6.     data = {"username": "testuser"}
    7.     count = 0
    8.     start_time = time.time()
    9.     
    10.     # 持续发出请求,直到达到最大负载量
    11.     while (time.time() - start_time) < 60:
    12.         response = requests.post(url, data)
    13.         if response.status_code == 200 and response.json().get("result") == "success":
    14.             count += 1
    15.     
    16.     # 输出性能指标
    17.     print("Total requests: {}".format(count))
    18.     print("Requests per second: {:.2f}".format(count / 60))

    上述代码模拟持续发出HTTP请求,直到达到最大负载量。在这个例子中,设置了最大负载量为60秒。

    3、并发测试

    并发测试是测试系统在同时处理多个请求时的性能表现。可以使用开源和商业并发测试工具,例如Gatling或LoadStorm进行并发测试。这些工具可以模拟多线程、多进程等情况下的场景,并监测系统的性能指标,例如响应时间、吞吐量、错误率等。具体示例代码如下

    1. import io.gatling.core.Predef._
    2. import io.gatling.http.Predef._
    3. import scala.concurrent.duration._
    4.  
    5. class ConcurrentTest extends Simulation {
    6.     val httpProtocol = http
    7.         .baseUrl("http://www.example.com")
    8.     
    9.     val scn = scenario("Concurrent Test")
    10.         .exec(http("Login API")
    11.             .post("/api/v1/login")
    12.             .formParam("username", "testuser")
    13.             .formParam
    14.             
    15.     setUp(
    16.         scn.inject(
    17.             constantUsersPerSec(10) during (30 seconds)
    18.         )
    19.     ).protocols(httpProtocol)
    20. }

    上述代码使用了Gatling库,模拟10个用户并发访问登录接口,持续时间为30秒,并记录性能指标。

    4、配置测试

    配置测试是测试对系统配置的修改对系统性能的影响。可以手动修改系统的配置参数,并进行性能测试,以验证修改后的配置是否优化了系统的性能。具体的示例代码略。

    5、断电恢复测试和可靠性测试

    这两种测试需要在实际的生产环境中进行,无法通过代码进行模拟。通常可以在生产环境中设置监测工具,例如zabbix等,持续监控系统的性能指标,并进行分析和优化。

    总之,在进行性能测试时,需要根据实际情况选择合适的测试方法和工具,并结合业务场景进行测试。同时,需要对测试结果进行分析和优化,从而提高系统的性能和稳定性。

    小小助力

    PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。

    ☑ 240集-零基础到精通全套视频课程
    ☑ [课件+源码]-完整配套的教程
    ☑ 18套-测试实战项目源码
    ☑ 37套-测试工具软件包
    ☑ 268道-真实面试题
    ☑ 200个模板-面试简历模板、测试方案模板、软件测试报告模板、测试分析模版、测试计划模板、性能测试报告、性能测试报告、性能测试脚本用例模板(信息完整)

    这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

     

  • 相关阅读:
    Linux tmux使用总结
    网站优化搜索引擎与关键词
    CentOS7 挂载镜像为本地YUM源
    小米 Civi 2 (ziyi) 机型解锁bl 获取root权限教程 +其他机型参数对比+救砖
    Windows服务器 开机自启动服务
    nios烧写到EPCS的问题处理
    数字孪生可视化在石油生产管理中的具体应用
    C语言——文件操作_学习笔记
    STM32存储左右互搏 SPI总线读写FLASH W25QXX
    对Transformer的一些理解
  • 原文地址:https://blog.csdn.net/huace3852/article/details/132906289