Android 性能测试的大势及框架篇。Android 性能测试的势以及框架篇。

休假结束,你的状态来没发出回归?那么,放空脑袋后,先来学学习,欢迎大家持续关注腾讯云技术社区。

迎大家之腾讯云技术社区,获取更多腾讯海量技术实施干货哦~

作者:李帅 

作者:李帅

导语

借种之开发周期,把思想了一段时间的场景化性能测试框架搭建筑起来,包括
耗电性能测试、内存泄漏测试、UI流畅度性能测试、后台接口性能测试、app启动速度测试相当。方案以为路之测试,也意识了产品受到的多多题材。
接下来将故七八只篇幅详尽记录转心路历程。为享受轮子或也追思总结。

导语

借种之开发周期,把想了一段时间的场景化性能测试框架搭建筑起来,包括
耗电性能测试、内存泄漏测试、UI流畅度性能测试、后台接口性能测试、app启动速度测试等。方案以被色的测试,也发现了出品受之博问题。
接下来将用七八独篇幅详尽笔录转心路历程。为分享轮子或为追思总结。

简述

特性测试,在通信设施测试界,是一个可怜成熟之圈子,IETF团队于斯局面制定了诸多RFC以正规化测试行为。但每当作者接触移动测试领域的季年里,性能测试类是一个可有可无的专项;性能问题,在各个品种蒙,总是待于“用户报障->开发关注
-> 测试复现”。

大庭广众,如果性能问题,如果为会顶深限度的照“测试发现->问题一定
->开发修改”的正常流程来移动,对产品质量是出不行可怜奉献的。下文的介绍,目标虽在这个:测试过程被,测试工程师识别更多的出品要场景,通过场景化、工程化、自动化的测试手段,发现又多之习性问题,使得性能BUG收敛于产品发布前。

简述

特性测试,在通信设备测试界,是一个不行成熟之天地,IETF组织以这范畴制定了诸多RFC以正规化测试行为。但以作者接触移动测试领域的季年里,性能测试类是一个无所谓的专项;性能问题,在各个门类被,总是待在“用户报障->开发关注
-> 测试复现”。

显然,如果性能问题,如果为会无限深限度的随“测试发现->问题一定
->开发修改”的正常流程来走,对产品质量是发坏充分贡献的。下文的介绍,目标便在这:测试过程遭到,测试工程师识别更多的产品要场景,通过场景化、工程化、自动化的测试手段,发现还多之性问题,使得性能BUG收敛于产品发布前。

目标与战法

品味概括下性能测试:通过自动化的测试工具模拟多种例行、峰值以及大负载条件来针对系统的各项性能指标进行测试。成功之习性测试,会持有以下几单特点:

  1. 供被开发之信享有精准性(必备);

  2. 测试方法高效,测试数据稳定可靠(必备);

  3. 动用的分析方法具有高可信度(必备);

  4. 测试熟练使用工具协助开发定位性能问题(可选)。

提供被出之音讯有所精准性。如果测试或用户告知开发同学:“你们是本子性能特别不同!”、“用在用在手机就开始发烫了,你打定一下!”开发同学内心肯定是模糊的。

假使测试用协调的措辞换成:“资讯页面,观看视频过程耗电量大,这个本比高达个本子jiffs高了30%。”,这样开发集团可以因模块指定同进人,知道具体的路,知道耗电量的优化目标(这个本多出底这30%),那问题的促进得会更加顺畅。

测试方法高效,测试数据稳定可靠。在统筹本框架前,团队执行性测试,包括长板性能测试(亮屏后台耗电及内存)、手工驱动的景性能测试、基于页面驱动之流畅度测试。

1、
长板性能,场景过于单一,基本不过校验了管家后台进程无其他操作下之性表现;

2、
相比叫UI自动化驱动,手工测试无法担保收集到大样论数(让人勤做一个操作30分钟,这种任务一定是指向员工的残害);

3、
页面驱动的流畅度测试,经常出现两浅对相同版本的测试得有全不同的测试结果,测试数据未平稳,难以向开发证明那个代码有问题。后文介绍流畅度测试时又详述优劣。

运用的分析方法具有高但信度。传统的分析方案遭,往往简单地使全值来评估性能项。笔者以为,合理的选用评估算法,也克让您的测试报告又发生说服力。一个存少量毛刺的多少列,如下图,由于毛刺偏离严重,将重拖累低平均值。多一个毛刺,少一个毛刺,均值都见面时有发生老大不一样,在样本量较少时,往往会冒出个别赖测试获得的习性数据差距大的问题。(如何缓解后详述)。

图片 1

希冀一律 流畅度样本

测试熟练使用工具协助开发定位性能问题。测试左移一点,多做一些,开发就好少花一点生机在缩小问题走访达到。在职能测试中,一个BUG从偶然复现到找到必现路径,会叫开发减少大气定位问题时间。同样,在性能测试着,如果测试能够指明哪个线程是功率消耗大户,哪个目标是内存泄漏祸首,那么开也会越来越迅速地修复问题。同时,测试于定点过程被,不仅仅提升了自我能力,也建由了和谐之艺形象。

对象和战法

品味概括下性能测试:经自动化的测试工具模拟多种健康、峰值以及生负载条件来针对系的各性能指标进行测试。成功的性质测试,会有所以下几只特性:

  1. 提供给开之信息有所精准性(必备);

  2. 测试方法高效,测试数据稳定可靠(必备);

  3. 使的分析方法具有强但信度(必备);

  4. 测试熟练运用工具帮助开发定位性能问题(可选)。

提供于出的音有所精准性。一经测试或用户告知开发同学:“你们是本性能大不同!”、“用正在用在手机就起发烫了,你行定一下!”开发同学内心肯定是雾里看花的。

假使测试将好之用语换成:“资讯页面,观看视频过程耗电量大,这个版比高达个本子jiffs高了30%。”,这样开发集团可以因模块指定同进人,知道具体的途径,知道耗电量的优化目标(这个版多生底立30%),那问题的促进得会越顺畅。

测试方法高效,测试数据稳定可靠。在规划遵循框架前,团队执行性测试,包括长板性能测试(亮屏后台耗电及内存)、手工驱动之状况性能测试、基于页面驱动的流畅度测试。

1、
长板性能,场景过于单一,基本不过校验了管家后台进程无任何操作下的特性表现;

2、
相比叫UI自动化驱动,手工测试无法担保收集及大样随数(让人口一再做一个操作30分钟,这种任务一定是对职工的伤害);

3、
页面驱动之流畅度测试,经常出现两蹩脚针对相同版本的测试得发了不同之测试结果,测试数据不平静,难以为开发证明那个代码来问题。后文介绍流畅度测试时重详述优劣。

动的分析方法具有强只是信度。传统的分析方案遭,往往简单地使全值来评估性能项。笔者认为,合理之选用评估算法,也克让你的测试报告又发生说服力。一个是少量毛刺的多寡列,如下图,由于毛刺偏离严重,将重拖累低平均值。多一个毛刺,少一个毛刺,均值都见面生不行大不一样,在样本量较少时,往往会冒出个别次等测试获得的属性数据差异颇的题目。(如何缓解后详述)。

图片 2

希冀一律 流畅度样本

测试熟练应用工具协助开发定位性能问题。测试左移一点,多开一些,开发就得少花一点生气在缩小问题走访达到。在效力测试中,一个BUG从偶然复现到找到必现路径,会叫开发减少大气定位问题时间。同样,在性质测试中,如果测试能够指明哪个线程是功率消耗大户,哪个目标是内存泄漏祸首,那么开也会更加快地修复问题。同时,测试于稳定过程遭到,不仅仅提升了自身能力,也树立从了团结之技艺形象。

性能测试框架设计

一般来说图,本次计划之性测试框架,包含有数量收集、数据解析、UI自动化、驱动框架四个模块,各自独立解耦。这样设计能够降低用例接入成本,可扩展性好。

图片 3

贪图二 框架设计原理图

性测试框架设计

一般来说图,本次计划之特性测试框架,包含有数据搜集、数据解析、UI自动化、驱动框架四单模块,各自独立解耦。这样设计能降低用例接入成本,可扩展性好。

图片 4

贪图二 框架设计原理图

数搜集方案

俺们要经过一致种或又数码,直接反应一项性能的上下。所以怎么收集数据样本?收集那些数据样本,是性测试框架必备的一个模块。

多少搜集方案

咱要经一样栽要多数额,直接反应一件性能的好坏。所以哪搜集数据样本?收集那些数据样本,是性测试框架必备之一个模块。

UI驱动方案

举手投足客户端的性质测试,主要是仿用户操作来创造类用户以状况,获取使用过程被之CPU、mem、流畅度等数码,以权该使用状况下,被测应用之性能指标。

遵照框架的UI自动化框架,选择了python
版的uiautomator(GitHub开源代码)。主要发生如下几点由:

  1. 数据搜集模块需要采取adb工具,做adb输出结果处理、文本分析,python在当下上面发出比较充分优势,代码量低;

  2. Xiaocong封装的开源python版uiautomator,非常轻量级,功能全面,直接采用开源项目,能够省非常多的框架开发时间;

UI驱动方案

移步客户端的属性测试,主要是拟用户操作来创造类用户采取状况,获取使用过程被的CPU、mem、流畅度等数,以权该使用状况下,被测量应用的性能指标。

本框架的UI自动化框架,选择了python
版的uiautomator(GitHub开源代码)。主要发生如下几接触原因:

  1. 数量收集模块需要动用adb工具,做adb输出结果处理、文本分析,python在当下面发出较生优势,代码量低;

  2. Xiaocong封装的开源python版uiautomator,非常轻量级,功能到,直接行使开源项目,能够省非常多之框架开发时间;

使得框架介绍

每当按照框架中,测试人员能够用如下的吩咐执行直接驱动一个或多单用例的履行,所以计划性了类testng逻辑的方案。

  • Python startTest.py -t 3 -c SwitchTabTest

  • Python startTest.py -t 3 -m SwitchTabTest,swipeDownTest

一般来说图,CaseExecutor类用来驱动与团各个用例的suite_up(),set_up(),test(),tear_donw(),suite_down()等方法。

图片 5

图三 类junit的让部分

要是用例被隐含的这些措施,主要意图是:

a) suite_up() : 用于履行初始化环境

b) set_up() :
主要用于拉自相应的习性数据搜集线程、使用UI自动化初始化应用至为测量场景,如闪屏滑动,进入主页等。

c) test() :
UI自动化执行场景的重要逻辑,如:测试“连续播放不同视频”场景的内存泄漏。则用例需要在test()方法吃,使用uiautomator实现循环点击不同视频播放的逻辑。

d) tear_down() :
该方式主要用于通知数据搜集线程停止数据搜集,进行多少归档;

e) suite_down() :
该措施以清空环境,将装有数据汇总到告知着,并利用数据解析算法得到可以直接用来报告的情节。

图片 6

希冀四 执行逻辑

要是图四,UI自动化在test()中执相应场景时,性能数据搜集线程会连搜集性能数据

注明:上述的五只步骤并不需要在每个case中贯彻,对诺同等专项,除了test(),其他四个法子,都有所相同的逻辑,抽象到父类中贯彻即可,这样好得与一个专项下的差场景用例,只待写一个test方法。

使得框架介绍

当随框架中,测试人员能够用如下的一声令下执行直接驱动一个或者多单用例的实行,所以计划了类testng逻辑的方案。

  • Python startTest.py -t 3 -c SwitchTabTest

  • Python startTest.py -t 3 -m SwitchTabTest,swipeDownTest

一般来说图,CaseExecutor类用来教及团组织各个用例的suite_up(),set_up(),test(),tear_donw(),suite_down()等方法。

图片 7

祈求三 类junit的驱动部分

假如用例被蕴含的这些主意,主要作用是:

a) suite_up() : 用于实践初始化环境

b) set_up() :
主要用于拉起相应的习性数据搜集线程、使用UI自动化初始化应用及让测量场景,如闪屏滑动,进入主页等。

c) test() :
UI自动化执行场景的要逻辑,如:测试“连续播放不同视频”场景的内存泄漏。则用例需要以test()方法吃,使用uiautomator实现循环点击不同视频播放的逻辑。

d) tear_down() :
该法主要用来通知数据搜集线程停止数据搜集,进行数据归档;

e) suite_down() :
该办法以清空环境,将兼具数据汇总到告知被,并以数据解析算法得到好一直用来报告的情节。

图片 8

贪图四 执行逻辑

假如图四,UI自动化在test()中推行相应场景时,性能数据搜集线程会连搜集性能数据

注明:上述的五只步骤并不需要在每个case中贯彻,对诺平等专项,除了test(),其他四单方法,都独具相同之逻辑,抽象到父类中贯彻即可,这样可得与一个专项下之差景象用例,只待写一个test方法。

数据解析方案

将到多少后,想如果最大化数据的值。合理合适的数解析方案展示愈发重要。笔者同样初始开性能测试,所能体悟的也罢便是以到同可怜堆样本数量,取平均值,再开比分析。

依框架试图提供除了平均值外,提供其他更丰富的数来评估各类性能指标。包括:

a) 中位数:以其当装有标志值中所处之岗位确定的凡事单位标志值的代表值,不叫分布数排的大或顶小值影响,从而在大势所趋水平及增强了中位数对遍布数排的代表性。中位数用于评估网络延迟样本,效果显著优化平均值。原因在于,如大部分推迟在20ms时,其中有几个老样本值2000ms以上,它们会严重拖累大全值,导致均值未克全代表该延迟数据列。

b) 方差和规范不同:结合均值来评估数据列,可以评估到数码列的离散程度。

c) 分布图或分布表:分布图或分布表也会比好之评估一个数码列的三六九等,用它来做流畅度、网络带来富、网络延迟等性能评估,能够比较直观、详细地受有比结果。

图片 9

祈求五 流畅度优化作用示意

d) 曲线图:内存性能的评估,最优解莫过于占用曲线+ 平均值了。

图片 10

图六 占用内存曲线

f) 平均值:最传统的均值,依然是相同执掌利器。

g) 极大值、极小值。

数量解析方案

用到数后,想使最大化数据的价。合理合适的数码解析方案展示愈发重要。笔者同样始举行性能测试,所能体悟的吗就是是拿到同一万分堆样本数,取平均值,再举行对比分析。

本框架试图提供除了平均值外,提供其他更加丰富的数码来评估各类性能指标。包括:

a) **
中位数:**因为它在具有标志值中所处之岗位确定的尽单位标志值的代表值,不让分布数排列的翻天覆地或最小值影响,从而在定水准达到提高了中位数对遍布数列的代表性。中位数用于评估网络延迟样本,效果明摆着优化平均值。原因在,如大部分推在20ms时,其中有几只大样本值2000ms以上,它们会严重拖累大都值,导致均值未可知一心代表该延迟数据列。

b) **
方差与规范不一:**结均值来评估数据列,可以评估到数量列的离散程度。

c) **
分布图要分布表:**布图要分布表也能够于好的评估一个数额列的好坏,用其来开流畅度、网络带来富、网络延迟等性评估,能够较直观、详细地被闹比结果。

图片 11

希冀五 流畅度优化效能示意

d) 曲线图:内存性能的评估,最优解莫过于占用曲线+ 平均值了。

图片 12

希冀六 占用内存曲线

f) 平均值:最俗的均值,依然是同等掌握利器。

g) 极大值、极小值。

必要的征

框架下了开源代码:

  1. https://github.com/xiaocong/uiautomator

  2. https://testerhome.com/topics/6938

上述对具体代码的牵线于少,后续几首延续阐述下实际逻辑是怎么落实的。

 

必要的验证

框架下了开源代码:

  1. https://github.com/xiaocong/uiautomator

  2. https://testerhome.com/topics/6938

如上对现实代码的牵线于少,后续几首延续阐述下实际逻辑是怎么落实之。

有关阅读

周折之下有新招:记一坏利用带富峰值测试的探赜索隐历程 网延迟与带富性能专项测试 譬如 google
一样测试系列的四:技术篇

 

此文已由作者授权腾讯云技术社区发布,转载请注明章出处
初稿链接:https://cloud.tencent.com/community/article/128959

有关阅读

譬如说 google
一样测试系列的四:技术篇
微信“
15。。。。。。。。。”来天去脉
坎坷之下有新招:记一糟糕使用带富峰值测试的探究过程

此文已由作者授权腾讯云技术社区发布,转载请注明章出处
初稿链接:https://cloud.tencent.com/community/article/128959

相关文章

网站地图xml地图