前言:
测试短视频SDK有半年多了,曾经跟组内小伙伴感叹,“再苦再累我都要坚持测试短视频”。虽然每次版本测试都被短视频SDK虐的不行,但是短视频SDK仍然是我最喜欢测试的一款SDK,没有之一。
短视频SDK介绍:
2016年底的时候出现了不少短视频类的应用,随着piapi酱等等的火爆,短视频成为下一年的视频风口。在这个时候市面上出现了一款短视频编辑神器VUE,融合了小视频录制,添加伴音、贴图、时长编辑、特效编辑等功能。所待的项目组也紧跟潮流推出了短视频SDK,主要实现短视频录制、增加特效、伴音、贴图、时长裁剪等功能。实际上只对外提供三个接口,但是由于视频文件的多样性、以及Android设备的不同兼容性、以及转码本身就需要耗费一定的时间,测试起来其实并不简单,总结了下面两点用于提升测试的效率。
测试tip1,引入单元测试框架Androidtestcase,减少手工操作成本
在前期测试准备中就发现,短视频SDK虽然只对外提供三个接口,但是最主要的转码接口有十几个参数,每个参数需要覆盖多种不同的数据以及不同的文件。比如短视频提供的拼接功能,其实并未涉及到参数,但是需要覆盖不同分辨率的文件,不同码率的文件,不同帧率的文件,以及宽高不规则的文件,单主流分辨率就有1280X720、960X540、640X480、480X320这四档,然后做为一个专注找bug的QA来说,这些分辨率肯定是远远不够的,那如果要全部覆盖的话,只依赖手工测试,会是一个事倍功半的过程。简单查看了下短视频SDK,因为不涉及到摄像头操作,操作均在本地,不调用网络,应该可以通过单元测试框架跑接口。曾经在很早之前使用过Androidtestcase这个单元测试框架,经过简单的调试,有了下面的工程。
在测试代码中,使用数组的方式来存储数据,来进行不同文件、不同参数类型的覆盖,具体如下:
//动态水印位置测试
intdataprovidercharletpositon[][] = {{341,451}, {432,234}, {123,322}, {436,765},{436,765}};
for(inti = 0; i <5; i++) {
String[] waters;
Bitmap[] bitmaps;
try{
waters =this.getContext().getResources().getAssets().list("dynamicWater");
bitmaps =newBitmap[waters.length];
for(inti1 = 0; i1 < waters.length; i1++) {
waters[i1] ="dynamicWater/"+ waters[i1];
BitmapFactory.Options options =newBitmapFactory.Options();
options.inPreferredConfig= Bitmap.Config.ARGB_8888;
Bitmap tmp = BitmapFactory.decodeStream(this.getContext().getResources().getAssets().open(waters[i1]));
bitmaps[i1] = tmp;
}
除了覆盖不同类型的文件,参数类型之外,做为SDK,需要保证接口的易用性,对各种异常情况下的参数返回,接口保护等也做了覆盖,具体的覆盖类似文件类型的覆盖,在数据池中增加了对返回参数的断言。
String outfile ="/sdcard/unnormalparameter"+String.valueOf(i) +".mp4";
tranOut.setFilePath(outfile);
TranscodingAPI.TranscodeParatranscodePara =new TranscodingAPI.TranscodePara();
transcodePara.setSource(tranSource);//必须
transcodePara.setOut(tranOut);//必须
transcodePara.setDynamicWater(tranDynamicWater);//动态水印,需要时添加,否则不用设置
intret = TranscodingAPI.getInstance().VODProcess(transcodePara);
Assert.assertEquals(dataproviderunnormalparameter[i][6], ret);
Log.i(TAG,"短视频处理成功"+ ret);
通过上述这种方式,减少了我的工作量,在准备好测试文件,编写完测试代码之后,在Android Stduio中执行用例,我就可以开始人工审查转码生成的文件,基本上转码和检查文件可以进行并行,并且在接口功能固定之后,这部分测试代码在后续的回归测试中不断复用。
在上述接口自动化的基础上,接入jenkins实现了SDK的自动打包、脚本运行、生成测试报告、已经代码覆盖率检查。
测试tips2,使用“手刹”生成各类型奇葩MP4文件,尽量多的覆盖MP4文件的类型
先简单介绍下MP4文件,MP4做为一个封装格式,也就是容器,可以装不同编码格式的音频和视频文件进去。在测试前期,找开发使用ffmpeg生成了主流编码格式的文件,包括音频封装格式为AAC、MP3的文件,视频封装格式为H.264、H.263、MPEG2、MPEG4。在测试期间发现不同的帧率、音频采样率、分辨率等均会对视频合成和转码的结果产生影响,后续发现了“手刹”这个工具,原名为handbrake。相对于直接使用ffmpeg,手刹有图形界面,而且操作相对简单,安装成本也较低。

使用界面如下:

以上三张截图分别展示了设置目标文件的视频编码格式、帧率、分辨率音频编码格式、采样率等参数。
参考文档:
http://www.360doc.com/content/10/0517/20/11192_28101750.shtml 测试case建立
http://blog.csdn.net/kouwoo/article/details/39227125 接口测试自动化测试工程配置

短视频SDK测试tips相关推荐

  1. 【短视频SDK】Android如何使用硬编硬解?

    为什么要使用硬编硬解? 音频和视频编码时有两种选择:软件编码和硬件编码.软编的效果更好但会占用更多的资源,硬编的效果差一些但占用的资源较少. 同样解码也有两种选择:硬件解码和软件解码.硬解的效果相比软 ...

  2. 美摄短视频SDK上线:搭建多端产品,只需一套代码

    随着网络基础设施的优化,以视频为代表的富媒体信息成为主流,人们越来越习惯利用视频进行日常沟通和信息分享.艾瑞咨询报告显示,在各细分领域中,短视频以承载量大.内容多元兼具趣味性.传播力强为优势,市场规模 ...

  3. 蓝松短视频SDK, 更新日志

    我们的口号是: 蓝松短视频 任意个性化. 更新周期: 每三周更新一次, 合作用户任意时刻的提供功能定制 [size=xx-small]我们是杭州蓝松科技, 专业做视频短视频SDK的技术团队. 我们提供 ...

  4. 杭州蓝松科技---短视频SDK介绍

    蓝松短视频的口号和 更新周期: 我们的口号是:  蓝松短视频  任意个性化. 我们是杭州蓝松科技,  专业做视频短视频SDK的技术团队. 我们提供 Android/IOS平台上的 短视频编辑SDK,  ...

  5. 【短视频SDK】合成时长和文件大小对比数据---给参数设置提供参考.

    本文之前我们已经有一篇文章针对现在短视频SDK暴露的参数有一个基本解析:----->传送门:对焦模式.裁剪模式.视频质量.分辨率.视频比例.帧率.关键帧间隔等参数解析.做好一个短视频SDK的核心 ...

  6. 短视频SDK架构设计,短视频APP开发目标首选

    短视频 SDK 实践中主要做的一些事情,这其中最重要的就是短视频 SDK 的架构设计,包括架构设计理念.架构图.整体数据流程.模块架构设计等.今天小编就简单介绍一下短视频APP开发中,选择什么样的厂家 ...

  7. 游戏开发需要具备哪些技术_短视频 SDK 开发 (一) 开发一款短视频 SDK 需要具备哪些知识?...

    前言 2020 年要属什么最火,肯定是短视频和直播带货了.我自己基本上每天晚上睡觉之前都会刷一会儿 douyin 短视频,不得不承认 douyin 的推荐算法是真 nb ,推荐的都是我的最爱 ? .那 ...

  8. 七牛云 转码_开发者选择短视频SDK,为何青睐七牛云?

    从文字到图片再到视频的互联网内容媒介发展途径,随着 5G 技术的逐渐落地愈发清晰.短视频市场中的角力也随着诸多资本和创业者的涌入,进入到白热化阶段.这样的情况下,选择合适的短视频SDK产品就显得尤为重 ...

  9. 阿里云短视频SDK for iOS —— (二)静态与动态贴纸拍摄

    一般我们在拍摄时都会有 静态贴纸 和 动态贴纸 的需求,如下图所示 阿里云短视频SDK也为开发者提供了相关的API,下面我就分别介绍 静态贴纸 与 动态贴纸 拍摄的实现过程 静态贴纸 静态贴纸一般用于 ...

  10. 如何设计一款优秀的短视频 SDK

    2017 年,短视频成为了创业的新风口,各种短视频 App 如雨后春笋般先后上线,视频越来越像文字.图片一样,成为每一个 App 不可或缺的一部分. 1. 包体一定要尽可能小 如何做到尽可能的减小 S ...

最新文章

  1. 无需自己输入include这些的方法
  2. 在loadrunner中使用winsocket协议编写脚步三部曲
  3. Linux下目录/文件颜色的含义
  4. 蓝桥杯【介绍】和【如何准备才可以拿奖】
  5. 如何使用plantUML生成go项目的UML图?(mac)
  6. php预处理器,【 PHP 】PHP(超文本预处理器)新版下载 - U大师
  7. 螺旋矩阵O(1)根据坐标求值
  8. C#委托、事件学习之(一)——委托事件描述
  9. cdn加载vue很慢_Vue.js 项目打包优化实践
  10. 虚拟机CentOS8 网络配置
  11. 苹果股价爆涨10%:股票拆分,利好散户
  12. Java阶段2-02JS:08ECMAScript BOM DOM:
  13. swift:自定义UICollectionViewFlowLayout
  14. 大连理工大学计算机组织与结构实验,大连理工大学计算机系统结构实验-实验四.doc...
  15. 网络TDR测试软件,tdr测试的原理及方法介绍
  16. iOS:特殊符号大全
  17. 贴片电容的命名规则和参数解释
  18. 说说 title 和 alt 属性有什么区别?
  19. SDNUOJ 1682.easy problem Ⅲ
  20. 古时候有个【百僧问题】,一百馒头一百僧,大僧三个更无争,小僧三人分一个,大小和尚各几丁? *...

热门文章

  1. 再更新:2022 京东/淘宝双11活动一键自动完成任务脚本app来了,顺便说个事情...
  2. FFmpeg源代码简单分析 结构体成员管理系统-AVClass
  3. 龙果支付 mysql_龙果开源支付系统搭建与部署
  4. HHKB连不上Ubuntu
  5. linux swp文件重启,Linux下.swp文件的恢复方法
  6. python ip地址处理_Python学习笔记-IP地址处理模块Ipy
  7. 变额年金(一、 递增年金)
  8. google浏览器插件之身份验证器Authenticator MFA
  9. 计算机怎么通电启动,电脑通电自动开机怎么设置
  10. 【SuperMap】SuperMap.Geometry转GeoJSON