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

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 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

 

运行结果:

 

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

 



以下是生成的文件

 


 

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
1月前
|
测试技术 网络安全
什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别? 一位优秀的测试人员应该具备哪些素质? 软件测试等相关概念入门篇
文章全面介绍了软件测试的基本概念、目的、岗位分类、与开发和调试的区别,并阐述了成为优秀测试人员应具备的素质和技能。
187 1
什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别? 一位优秀的测试人员应该具备哪些素质? 软件测试等相关概念入门篇
|
8天前
|
安全 测试技术 持续交付
云计算时代的软件开发与测试:高效、灵活、可扩展
云计算时代的软件开发与测试:高效、灵活、可扩展
|
1月前
|
人工智能 监控 测试技术
云应用开发平台测试
云应用开发平台测试
49 2
|
1月前
|
敏捷开发 测试技术
开发模型(瀑布、螺旋、scrum) 和 测试模型(V、W)、增量和迭代、敏捷(思想)及敏捷开发 scrum
文章详细介绍了软件开发过程中的不同开发模型(瀑布、螺旋、Scrum)和测试模型(V模型、W模型),以及增量和迭代的概念,最后阐述了敏捷思想及其在敏捷开发(如Scrum)中的应用。
69 0
开发模型(瀑布、螺旋、scrum) 和 测试模型(V、W)、增量和迭代、敏捷(思想)及敏捷开发 scrum
|
2月前
|
测试技术 UED 开发者
软件测试的艺术:从代码审查到用户反馈的全景探索在软件开发的宇宙中,测试是那颗确保星系正常运转的暗物质。它或许不总是站在聚光灯下,但无疑是支撑整个系统稳定性与可靠性的基石。《软件测试的艺术:从代码审查到用户反馈的全景探索》一文,旨在揭开软件测试这一神秘面纱,通过深入浅出的方式,引领读者穿梭于测试的各个环节,从细微处着眼,至宏观视角俯瞰,全方位解析如何打造无懈可击的软件产品。
本文以“软件测试的艺术”为核心,创新性地将技术深度与通俗易懂的语言风格相结合,绘制了一幅从代码审查到用户反馈全过程的测试蓝图。不同于常规摘要的枯燥概述,这里更像是一段旅程的预告片,承诺带领读者经历一场从微观世界到宏观视野的探索之旅,揭示每一个测试环节背后的哲学与实践智慧,让即便是非专业人士也能领略到软件测试的魅力所在,并从中获取实用的启示。
|
5天前
|
人工智能 弹性计算 编解码
阿里云GPU云服务器性能、应用场景及收费标准和活动价格参考
GPU云服务器作为阿里云提供的一种高性能计算服务,通过结合GPU与CPU的计算能力,为用户在人工智能、高性能计算等领域提供了强大的支持。其具备覆盖范围广、超强计算能力、网络性能出色等优势,且计费方式灵活多样,能够满足不同用户的需求。目前用户购买阿里云gpu云服务器gn5 规格族(P100-16G)、gn6i 规格族(T4-16G)、gn6v 规格族(V100-16G)有优惠,本文为大家详细介绍阿里云gpu云服务器的相关性能及收费标准与最新活动价格情况,以供参考和选择。
|
10天前
|
机器学习/深度学习 人工智能 弹性计算
什么是阿里云GPU云服务器?GPU服务器优势、使用和租赁费用整理
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等多种场景。作为亚太领先的云服务提供商,阿里云的GPU云服务器具备灵活的资源配置、高安全性和易用性,支持多种计费模式,帮助企业高效应对计算密集型任务。
|
12天前
|
存储 分布式计算 固态存储
阿里云2核16G、4核32G、8核64G配置云服务器租用收费标准与活动价格参考
2核16G、8核64G、4核32G配置的云服务器处理器与内存比为1:8,这种配比的云服务器一般适用于数据分析与挖掘,Hadoop、Spark集群和数据库,缓存等内存密集型场景,因此,多为企业级用户选择。目前2核16G配置按量收费最低收费标准为0.54元/小时,按月租用标准收费标准为260.44元/1个月。4核32G配置的阿里云服务器按量收费标准最低为1.08元/小时,按月租用标准收费标准为520.88元/1个月。8核64G配置的阿里云服务器按量收费标准最低为2.17元/小时,按月租用标准收费标准为1041.77元/1个月。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。
|
10天前
|
机器学习/深度学习 人工智能 弹性计算
阿里云GPU服务器全解析_GPU价格收费标准_GPU优势和使用说明
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等场景。作为亚太领先的云服务商,阿里云GPU云服务器具备高灵活性、易用性、容灾备份、安全性和成本效益,支持多种实例规格,满足不同业务需求。
|
18天前
|
弹性计算
阿里云2核16G服务器多少钱一年?亲测价格查询1个月和1小时收费标准
阿里云2核16G服务器提供多种ECS实例规格,内存型r8i实例1年6折优惠价为1901元,按月收费334.19元,按小时收费0.696221元。更多规格及详细报价请访问阿里云ECS页面。
55 9
下一篇
无影云桌面