System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及安卓应用能耗评估,具体涉及一种面向代码重构的安卓应用能耗评估方法。
技术介绍
1、随着移动设备的普及和应用的多样性,智能手机、平板电脑等已经成为人们日常生活和工作中不可或缺的工具。到2022年,全球智能手机用户数量已经超过了66亿,其中安卓系统以其开放性和灵活性占据了约71.8%的市场份额。大量的用户长时间、高频率使用各种应用,无疑会消耗大量的电力。这种电力消耗不仅意味着能源的浪费,更会导致大量的二氧化碳排放,加剧全球气候变化的问题。此外,高能耗还会影响设备的电池寿命,降低用户的使用体验。更为重要的是,能耗问题已经成为影响安卓应用用户体验和卸载决策的关键因素,用户更倾向于使用那些运行流畅、不会过快消耗电量的应用。因此,能耗已经成为开发者和用户都高度关注的质量属性。
2、在软件工程领域,代码重构可在不改变外部功能和行为的约束下,通过调整代码内部结构而达到改进软件质量的目的。代码重构被视作一种系统化、严谨且持续进行的代码优化过程。它一直是工业界在软件开发和维护阶段提升质量而普遍采用的方法。此外,已有大量研究表明不同类型的重构对应用程序的能耗产生不同的影响。有的重构可能导致运行时能耗增加,而有的则可能降低运行时能耗。因此,代码重构不仅可以提升软件的质量属性,同时在一定程度上有助于改善安卓应用程序的运行时能耗。
3、因此,如何构建最优的测试用例集以实现对代码结构变化的全面覆盖,进而准确评估代码重构对能耗的具体影响,以便为安卓应用程序的更新提供重要的判断指标,是一个亟待研究解决的问题。针对上述挑战,近
技术实现思路
1、本专利技术的目的在于提供一种面向代码重构的安卓应用能耗评估方法,该方法有利于精确评估代码重构前后的安卓应用能耗。
2、为了实现上述目的,本专利技术采用的技术方案是:一种面向代码重构的安卓应用能耗评估方法,包括以下步骤:
3、s1、对于应用程序,生成方法关联的测试用例集;
4、s2、从生成的测试用例集中选择重构影响的方法所关联的测试用例,形成用于评估重构前后安卓应用能耗的测试用例集;
5、s3、对于给定的多个基准应用,通过重构工具进行重构,得到各个基准应用及其对应的重构方法;对于各个基准应用及其对应的重构方法,通过步骤s1-s2的方法获得对应的测试用例集;对于各个基准应用及其对应的重构方法,提取应用重构前、后对应的能耗行为的动态特征数据,并估算应用重构前、后对应的能耗数据,进而生成面向代码重构的能耗数据集;
6、s4、构建代码重构前后安卓应用能耗的预测模型;
7、s5、利用构建的预测模型进行安卓应用能耗评估。
8、进一步地,步骤s1中,对于应用程序appk,生成方法关联的测试用例集,具体包括以下步骤:
9、s101、根据输入的应用程序源代码地址apknamepath,获取应用程序名apkname;
10、s102、根据应用程序名apkname获取pc端上与其相对应的测试用例集listcasepc;
11、s103、将测试用例集listcasepc推送至手机端;
12、s104、对于测试用例集listcasepc中的每个测试用例,执行步骤s105-s108;完成后,执行步骤s109;
13、s105、将应用程序appk安装至手机端;
14、s106、开启jacoco插件装置,启动代码插桩;
15、s107、启动应用程序appk,然后执行测试用例;测试用例执行完毕后,退出应用程序appk;
16、s108、获取jacoco覆盖率报告,并将其加入至报告列表listreport中;
17、s109、通过对报告列表listreport中每个jacoco覆盖率报告的分析,获取每个测试用例关联的方法列表,从而得到方法关联的测试用例集并输出。
18、进一步地,步骤s2中,基于代码重构影响方法列表,从生成的测试用例集中选择重构影响的方法所关联的测试用例,具体包括以下步骤:
19、s201、根据应用程序名查找应用程序对应的方法关联的测试用例集,然后执行步骤s202;
20、s202、根据输入的代码重构影响方法列表methodulist,对于代码重构影响方法列表methodulist中的每个方法,执行步骤s203;完成后,执行步骤204;
21、s203、根据该方法的方法名称methodname,从方法关联的测试用例集中查找是否存在该方法,是则从方法关联的测试用例集中选出该方法对应的测试用例,否则重新生成方法关联的测试用例集,然后从重新生成的方法关联的测试用例集中选出该方法对应的测试用例;
22、s204、综合得到的所有测试用例,形成用于评估重构前后安卓应用能耗的测试用例集。
23、进一步地,综合得到的所有测试用例,具体方法为:如果代码重构影响方法列表methodulist中的各个方法对应的测试用例集之间存在交集,则选择交集作为评估重构前后安卓应用能耗的测试用例集,如果不存在交集,则从各个方法对应的测试用例集中分别随机选取若干个测试用例,形成用于评估重构前后安卓应用能耗的测试用例集。
24、进一步地,步骤s3中,对于一个基准应用及其对应的重构方法,提取应用重构前、后运行时对应的能耗行为的动态特征数据,具体包括:利用/proc/stat命令获取全局的系统行为信息;利用/proc/pid/stat命令获取进程的本地信息;利用strace-c–p pid命令获取进程的系统调用信息。
25、进一步地,步骤s3中,对于输入的基准应用源代码地址集apknamepathlist和方法关联的测试用例集casemethodlist,估算应用重构前、后对应的能耗数据,输出对应的能耗数据集energylist,具体包括以下步骤:
26、s301、进行环境初始化;进行测量设备初始化;
27、s302、对基准应用源代码地址集apknamepathlist中每个应用程序源代码地址apknamepath,执行步骤s303-s313;完成后,执行步骤s314;
28、s303、通过代码结构变化采样获得经重构操作后,代码有所更改的方法列表,即代码重构影响方法列表methodulist;本文档来自技高网...
【技术保护点】
1.一种面向代码重构的安卓应用能耗评估方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的面向代码重构的安卓应用能耗评估方法,其特征在于,步骤S1中,对于应用程序Appk,生成方法关联的测试用例集,具体包括以下步骤:
3.根据权利要求1所述的面向代码重构的安卓应用能耗评估方法,其特征在于,步骤S2中,基于代码重构影响方法列表,从生成的测试用例集中选择重构影响的方法所关联的测试用例,具体包括以下步骤:
4.根据权利要求3所述的面向代码重构的安卓应用能耗评估方法,其特征在于,综合得到的所有测试用例,具体方法为:如果代码重构影响方法列表MethodUList中的各个方法对应的测试用例集之间存在交集,则选择交集作为评估重构前后安卓应用能耗的测试用例集,如果不存在交集,则从各个方法对应的测试用例集中分别随机选取若干个测试用例,形成用于评估重构前后安卓应用能耗的测试用例集。
5.根据权利要求1所述的面向代码重构的安卓应用能耗评估方法,其特征在于,步骤S3中,对于一个基准应用及其对应的重构方法,提取应用重构前、后运行时对应的能耗行为的动态特
6.根据权利要求1所述的面向代码重构的安卓应用能耗评估方法,其特征在于,步骤S3中,对于输入的基准应用源代码地址集ApkNamePathList和方法关联的测试用例集CaseMethodlist,估算应用重构前、后对应的能耗数据,输出对应的能耗数据集EnergyList,具体包括以下步骤:
7.根据权利要求1所述的面向代码重构的安卓应用能耗评估方法,其特征在于,步骤S4中,基于生成的面向代码重构的能耗数据集,通过随机森林算法来构建代码重构前后安卓应用能耗的预测模型。
8.根据权利要求7所述的面向代码重构的安卓应用能耗评估方法,其特征在于,所述预测模型由多个决策树回归模型组合而成,所述预测模型的最终预测结果通过所述多个决策树回归模型的预测结果的平均值得出;所述预测模型的工作方法为:首先从能耗数据集中随机抽取样本形成n个训练样本集;然后,基于这n个训练样本集,构建n个决策树回归模型,每个决策树回归模型均生成一个预测结果;最后,将n个预测结果取平均值,以此作为最终预测结果并输出。
...【技术特征摘要】
1.一种面向代码重构的安卓应用能耗评估方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的面向代码重构的安卓应用能耗评估方法,其特征在于,步骤s1中,对于应用程序appk,生成方法关联的测试用例集,具体包括以下步骤:
3.根据权利要求1所述的面向代码重构的安卓应用能耗评估方法,其特征在于,步骤s2中,基于代码重构影响方法列表,从生成的测试用例集中选择重构影响的方法所关联的测试用例,具体包括以下步骤:
4.根据权利要求3所述的面向代码重构的安卓应用能耗评估方法,其特征在于,综合得到的所有测试用例,具体方法为:如果代码重构影响方法列表methodulist中的各个方法对应的测试用例集之间存在交集,则选择交集作为评估重构前后安卓应用能耗的测试用例集,如果不存在交集,则从各个方法对应的测试用例集中分别随机选取若干个测试用例,形成用于评估重构前后安卓应用能耗的测试用例集。
5.根据权利要求1所述的面向代码重构的安卓应用能耗评估方法,其特征在于,步骤s3中,对于一个基准应用及其对应的重构方法,提取应用重构前、后运行时对应的能耗行为的动态特征数据,具体包括:利用/proc/stat命令获取全局的系统...
【专利技术属性】
技术研发人员:杜欣,倪友聪,吴允平,方定邦,
申请(专利权)人:福建师范大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。