Loadrunner脚本开发-基于HTTP协议的流媒体视频在线播放服务器性能测试

简介: Loadrunner脚本开发-基于HTTP协议的流媒体视频在线播放服务器性能测试

脚本开发-基于HTTP协议的流媒体视频在线播放服务器性能测试


 

目的

 

 

实现基于http协议的流媒体在线视频播放,服务器性能测试脚本,模拟用户浏览器方式在线播放视频

 

开发环境

Loadrunner 11.0

eclipse-standard-kepler-SR2-win32.zip

jdk-6u14-windows-i586

Win7 32

 

脚本

DownloadVideo.java,代码如下,主要实现流媒体文件的下载及下载相关的分析

 

package downloadHttpMedia;

import java.io.*;

import java.net.*;

import java.util.*;

import java.text.*;

 

public class DownloadVideo {

 

   public static int getFileByUrl(String address, int vuser_id){

     

     

       Date date = new Date();

       SimpleDateFormat formatDate = new SimpleDateFormat("yyyyMMddHHmmss");

       String downloadTime = formatDate.format(date);

     

     

       int totalDownloadSize = 0; //总下载大小

       int lastDownloadSize = 0;  //上次下载大小

       long startDownloadTime = 0; //开始下载

       long lastDownloadTime = 0;     //上次下载时间

       int second = 0;   //记录秒

     

     

       try{

           URL url = new URL(address);

           URLConnection conn = url.openConnection();

           BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());

           FileOutputStream fos = new FileOutputStream("E:\\testvideo" + "_" + downloadTime + vuser_id + ".mp4"); //假设文件为.mp4

         

           int fileTotalSizeInByte = conn.getContentLength();

           System.out.println("File Size:" + fileTotalSizeInByte/1024 + "KB"); //获取文件大小

         

           startDownloadTime = System.currentTimeMillis(); //产生一个当前的毫秒--1970110时起的毫秒数

           lastDownloadTime = startDownloadTime;

         

           while (totalDownloadSize < fileTotalSizeInByte){

               int bufferSize = bis.available(); //获取数据流中可供读取的字节数

               if (bufferSize > 0){

                   byte[] buf = new byte[bufferSize];

                   int size = bis.read(buf);

                   fos.write(buf,0, size); //写入输出流

                 

                   totalDownloadSize = totalDownloadSize + size;

               }

 

             

           if (System.currentTimeMillis() - lastDownloadTime > 1000){

                System.out.println("download speed(KB/s): " + second + " " + (totalDownloadSize - lastDownloadSize)/1024);

                lastDownloadTime = System.currentTimeMillis();

                lastDownloadSize = totalDownloadSize;

                second++;

         

           }

           }

         

           System.out.println("Download Completed");

           System.out.println("Average download speed: " + (totalDownloadSize/1024) /

                   ((System.currentTimeMillis() - startDownloadTime)/1000) + "KB/s");

         

           fos.close();

           bis.close();

                 

       }catch(MalformedURLException e){

           e.printStackTrace();

       }catch (IOException e) {

           e.printStackTrace();

       }

     

     

       return totalDownloadSize/1024;    

   }

 

 

}

 

说明:如下,函数添加vuser_id参数主要是用于标识文件名称,以防止模拟并发操作时,不同用户下载的视频文件被覆盖,影响分析。

   public static int getFileByUrl(String address, int vuser_id){

 

TestDriver.java,测试程序,如下

package downloadHttpMedia;

 

public class TestDriver {

       public static void main(String[] args)

       {

           String url = "http://xx.xx-cn-hangzhou.aliyuncs.com/video/VID_20160509_141127.mp4";

           DownloadVideo.getFileByUrl(url,1);        

       }

 

}

 

loadrunner中新建java vuser协议的脚本,并将DownloadVideo.java导出jar,添加到lr中,,编写代码如下

附:

1、现成的jar文件下载地址:http://pan.baidu.com/s/1miESwVe

2、关于eclipse导出jar文件参考文章:http://blog.sina.com.cn/s/blog_13cc013b50102v4m7.html

 

 

 

 

import lrapi.lr;

 

import downloadMedia.*;

 

 

public class Actions

{

 

   public int init() throws Throwable {

       return 0;

   }//end of init

 

 

   public int action() throws Throwable {

           int downloadSize = 0; //下载文件大小

 

             

           lr.rendezvous("rendezvous");

 

           lr.start_transaction("downloadMedia");

 

           String url = "";

     

       int size = Integer.valueOf("").intValue();

       int vuserid = Integer.valueOf("").intValue();

 

       downloadSize = downloadMedia.getFileByUrl(url,vuserid);

       if (downloadSize == size) {

           lr.end_transaction("downloadMedia", lr.PASS);

       }else{

           lr.end_transaction("downloadMedia", lr.FAIL);

         }

 

         return 0;

   }//end of action

 

 

   public int end() throws Throwable {

       return 0;

   }//end of end

}

 

其中,参数分别为视频播放http地址,及对应视频大小,为虚拟用户id

 

运行结果:

 

如上,显示每秒下载速度及平均下载速度

 



以下是生成的文件

 


 

目录
相关文章
|
7月前
|
测试技术 Linux
VPS一键测试脚本,无痕体验+自动导出,服务器测试更轻松
NodeQuality 是一款整合 Yabs、IPQuality、NetQuality 等主流 VPS 测试脚本的全能工具,支持一键测试硬件性能、IP属性、网络质量,并新增分享与导出功能。其“无痕测试”设计不安装依赖、不留残留,兼容性强;测试结果自动排版、截图并生成分享链接,极大提升效率。适合需要全面、快速、干净测试 VPS 的用户,是运维和测评的高效利器。
611 3
|
7月前
|
存储 测试技术 API
数据驱动开发软件测试脚本
今天刚提交了我的新作《带着ChatGPT玩转软件开发》给出版社,在写作期间跟着ChatGPT学到许多新知识。下面分享数据驱动开发软件测试脚本。
290 0
|
10月前
|
C# 图形学 开发者
Unity开发中使用UnityWebRequest从HTTP服务器下载资源。
总之,UnityWebRequest就是游戏开发者手中的万能钓鱼竿,既可以获取文本数据,也能钓上图片资源,甚至是那声音的涟漪。使用UnityWebRequest的时候,你需要精心准备,比如确定URL、配置请求类型和头信息;发起请求;巧妙处理钓获的数据;还需要机智面对网络波澜,处理各种可能出现的错误。按照这样的过程,数据的钓取将会是一次既轻松愉快也效率高效的编程钓鱼之旅。
586 18
|
9月前
|
Web App开发 JavaScript 测试技术
Playwright 极速入门:1 小时搞定环境搭建与首个测试脚本
本文带你1小时快速入门Playwright,完成环境搭建并编写首个测试脚本。Playwright是微软推出的现代化Web自动化测试工具,支持Chromium、Firefox和WebKit三大浏览器引擎,具备跨平台、多语言(Python/JS/Java/C#)特性。其核心优势包括:智能自动等待机制减少失败率、内置录制工具实时生成脚本、多语言灵活选择,以及真移动端设备模拟能力,显著提升测试效率和可靠性。
|
10月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
1452 23
|
Go API 定位技术
MCP 实战:用 Go 语言开发一个查询 IP 信息的 MCP 服务器
随着 MCP 的快速普及和广泛应用,MCP 服务器也层出不穷。大多数开发者使用的 MCP 服务器开发库是官方提供的 typescript-sdk,而作为 Go 开发者,我们也可以借助优秀的第三方库去开发 MCP 服务器,例如 ThinkInAIXYZ/go-mcp。 本文将详细介绍如何在 Go 语言中使用 go-mcp 库来开发一个查询 IP 信息的 MCP 服务器。
767 2
|
前端开发 JavaScript 测试技术
使用ChatGPT生成登录产品代码的测试用例和测试脚本
使用ChatGPT生成登录产品代码的测试用例和测试脚本
429 35
|
监控 前端开发 应用服务中间件
小游戏源码开发搭建技术栈和服务器配置流程
近些年不同场景游戏层出不穷,现就小游戏开发技术应用及功能详细剖析!
|
存储 人工智能 自然语言处理
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
ChatMCP 是一款基于模型上下文协议(MCP)的 AI 聊天客户端,支持多语言和自动化安装。它能够与多种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互,具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能。
2912 16
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
|
前端开发 JavaScript Java
通过ChatGPT生成测试用例和测试脚本(2)
通过ChatGPT生成测试用例和测试脚本
434 21