CN110188045A - 一种基于iOS系统自动化统计APP性能指标的方法和装置 - Google Patents
一种基于iOS系统自动化统计APP性能指标的方法和装置 Download PDFInfo
- Publication number
- CN110188045A CN110188045A CN201910466730.3A CN201910466730A CN110188045A CN 110188045 A CN110188045 A CN 110188045A CN 201910466730 A CN201910466730 A CN 201910466730A CN 110188045 A CN110188045 A CN 110188045A
- Authority
- CN
- China
- Prior art keywords
- app
- performance
- data
- performance indicator
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及应用测试技术领域,提供了一种基于iOS系统自动化统计APP性能指标的方法和装置。其中方法包括创建性能模板文件和自动化测试脚本,使用命令行启动性能检测程序,并执行所述自动化测试脚本,保存instruments性能数据结果;其中,所述的性能模板文件是指instruments的tracetemplate文件;所述性能检测程序是xcode中的instruments工具,通过命令行方式启动执行;待自动化测试脚本执行结束后,解析并获取记录的性能指标数据,反馈结果数据。本发明完全的将iOS平台下APP的性能检测过程自动化,提供一个高效和准确的检测结果。
Description
【技术领域】
本发明涉及应用测试技术领域,特别是涉及一种基于iOS系统自动化统计APP性能指标的方法和装置。
【背景技术】
移动互联网爆发时代,手机APP产品之间竞争激烈,流畅的操作能提高用户的使用体验,增加用户好感和留存率,性能检查是各产品提高竞争力的重要指标。APP性能检查主要是检查APP在运行过程中消耗的CPU、内存、FPS(Frames Per Second、每秒传输帧数)数据。
iOS性能测试只能通过xcode(苹果公司向开发人员提供的集成开发环境)中的instruments工具(iOS系统的性能调试工具集)来采集,可以实时查看并保存在跟踪文件(trace)中,通过解析跟踪文件获得硬件设备(如CPU、GPU、内存)等性能数据。在实际操作中,通常都是手动启动instruments工具,手动操作APP然后查看实时数据,或者将数据导出进行读取分析。通常上述操作流程都是以手动或者半自动的方式来操作执行,效率较低。
对比文件1(CN107688535A,一种移动设备APP性能数据显示方法及装置)其中描述的“使用top命令每个第一预设时长获取iOS系统中所有APP的性能数据”,1、它用一句话带过如何获取iOS系统中的性能数据,没有实际阐述,top命令获取性能数据,只能用在Android系统下,iOS是无法获取,此方案只是虚假介绍。
对比文件2(CN109240934A,应用程序性能测试方法、装置、及计算机可读存储介质)此技术方案主要介绍对APP安装包的压缩比例、基础性能数据、深度性能数据进行介绍,方案中描述的基础性能数据、深度性能数据是根据自己设置的评分标准进行打分(如CPU划为50%、60%、40%等区间,内存根据500KB-1M、100KB-500KB等范围),没有描述如何进行性能测试,也没有涉及到如何对iOS APP进行性能测试。
对比文件3(CN105068876B,基于分布式部署真机采集手机APP性能数据的方法)此方案是一个功能自动化测试脚本方案(录制操作动作脚本,然后执行录制的操作),方案中涉及到的性能数据只有一句话“模拟回放脚本中的各个动作,记录此过程中的网络性能数据”。通过其描述的只记录了手机网络流量,发送脚本到手机中然后执行,我们可以推测其只可能在Android机器上,与本发明所实现的方案所处具体技术领域并不相同。
鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。
【发明内容】
本发明要解决的技术问题是iOS性能测试只能通过xcode(苹果公司向开发人员提供的集成开发环境)中的instruments工具(iOS系统的性能调试工具集)来采集,可以实时查看并保存在跟踪文件(trace)中,通过解析跟踪文件获得硬件设备(如CPU、GPU、内存)等性能数据。在实际操作中,通常都是手动启动instruments工具,手动操作APP然后查看实时数据,或者将数据导出进行读取分析。通常上述操作流程都是以手动或者半自动的方式来操作执行,效率较低。
本发明进一步要解决的技术问题是如何对测试得到的结果数据,进行快捷有效的呈现,是的用户在浏览结果数据时,能够得到更及时的响应。
本发明采用如下技术方案:
第一方面,本发明提供了一种基于iOS系统自动化统计APP性能指标的方法,包括:
创建性能模板文件和自动化测试脚本,使用命令行启动性能检测程序,并执行所述自动化测试脚本,保存instruments性能数据结果;
其中,所述的性能模板文件是指instruments的tracetemplate文件;所述性能检测程序是xcode中的instruments工具,通过命令行方式启动执行;
待自动化测试脚本执行结束后,解析并获取记录的性能指标数据,反馈结果数据;
其中,所述性能指标数据包括CPU消耗、内存消耗、每秒传输帧数和网络流量消耗中的一项或者多项。
优选的,所述使用命令行启动性能检测程序中的命令行具体为:
xcrun instruments-w$device-D$instruments_path/${MODULE_NAME}-t$template$APP-e UIARESULTSPATH$instruments_path-e UIASCRIPT$script;
其中$device参数表示iOS设备识别码,$instruments_path/${MODULE_NAME}表示性能指标数据结果的保存路径,$template表示性能指标模板文件,$APP表示待测APP的bundle id,UIARESULTSPATH$instruments_path表示模拟用户操作的自动化测试脚本的日志目录,UIASCRIPT$script表示自动化模拟用户操作的自动化测试脚本。
优选的,自动化测试脚本中,设置每间隔1-5秒,由xcode的instruments工具对APP进行截屏,并将截屏图片保存在所述$instruments_path路径中;
其中,所述截屏图片包含了测试当前APP情况下,时间信息、CPU损耗、内存损耗、每秒传输帧数和网络流量消耗中的一项或者多项,且被保存为图片格式;所述截屏图片与各性能指标数据之间通过时间信息完成关联,用于在用户浏览反馈结果数据中的性能指标数据时,能同步呈现对应时间节点下的截屏图片。
优选的,所述反馈结果数据,具体包括:
将检测结果、APP crash信息发给指定人员,所述检测结果包括自动化测试脚本执行期间APP的CPU消耗、内存消耗、网络流量消耗、每秒传输帧数的走势曲线图、对APP的周期性截屏图片中的一项或者多项;
其中,所述APP crash信息是检查在自动化测试脚本执行过程中,APP是否有crash,如果有,则解析crash日志并附加到结果数据中。
优选的,在执行所述自动化测试脚本之后,所述方法还包括;
自动检测所指定的测试设备是否连接,若没有连接,则结束测试或者反馈连接问题;
自动检测所需要测试的APP是否已经安装,若没有安装,则结束测试或者反馈应用安装问题;
自动清除iOS设备内的crash日志,初始化自动化测试脚本的日志目录,其中,所述自动化测试脚本的日志目录用来保存测试执行过程中产生的性能检测文件、截屏图片和crash日志文件;
完成所述自动检测和自动清除后,开始所述执行所述自动化测试脚本。
优选的,所述创建自动化测试脚本,具体为:
根据选择的一种或者多种模拟操作APP动作,生成的自动化测试脚本用于模拟用户操作使用APP;
其中,模拟操作APP动作,包括:点击屏幕按钮操作、输入指定URL地址操作、并行启动APP操作、点击网页中指定标签操作中的一项或者多项。
优选的,解析并获取记录的性能指标数据,包括:
自动检测iOS设备内是否有所述APP对应的crash日志,如果没有,则在反馈结果数据中标记crash数量为0;如果有crash日志,则根据参数指定的dSYM文件来依次对所有crash文件进行解析,将解析后的日志内容保存到结果数据中;
其中,所述dSYM文件是iOS平台编译打包后产生的符号文件,用来对crash日志进行解析定位。这里是将无法直观阅读和定位问题的crash日志(因为crash日志类似二进制)解析为可以直接阅读和定位出错位置的文件。
优选的,所述解析并获取记录的性能指标数据,具体为:
根据执行时产生的性能统计数据trace文件,自动对trace文件内的数据进行提取并保存为独立的数据文件;其中,所述trace文件是通过在tracetemplate文件中保存instruments性能数据结果得到;
每种统计的性能指标数据对应一个数据文件,数据内包含每次记录的时间和性能指标数据。
优选的,所示反馈结果数据,还包括:
根据每次统计的性能指标数据,以统计时间为横轴以消耗数据为纵轴,绘制性能消耗走势图,所述性能消耗走势图中包含检测的性能指标和对应的截图图片。
第二方面,本发明还提供了一种基于iOS系统自动化统计APP性能指标的装置,用于实现第一方面所述的基于iOS系统自动化统计APP性能指标的方法,所述装置包括:
至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被程序设置为执行第一方面所述的基于iOS系统自动化统计APP性能指标的方法。
第三方面,本发明还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,用于完成第一方面所述的基于iOS系统自动化统计APP性能指标的方法。
本发明技术方案与现有技术相比,具有如下有益效果:使用测试脚本自动对iOS系统中的APP进行各种用户模拟操作,并可以在模拟操作的同时自动记录各类性能指标数据、APP截图和产生的crash日志。本发明完全的将iOS平台下APP的性能检测过程自动化,提供一个高效和准确的检测结果。
在本发明优选方案中,检测结束后自动对检测结果数据进行分析,最后通过图表化形式进行展示,通过邮件自动将结果发送给指定人;并且,通过屏幕截图被测试APP的方式,实现了对各类性能指示数据的高效的关联显示。
【附图说明】
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种基于iOS系统自动化统计APP性能指标的方法的流程示意图;
图2是本发明实施例提供的一种基于iOS系统自动化统计APP性能指标的方法的反馈结果展示示意图;
图3是本发明实施例提供的一种基于iOS系统自动化统计APP性能指标的方法的流程示意图;
图4是本发明实施例提供的一种具体场景下的基于iOS系统自动化统计APP性能指标的方法的流程示意图;
图5是本发明实施例提供的一种基于iOS系统自动化统计APP性能指标的装置的结构示意图;
图6是本发明实施例提供的一种基于iOS系统自动化统计APP性能指标的方法的流程示意图;
图7是本发明实施例提供的另一种基于iOS系统自动化统计APP性能指标的装置的结构示意图。
【具体实施方式】
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明的描述中,术语“内”、“外”、“纵向”、“横向”、“上”、“下”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明而不是要求本发明必须以特定的方位构造和操作,因此不应当理解为对本发明的限制。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例1:
本发明实施例1提供了一种基于iOS系统自动化统计APP性能指标的方法,在本发明各实施例中,相应的工作的运行环境,以及命令行的输入环境,都是基于苹果macOS系统,检测工具基于苹果官方开发工具xcode。如图1所示,方法包括:
在步骤201中,创建性能模板文件和自动化测试脚本,使用命令行启动性能检测程序,并执行所述自动化测试脚本,保存instruments性能数据结果。其中,所述自动化执行脚本可以是JavaScript脚本、Python脚本或者APPium脚本。
其中,所述的性能模板文件是指instruments的tracetemplate文件;所述性能检测程序是xcode中的instruments工具,通过命令行方式启动执行。
在步骤202中,待自动化测试脚本执行结束后,解析并获取记录的性能指标数据,反馈结果数据。其中,最为适用的一种反馈结果数据的方式,便是将结果数据处理后可视化展现,本发明实施例也将通过后面具体内容阐述,在本发明中对于所述可视化展现效率上的改进。
其中,所述性能指标数据包括CPU消耗、内存消耗、每秒传输帧数和网络流量消耗中的一项或者多项。
本发明实施例使用测试脚本自动对iOS系统中的APP进行各种用户模拟操作,并可以在模拟操作的同时自动记录各类性能指标数据、APP截图和产生的crash日志。本发明实施例完全的将iOS平台下APP的性能检测过程自动化,提供一个高效和准确的检测结果。
其中,在某一实例实现方式中,所述反馈结果数据可以是包括:将检测结果、APPcrash信息发给指定人员,所述检测结果包括自动化测试脚本执行期间APP的CPU消耗、内存消耗、网络流量消耗、每秒传输帧数的走势曲线图、对APP的周期性截屏图片中的一项或者多项;其中,所述APP crash信息是检查在自动化测试脚本执行过程中,APP是否有crash,如果有,则解析crash日志并附加到结果数据中。
如图2所示,为本发明实施例提供的一种反馈的结果数据的呈现效果示意图;其中,在不同的层次展示了,iOS平台下APP的性能检测的结果数据,从上到下的曲线分别为CPU消耗、内存消耗、网络流量消耗和FPS指标性能消耗走势图。其中,横坐标为相应的时间,各层次的走势图共用一套横轴时间轴,如图2中所示的09:38:00-09:40:20。而在图2中,指示标签(例如鼠标)所缩脚的位置,将会通过时间节点的匹配,找到与Memory损耗曲线中,对应时间节点相匹配的截屏图片呈现在曲线图上,具体如图2中方框所示,包含内容:
“2019.1.9-星期三-9:39:16
CPU:34.34%
Memory:111.96MB
Network:11KB
Fps:58”
便是截屏图片内容据图表现出来的效果。由此,可以简化对大数据的性能检测对象的搜索,提高显示和响应效率;通过上述的描述,可以得出,对于所述截屏图片的文件名命名可以直接采用响应截屏时间,从而进一步精简上述的匹配时间节点的效率。
在本发明实施例中,针对xcode中的instruments工具,对于步骤201中所涉及的使用命令行启动性能检测程序中的命令行,提供了一种具体可行的手段内容:
命令行为:
xcrun instruments-w$device-D$instruments_path/${MODULE_NAME}-t$template$APP-e UIARESULTSPATH$instruments_path-e UIASCRIPT$script;
其中$device参数表示iOS设备识别码,$instruments_path/${MODULE_NAME}表示性能指标数据结果的保存路径,$template表示性能指标模板文件,$APP表示待测APP的bundle id,UIARESULTSPATH$instruments_path表示模拟用户操作的自动化测试脚本的日志目录(即存储位置),UIASCRIPT$script表示自动化模拟用户操作的自动化测试脚本。示例性的,上述各参数值可以表现为device为“f9b2f389f7b5c359b14ec637306412bb69facdfe”;app为
“com.xxxxx”;script为“$WORKDIR/scripts/UIAutoMonkey.js”;template为:
“$WORKDIR/templates/Automation_Monitor_CoreAnimation_Energy_Network.tracetemplate”;result_path为“$WORKDIR/log/$build_time”,其中,所述result_path为存储结果数据的路径(未在上述命令行中直接表现出来)。
在本发明实施例实现过程中,对于自动化测试脚本中,优选的是设置每间隔1-5秒(例如在本发明实施例中所采用的3s作为间隔设置),由xcode的instruments工具对APP进行截屏,并将截屏图片保存在所述$instruments_path路径中。
在本发明实施例1在实现之前,通常需要对环境进行必要的检测,所述环境包括测试对象、测试连接情况等等,因此,在执行所述自动化测试脚本之前,如图3所示,所述方法还包括;
在步骤301中,自动检测所指定的测试设备是否连接,若没有连接,则结束测试或者反馈连接问题。
其中,反馈连接问题的方式,若采用的是PC和iOS系统连接的测试方式,则可以是在桌面上弹出连接问题的提示窗口的方式完成。
在步骤302中,自动检测所需要测试的APP是否已经安装,若没有安装,则结束测试或者反馈应用安装问题。
处于减少操作的便捷性考虑,还可以直接在iOS系统侧弹出安装相应APP应用的窗口,从而能够减少操作人员从iOS系统上未安装有相应APP的结论中反映过来时,去查找相应的APP然后在进行安装的繁琐过程。
在步骤303中,自动清除iOS设备内的crash日志,初始化自动化测试脚本的日志目录,其中,所述自动化测试脚本的日志目录用来保存测试执行过程中产生的性能检测文件、截屏图片和crash日志文件。
在步骤304中,完成所述自动检测和自动清除后,再开始所述执行所述自动化测试脚本。
需要补充描述的,上述步骤303-304是针对只有单级文件夹存在的操作方式,而在实际操作方式中,若针对每一个APP测试,每一个APP每一次测试,均设置单独文件夹存储性能检测文件、截屏图片和crash日志文件时,则上述步骤303-304的清楚操作,便会转化为相应存储用文件夹的建立过程了。其具体建立方法可以借鉴常规macOS系统的控制方法,在此不再赘述。
在本发明实施例中,所述创建自动化测试脚本,除了包含需要对上述命令行进行在校对外,通常还会包含模拟操作APP动作的相关指定,具体为:
根据选择的一种模拟操作APP动作,生成的自动化测试脚本用于模拟用户操作使用APP;
其中,模拟操作APP动作,包括:点击屏幕按钮操作、输入指定URL地址操作、并行启动APP操作、点击网页中指定标签操作中的一项或者多项。在具体实现方式中,所述模拟操作APP动作的脚本,可以是融入到总的自动化测试脚本中,也可以通过创建单独的子脚本,并利用脚本之间的调用完成,具体形式再此不做特殊限定。
在模拟操作APP方式可以是人工操作,例如:针对固定的使用路径和操作方式;或者由自动化测试脚本来进行随机模拟操作事件,或者由自动化测试脚本来进行自动化固定操作流程。
在本发明实施例的步骤202中,涉及的解析并获取记录的性能指标数据,包括:
自动检测iOS设备内是否有所述APP对应的crash日志,如果没有,则在反馈结果数据中标记crash数量为0;如果有crash日志,则根据参数指定的dSYM文件来依次对所有crash文件进行解析,将解析后的日志文件保存。
其中,所述dSYM文件是iOS平台编译打包后产生的符号文件,用来对crash日志进行解析定位。
在本发明实施例的步骤202中,涉及的所述解析并获取记录的性能指标数据,还包括:
根据执行时产生的性能统计数据trace文件,自动对trace文件内的数据进行提取并保存为独立的数据文件;其中,所述trace文件是通过在tracetemplate文件中保存instruments性能数据结果得到;
每种统计的性能指标数据对应一个数据文件,数据内包含每次记录的时间和性能指标数据。这里,之所以提出保存方式为每种统计的性能指标数据对应一个数据文件,是因为实际检测过程中,对应于任一性能指标数据都是包含有海量数据的,因此,将不同的性能指标数据放在一个数据文件中的话,将会大大影响后续展示结果数据的效率。例如:在相应展示图2所示的曲线图时,效率上会相差几十个ms,这对于用户体验来说,是有巨大差异的。
在本发明实施例的步骤202中,涉及的反馈结果数据,还包括:
根据每次统计的性能指标数据,以统计时间为横轴以消耗数据为纵轴,绘制性能消耗走势图,所述性能消耗走势图中包含检测的性能指标和对应的截图图片。
实施例2:
本发明实施例提供了一种基于iOS系统自动化统计性能指标的方法,其相关的必要准备动作或者内容,可以参考实施例1中相关描述,本发明实施例将以其使用即可通过实施例1中方法生成并存在的方式进行阐述,从而简化本发明实施例的描述内容,如图4所示,具体包括:
在步骤401中,将测试使用的iOS平台(本发明实施例中以iOS手机为例)与测试平台(例如PC电脑)连接(例如通过USB集线器连接)。
自动化测试脚本执行后,检测必需的参数是否缺失(即用户输入的命令行中相关信息是否有缺失或者错误),检测手机是否连接成功,检查待测的APP是否安装成功。其中,必要的参数包括实施例1中给予呈现的启动性能检测程序中的命令中所输入的命令字段,这是为了进一步保证后续步骤执行的可靠性,即对自身数据完成了自我校对。
其中,所述步骤401中必需的参数,表现为通过对脚本所传的参数类型和APP个数进行检查判断,如果缺少设备信息、性能模板文件等必要参数,则直接结束测试并返回必需的参数列表;否则继续执行脚本。
所述步骤401中检测待测APP是否已经安装,如果未安装,则返回错误信息并结束测试。其中检测APP是否已经安装的原理为:通过下面代码来获取iOS手机中的已安装APP,然后判断待测APP的bundle id(系统APP唯一识别的ID)是否在其中。代码为:
NSArray*allApplications=[workspace performSelector:@selec tor(allApplications)];
在本发明实施例中,所有的命令行的执行,都是基于苹果macOS系统来实现的,检测工具基于苹果官方开发工具xcode,此代码(NSArray*allApplications)是object-C语言,利用这个代码在苹果macOS系统中获取手机里面安装的app信息。
在步骤402中,启动模拟用户操作APP的自动化测试脚本,同时启动性能指标监控程序,在操作APP的过程中,实时记录APP所消耗的各种性能指标数据,并保存在本地文件中。
其中,整个方案是一个脚本,Python写的,包括整套检测模块,如环境初始化、自动化模拟操作脚本调用、性能检测工具调用、结果解析、报告发送等。此处说的模拟用户操作APP的自动化测试脚本是指的模拟用户操作的脚本(是js代码),可以理解为是上述整个方案大脚本下的子脚本。
此处,如实施例1中所述,性能监控工具使用xcode的instruments工具,启动命令为:
xcrun instruments-w$device-D$instruments_path/${MODULE_NAME}-t$template$APP-e UIARESULTSPATH$instruments_path-e UIASCRIPT$script;其中$device参数表示iOS设备识别码,$instruments_path/${MODULE_NAME}表示性能指标数据文件(.trace文件)保存路径,$template表示性能指标模板文件,$APP表示待测APP的bundleid,UIARESULTSPATH$instruments_path表示模拟用户操作的自动化测试脚本执行日志目录,UIASCRIPT$script表示自动化模拟用户操作的自动化测试脚本(js文件)。测试脚本中,设置每间隔3秒对APP进行截屏,将截屏图片保存在$instruments_path路径中。
其中,性能指标模板文件是之前通过instruments工具手动生成的,模块文件中可以包含CPU消耗、内存消耗、电量消耗、网络流量消耗、fps等性能指标的其中一个或者多个。根据项目需求可以创建不同类型的模板文件。
其中,模拟用户操作可以使用instruments默认的自动化测试脚本(js脚本),也可以选择手动来操作(可以覆盖特定的操作APP流程),或者其他自动化测试工具,如appium等。
在步骤403中,性能检测程序结束后,检查是否有crash产生,如果有则利用dSYM符号文件对crash日志进行解析;然后对保存的性能指标数据文件(trace文件)进行解析,转存为统一格式的数据文本文件,供后面进行性能消耗曲线图绘制(如图2所示)。
其中,判断是否产生crash是通过读取iOS设备中的crash日志,通过bundle id进行过滤来实现。如果有crash日志,则通过给定的dSYM符号文件,利用symbolicatecrash工具对crash日志进行解析,获取详细的crash调试信息。
其中,对性能指标数据文件(trace文件)进行读取和解析,将每个性能指标消耗数据存放在单独的log日志文件中,里面数据内容包含必须的每次记录时的时间戳+性能指标数据,以及其他辅助信息,日志文件为CPU日志文件、内存日志文件、FPS日志文件、流量日志文件等。
在步骤404中,根据统计的性能指标数据绘制html格式的性能消耗走势图。其中x轴为时间轴,记录了整个测试的时间周期;y轴为对应的每类性能指标数据走势图,图2中支持鼠标悬浮停顿时显示对应时刻的性能消耗数据值,并附上APP的截屏链接,供查看检测过程中APP的界面展现状态,如附图2所示。
优选的,在html格式的结果页面,显示整个检测过程中每类性能指标消耗的平均值,如果有crash产生,则附上crash日志链接。
其中CPU为消耗百分比(单位%),内存为APP占用的具体数值(单位为M),FPS为APP每个时刻对应的每秒传输帧数具体数值,流量为APP对应时刻消耗的流量数值(单位为kb)。
在步骤405中,邮件发送测试结果给指定人,邮件内包含一些测试信息、手机设备信息以及html结果附图。
其中测试信息和手机设备信息包含:开始时间和结束时间、手机系统版本、型号等。
实施例3:
如图5所示,本发明提供了一种基于iOS系统自动化统计性能指标的装置,包括测试执行模块1、数据记录模块2和数据统计模块3,在具体实现过程中,所示测试执行模块1、数据记录模块2和数据统计模块3可以是一个或者多个处理器来实现,也可以是分布到云平台总的不同主机中实现,在此不做特殊限定。在本实施例中,更多的是出于方法功能分配角度,设定了所述测试执行模块1、数据记录模块2和数据统计模块3。具体的:
所述测试执行模块1,用于启动模拟用户操作APP的自动化脚本,所述自动化脚本调起模拟操作工具(选用instruments官方的自动模拟操作工具,即js脚本),所述模拟操作工具对待测APP调起到前台进行模拟操作从而进行性能测试,可以设置模拟操作是随机操作或者是固定流程操作。
所述数据记录模块2,命令行启动instruments工具,记录APP在模拟用户操作过程中时至少一个性能指标数据。
所述数据统计模块3,用于模拟用户操作APP的自动化脚本结束后,解析性能指标数据文件并统计分析每种性能指标数据。
为了能够对实施例1中结果数据做有效的呈现,结合本发明实施例,还存在一种优选的实现方案,其中所述基于iOS系统自动化统计性能指标的装置,还包括图形绘制模块4,所述图形绘制模块4,用于根据解析后的性能指标数据,以统计时间为横轴以消耗数据为纵轴,绘制性能消耗走势图(如图2所示),所述性能消耗走势图中包含待测APP对各种性能指标的消耗走势。
结合本发明实施例,还存在一种优选的实现方案,所述iOS系统自动化统计性能指标装置,还包括数据发送模块5。所述数据发送模块5,用于将测试信息、iOS平台设备信息以及性能指标数据自动发给指定人员,所述测试信息包括开始时间、结束时间和/或记录次数,所述iOS平台设备信息包括iOS平台系统版本和/或型号。
相比较上述的测试执行模块1、数据记录模块2和数据统计模块3可以是有CPU来实现,而相应的图形绘制模块4可以由CPU或者GPU来实现不同的是,所述数据发送模块5通常是通过物理网卡或者无线收发组件实现,而相应各自的物理连接可以参考现有常规实现来完成,本发明实施例所要保护的是各自所用于执行完成的功能。
实施例4:
本实施例是基于上述实施例1所公开的方法基础上,用一个更为完整的场景并结合具体文件对象表现形式,描述相应实施例1中所涉及的方法内容,具体表现为对APP进行CPU、内存、网络流量和FPS指标检测。如图6所示,包括:
在步骤501中,将测试使用的iOS手机通过USB集线器连接到电脑。执行自动化测试脚本后,检测必需的参数(iOS设备识别码、性能指标模板文件、待测APP的bundle id、自动化模拟测试脚本)是否缺失,如果缺失一个或多个,则直接返回参数缺失信息并结束测试;判断手机是否连接成功(可以通过指令调取相应USB接口是否成功连接手机来完成,例如在自动化测试脚本中导入命令instruments-s devices可以获取连接此电脑的设备信息列表,通过判断iOS设备识别码是否在列表中可以得知对应的设备是否正确连接电脑),若不成功,则直接返回连接失败信息并结束测试。然后判断待测APP是否已经成功安装(相应检测方式可以参考实施例3中步骤401相关内容,在此不再赘述),若没有则返回对应的错误信息然后退出执行脚本。
在步骤502中,选用instruments官方的自动模拟操作工具(js脚本),对待测的APP进行自动随机模拟操作测试。自动模拟操作过程使待测APP被调起到前台进行点击、滑动等操作,在随机模拟操作同时,记录CPU、内存、网络流量和FPS指标数据,并保存在trace文件中。测试命令为:xcrun instruments–w iOS设备识别码–d trace文件路径-t性能指标模板文件待测APP的bundle id–e UIARESULTSPATH模拟操作结果目录-e UIASCRIPT自动化模拟测试脚本。脚本在执行过程中,每间隔3秒进行一次截屏操作,并保存在模拟操作结果目录中。在本发明各实施例中,间隔的时间长短是经过考究的,截屏间隔太短,会造成截屏图片数量过多影响后续的呈现时的相应效率(例如图2的呈现方式),而经过测试,间隔3秒通常不会产生性能参数突变,而且,可以每隔3秒内的性能参数趋势曲线适用一张截屏图片,不会造成用户观察上的明显不适。
其中,除了选用instruments官方的自动模拟操作工具外,还可以使用appium工具,用Python语言来编写自动化测试脚本;所述appium是一个自动化测试开源工具,支持Android和ios,用来做功能自动化的测试工具。
其中性能指标模板文件通过instruments提前生成,包含CPU、内存、网络流量和FPS指标类型。
其中,选取的模拟操作工具在此实施方案中选的是instruments官方的js测试脚本,除此外还可以选择APPium或者人工操作,达到APP在被模拟正常使用过程中记录性能指标的目的。
在步骤503中,js自动模拟操作脚本执行结束后,检测APP在执行过程中是否产生crash文件,如果有,则提取所有产生的crash日志然后通过symbolicatecrash工具对crash日志进行解析。解析性能指标trace文件,将每类指标数据单独提取出来,分别存在CPU.log、mem.log、neweork.log、fps.log文件中,在此方案中会产生4个日志文件。
在步骤504中,根据APP的CPU、内存、网络流量和FPS指标检测绘制性能消耗走势图。其中x为横轴,记录了整个测试的时间周期;y轴为对应的每类性能指标数据走势图,此实施方案中,包含了4个走势图(如图2所示);走势图支持鼠标悬浮停顿显示对应时刻具体的性能消耗数据值,并附上之执行过程中对应时刻的APP截屏链接,供查看检测过程中APP的界面展现状态。
其中性能数据指标显示数值,CPU为消耗百分比(单位%),内存为APP占用的具体数值(单位为M),FPS为APP每个时刻对应的每秒传输帧数具体数值,流量为APP对应时刻消耗的流量数值(单位为kb)。
其中此案例中使用的绘图制表工具为highcharts。
在步骤505中,邮件发送测试结果给指定人,指定人员邮箱在配置文件中指定。邮件内包含一些测试信息、手机设备信息以及html结果附图。
实施例5:
如图7所示,是本发明实施例的基于iOS系统自动化统计APP性能指标的装置的架构示意图。本实施例的基于iOS系统自动化统计APP性能指标的装置包括一个或多个处理器21以及存储器22。其中,图7中以一个处理器21为例。
处理器21和存储器22可以通过总线或者其他方式连接,图7中以通过总线连接为例。
存储器22作为一种基于iOS系统自动化统计APP性能指标的方法和装置非易失性计算机可读存储介质,可用于存储非易失性软件程序和非易失性计算机可执行程序,如实施例1中的基于iOS系统自动化统计APP性能指标的方法。处理器21通过运行存储在存储器22中的非易失性软件程序和指令,从而执行基于iOS系统自动化统计APP性能指标的方法。
存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器22可选包括相对于处理器21远程设置的存储器,这些远程存储器可以通过网络连接至处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例1中的基于iOS系统自动化统计APP性能指标的方法,例如,执行以上描述的图1、3和/或4所示的各个步骤。
值得说明的是,上述装置和系统内的模块、单元之间的信息交互、执行过程等内容,由于与本发明的处理方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于iOS系统自动化统计APP性能指标的方法,其特征在于,包括:
创建性能模板文件和自动化测试脚本,使用命令行启动性能检测程序,并执行所述自动化测试脚本,保存instruments性能数据结果;
其中,所述的性能模板文件是指instruments的tracetemplate文件;所述性能检测程序是xcode中的instruments工具,通过命令行方式启动执行;
待自动化测试脚本执行结束后,解析并获取记录的性能指标数据,反馈结果数据;
其中,所述性能指标数据包括CPU消耗、内存消耗、每秒传输帧数和网络流量消耗中的一项或者多项。
2.如权利要求1所述的基于iOS系统自动化统计APP性能指标的方法,其特征在于,所述使用命令行启动性能检测程序中的命令行具体为:
xcrun instruments-w$device-D$instruments_path/${MODULE_NAME}-t$template$APP-e UIARESULTSPATH$instruments_path-e UIASCRIPT$script;
其中$device参数表示iOS设备识别码,$instruments_path/${MODULE_NAME}表示性能指标数据结果的保存路径,$template表示性能指标模板文件,$APP表示待测APP的bundleid,UIARESULTSPATH$instruments_path表示模拟用户操作的自动化测试脚本的日志目录,UIASCRIPT$script表示自动化模拟用户操作的自动化测试脚本。
3.如权利要求2所述的基于iOS系统自动化统计APP性能指标的方法,其特征在于,自动化测试脚本中,设置每间隔1-5秒,由xcode的instruments工具对APP进行截屏,并将截屏图片保存在所述$instruments_path路径中;
其中,所述截屏图片包含了测试当前APP情况下,时间信息、CPU损耗、内存损耗、每秒传输帧数和网络流量消耗中的一项或者多项,且被保存为图片格式;所述截屏图片与各性能指标数据之间通过时间信息完成关联,用于在用户浏览反馈结果数据中的性能指标数据时,能同步呈现对应时间节点下的截屏图片。
4.如权利要求1所述的基于iOS系统自动化统计APP性能指标的方法,其特征在于,所述反馈结果数据,具体包括:
将检测结果、APP crash信息发给指定人员,所述检测结果包括自动化测试脚本执行期间APP的CPU消耗、内存消耗、网络流量消耗、每秒传输帧数的走势曲线图、对APP的周期性截屏图片中的一项或者多项;
其中,所述APP crash信息是检查在自动化测试脚本执行过程中,APP是否有crash,如果有,则解析crash日志并附加到结果数据中。
5.如权利要求1所述的基于iOS系统自动化统计APP性能指标的方法,其特征在于,在执行所述自动化测试脚本之后,所述方法还包括;
自动检测所指定的测试设备是否连接,若没有连接,则结束测试或者反馈连接问题;
自动检测所需要测试的APP是否已经安装,若没有安装,则结束测试或者反馈应用安装问题;
自动清除iOS设备内的crash日志,初始化自动化测试脚本的日志目录,其中,所述自动化测试脚本的日志目录用来保存测试执行过程中产生的性能检测文件、截屏图片和crash日志文件;
完成所述自动检测和自动清除后,开始所述执行所述自动化测试脚本。
6.如权利要求1所述的基于iOS系统自动化统计APP性能指标的方法,其特征在于,所述创建自动化测试脚本,具体为:
根据选择的一种或者多种模拟操作APP动作,生成的自动化测试脚本用于模拟用户操作使用APP;
其中,模拟操作APP动作,包括:点击屏幕按钮操作、输入指定URL地址操作、并行启动APP操作、点击网页中指定标签操作中的一项或者多项。
7.如权利要求1所述的基于iOS系统自动化统计APP性能指标的方法,其特征在于,解析并获取记录的性能指标数据,包括:
自动检测iOS设备内是否有所述APP对应的crash日志,如果没有,则在反馈结果数据中标记crash数量为0;如果有crash日志,则根据参数指定的dSYM文件来依次对所有crash文件进行解析,将解析后的日志内容保存到结果数据中;
其中,所述dSYM文件是iOS平台编译打包后产生的符号文件,用来对crash日志进行解析定位。
8.如权利要求6所述的基于iOS系统自动化统计APP性能指标的方法,其特征在于,所述解析并获取记录的性能指标数据,具体为:
根据执行时产生的性能统计数据trace文件,自动对trace文件内的数据进行提取并保存为独立的数据文件;其中,所述trace文件是通过在tracetemplate文件中保存instruments性能数据结果得到;
每种统计的性能指标数据对应一个数据文件,数据内包含每次记录的时间和性能指标数据。
9.如权利要求7所述的基于iOS系统自动化统计APP性能指标的方法,其特征在于,所示反馈结果数据,还包括:
根据每次统计的性能指标数据,以统计时间为横轴以消耗数据为纵轴,绘制性能消耗走势图,所述性能消耗走势图中包含检测的性能指标和对应的截图图片。
10.一种基于iOS系统自动化统计APP性能指标的装置,其特征在于,所述装置包括:
至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被程序设置为执行权利要求1-9任一所述的基于iOS系统自动化统计APP性能指标的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910466730.3A CN110188045A (zh) | 2019-05-31 | 2019-05-31 | 一种基于iOS系统自动化统计APP性能指标的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910466730.3A CN110188045A (zh) | 2019-05-31 | 2019-05-31 | 一种基于iOS系统自动化统计APP性能指标的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110188045A true CN110188045A (zh) | 2019-08-30 |
Family
ID=67719205
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910466730.3A Pending CN110188045A (zh) | 2019-05-31 | 2019-05-31 | 一种基于iOS系统自动化统计APP性能指标的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110188045A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111061647A (zh) * | 2019-12-26 | 2020-04-24 | 行吟信息科技(上海)有限公司 | 一种软件性能自动化测试方法、装置及电子设备 |
CN111638991A (zh) * | 2020-06-05 | 2020-09-08 | 贝壳技术有限公司 | 用于解析崩溃文件的方法与系统 |
CN112306862A (zh) * | 2020-10-14 | 2021-02-02 | 北京健康之家科技有限公司 | 一种前端自动化测试系统及方法、存储介质、计算设备 |
CN112597060A (zh) * | 2021-01-19 | 2021-04-02 | 深圳市前海手绘科技文化有限公司 | 一种app性能测试的方法及应用装置 |
CN113419932A (zh) * | 2021-05-26 | 2021-09-21 | 荣耀终端有限公司 | 一种设备性能分析方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510172A (zh) * | 2009-03-23 | 2009-08-19 | 金蝶软件(中国)有限公司 | 测试系统及方法 |
CN106055473A (zh) * | 2016-05-23 | 2016-10-26 | 乐视控股(北京)有限公司 | 一种测试方法及装置 |
CN106844179A (zh) * | 2017-02-07 | 2017-06-13 | 上海与德信息技术有限公司 | 日志存储方法及装置 |
CN107480036A (zh) * | 2017-07-07 | 2017-12-15 | 网易(杭州)网络有限公司 | iOS移动应用的自动测试方法、装置、存储介质及终端 |
CN109298982A (zh) * | 2018-08-29 | 2019-02-01 | 广州虎牙信息科技有限公司 | Ios系统性能数据的采集方法及装置 |
-
2019
- 2019-05-31 CN CN201910466730.3A patent/CN110188045A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510172A (zh) * | 2009-03-23 | 2009-08-19 | 金蝶软件(中国)有限公司 | 测试系统及方法 |
CN106055473A (zh) * | 2016-05-23 | 2016-10-26 | 乐视控股(北京)有限公司 | 一种测试方法及装置 |
CN106844179A (zh) * | 2017-02-07 | 2017-06-13 | 上海与德信息技术有限公司 | 日志存储方法及装置 |
CN107480036A (zh) * | 2017-07-07 | 2017-12-15 | 网易(杭州)网络有限公司 | iOS移动应用的自动测试方法、装置、存储介质及终端 |
CN109298982A (zh) * | 2018-08-29 | 2019-02-01 | 广州虎牙信息科技有限公司 | Ios系统性能数据的采集方法及装置 |
Non-Patent Citations (2)
Title |
---|
JAVA_XIAOXIAO: "iOS性能自动化之instruments", 《HTTPS://BLOG.CSDN.NET/JAVA_XIAOXIAO/ARTICLE/DETAILS/75449042》 * |
黑马程序员: "《jQuery前端开发实战教程》", 30 October 2018 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111061647A (zh) * | 2019-12-26 | 2020-04-24 | 行吟信息科技(上海)有限公司 | 一种软件性能自动化测试方法、装置及电子设备 |
CN111638991A (zh) * | 2020-06-05 | 2020-09-08 | 贝壳技术有限公司 | 用于解析崩溃文件的方法与系统 |
CN111638991B (zh) * | 2020-06-05 | 2023-09-19 | 贝壳技术有限公司 | 用于解析崩溃文件的方法与系统 |
CN112306862A (zh) * | 2020-10-14 | 2021-02-02 | 北京健康之家科技有限公司 | 一种前端自动化测试系统及方法、存储介质、计算设备 |
CN112306862B (zh) * | 2020-10-14 | 2024-06-07 | 北京水滴科技集团有限公司 | 一种前端自动化测试系统及方法、存储介质、计算设备 |
CN112597060A (zh) * | 2021-01-19 | 2021-04-02 | 深圳市前海手绘科技文化有限公司 | 一种app性能测试的方法及应用装置 |
CN113419932A (zh) * | 2021-05-26 | 2021-09-21 | 荣耀终端有限公司 | 一种设备性能分析方法和装置 |
CN113419932B (zh) * | 2021-05-26 | 2022-05-06 | 荣耀终端有限公司 | 一种设备性能分析方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110188045A (zh) | 一种基于iOS系统自动化统计APP性能指标的方法和装置 | |
CN104407980B (zh) | 移动应用自动化测试装置和方法 | |
CN107506300B (zh) | 一种用户界面测试方法、装置、服务器和存储介质 | |
US8433733B2 (en) | Web application record-replay system and method | |
CN109871326A (zh) | 一种脚本录制的方法和装置 | |
CN111459794A (zh) | 通信网络测试方法、装置、计算机设备和存储介质 | |
CN104850499B (zh) | 基带软件的自动化测试方法及装置 | |
CN105426278A (zh) | 一种客户端设备性能测试方法及系统 | |
CN110196809B (zh) | 接口测试方法及装置 | |
CN113778898B (zh) | 用户界面自动化测试方法、装置、电子设备及存储介质 | |
CN111858371A (zh) | 软件测试方法、系统、存储介质及计算机设备 | |
CN110908915B (zh) | 一种测试覆盖率的展示方法、装置及计算机系统 | |
CN110413517A (zh) | 一种测试报告生成方法、装置、电子设备和存储介质 | |
CN105224465B (zh) | 网页调试方法及装置 | |
CN107704389B (zh) | 一种页面测试方法及装置 | |
CN109491883A (zh) | 一种安卓平台下多应用间性能同时检测对比方法与系统 | |
CN114546881B (zh) | 应用软件测试方法、电子设备和计算机可读存储介质 | |
CN108021503A (zh) | 自动化功能测试的方法、装置和计算机存储介质 | |
CN108334443A (zh) | 生成测试用例的方法、装置、设备及计算机可读存储介质 | |
CN110688173B (zh) | 一种跨平台界面框架中组件的定位方法、装置及电子设备 | |
CN114942890B (zh) | 一种用户界面测试方法、装置、设备及介质 | |
CN112380800B (zh) | 自动评测的在线fpga实验平台及相关方法 | |
CN112380133A (zh) | 一种指令集模拟器利用功能库仿真的方法及装置 | |
CN111414194A (zh) | 一种接口信息生成方法、系统、电子设备及存储介质 | |
CN112148581A (zh) | 代码规范检查方法、装置、系统及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190830 |