使用自动化测试专项性能----对不同时长视频导出不同规格的耗时数据统计
来源:互联网 发布:iphone网络共享在哪里 编辑:程序博客网 时间:2024/05/22 00:54
背景:项目有一个需求是这样的,针对某个拍摄的视频,做压缩导出操作,导出操作支持不同的规格,所以压缩导出的时间各不相同,所以需要做压缩效率的一个专项测试,初步设想需要取得的数据为耗时–规格–时长的一个统计图,比如下面这张图:
痛点:简单的专项可以手动去做,因为数据少,代码结构改变的话维护成本低;但是,项目还在初期阶段,导出规格和底层的压缩算法有可能会变,而且每次执行数据量会很大,手工操作统计数据都要1人/d,而且存在读数错误的风险,所以只能通过自动化的方式执行统计,把时间压缩到只要准备待测资源,然后等待数据执行完成即可。
所以最后得到的是一个csv文件:
然后手动生成一张图表:
使用:
只需要在我自定义的文件夹内复制一些需要测试的资源,然后在配置一下导出的规格,然后一键执行等待结果就行了,有了结果数据,分析还不简单吗。
物料准备:
- AndroidJuniRunner框架一个
- javacsv.jar第三方库一个
- 导出接口一个
代码结构:
实际运行是运行单元测试哒,主要有3个类:
- ExporeEntity用来定义规格和各种参数,使用的时候只要在@Before实例化一次就行了。
- CsvWriter这就是第三方库
- ExporeTime导出时间的单元测试类
主要代码和思路:
@Before public void setUp(){ context = InstrumentationRegistry.getTargetContext(); exporeEntity = new ExporeEntity(); }
在before准备context和我定义的实体类。
@Test public void startTest(){ try { csvWriter = new CsvWriter(exporeEntity.out_csv,',', Charset.forName("GBK")); ArrayList in_testFile = exporeEntity.getArrayList(); Assert.assertThat("AirTest文件夹内无内容或者资源无效,请检查!!!",in_testFile, Matchers.notNullValue()); HashMap quial_map = exporeEntity.getHashMap(); writeCsvPhoneInfo(); writeCsvTitle(quial_map,csvWriter); for(int i = 0;i < in_testFile.size();i++){ Log.i("cloudhuan","被测应用共:"+in_testFile.size()+"当前为:"+(i+1)); String in_path = (String) in_testFile.get(i); String in_path_name = new File(in_path).getName(); Log.i("cloudhuan",in_path+in_path_name); ArrayList arrayList = new ArrayList(); arrayList.add(in_path_name); arrayList.add(getVideoSize(in_path)); arrayList.add(String.valueOf(getVideoTotleTime(in_path))+"秒"); for(Object key:quial_map.keySet()){ mheight = (Integer)key; mbitrate = (int) quial_map.get(mheight); _start = System.currentTimeMillis(); Log.i("cloudhuan","export begin"+mheight+"|||"+mbitrate); arComposeUtil = new ArComposeUtil(); arComposeUtil.composeVideo(context,in_path, exporeEntity.tmp_file, mheight,mbitrate,this,this,this); Log.i("cloudhuan","export done"); arrayList.add(String.valueOf((System.currentTimeMillis()-_start)/1000.0)); arrayList.add(getVideoSize(exporeEntity.tmp_file)); SystemClock.sleep(1000); } writeCsv(arrayList); } } catch (Exception e) { e.printStackTrace(); }finally { try { csvWriter.flush(); } catch (IOException e) { e.printStackTrace(); } csvWriter.close(); Log.i("cloudhuan","writecsv done"); } }
然后在一个@Test方法执行自动导出列表内的所有资源,每个资源导出N个规格次,并统计生成csv文件,思路是这样的:
- 一个资源对应着N个规格,然后一个资源写csv一行数据,所以文件夹内遍历出所有有效视频(以mp4结尾且长度大于0),然后没一个视频对应着N次循环。
- 写入csv,因为有N个循环,所以列数不定,也需要动态循环扩展csv的列数,所以这里用了一个hashmap来定义规格,然后循环N次来写入数据。
写在最后:
咳咳,好久没写博客了,因为新入职事多,加上也不知道写什么,该学的都学了,剩下的更多是加深理解和实际运用,所以以后会把项目用到的好玩的技术和对项目中实现高效率的实际运用,总结成博客吧!
1 0
- 使用自动化测试专项性能----对不同时长视频导出不同规格的耗时数据统计
- Android性能专项测试之Heap Viewer工具的使用
- 导出长数据不换行
- Android性能专项测试之耗电量统计API
- Android性能专项测试之耗电量统计API
- Android性能专项测试之耗电量统计API
- Android性能专项测试
- 性能测试专项
- Android 总结:AS入门,性能优化,性能专项测试,分析工具的使用
- 性能测试的自动化
- 【Android】Handler使用入门 处理耗时较长的程序
- Badboy自动化测试工具 导出脚本用于JMeter性能测试
- 对非自动化测试的自动化支持
- ArcSDE for Oracle在大数据量执行创建统计信息(Analyze)耗时长的问题
- Jenkins自动化测试:使用临时文件实现不同测试用例间的变量传递_20160624_七侠镇莫尛貝
- 不同阶段的性能测试
- 不同人员对性能的关注点与web前端性能测试概念
- RCP应用程序执行耗时长的方法不影响界面相应的方法
- code vs 1711 棋盘分割 (dp)
- 用户行为日志的采集
- Thinking in Java 第七章------复用类(1)
- volatile和const放在一起
- STM32将常量数组定义到FLASH固定地址
- 使用自动化测试专项性能----对不同时长视频导出不同规格的耗时数据统计
- 洛谷 P1074 靶形数独
- 设计模式-工厂模式
- [译]MongoDB 在语法上的 5 大缺陷
- 我在MongoDB使用中遇到的几个问题
- Canvas绘图之旅
- 在字符串中查找一个特定的字符最后一次出现的位置,并返回字符所在位置。
- 简洁rtmp源站服务器
- RedHat 6.5离线安装GCC方法