一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种软件兼容性自动测试方法及系统与流程

2021-11-10 03:11:00 来源:中国专利 TAG:


1.本发明涉及测试技术领域,具体涉及一种软件兼容性自动测试方法及系统。


背景技术:

2.arm架构具有性能功耗比(perf/w)高,节能绿色的优势,使得arm架构不仅仅是适合智能设备和边缘计算,而且也能够极大的节省数据中心的能耗,从而构造全栈全场景的绿色计算,arm架构可以做到内核灵活定制,能够针对特定场景进行性能优化及安全加固,众核架构,能够支持高达64个核,在并行计算、大数据计算上更有优势,独有支持国密算法,实现自主可控的固件安全和数据安全保护。
3.在x86架构软件迁移到arm架构过程中纯java、python等高级语言开发的程序,比如tomcat等web容器可以轻松迁移过去,但是以c,c 等为主题的,内联汇编语言的应该用迁移难度高,迁移之后软件应用兼容测试也是过程十分复杂,而且传统兼容测试都是基于应用软件层面进行手动测试,需要耗费大量的人力和时间,而且兼容测试最终结果未必可以覆盖完整,导致兼容测试通过,在后续使用过程中应用软件在特殊条件下出现一些异常情况。


技术实现要素:

4.本发明的目的在于提出一种软件兼容性自动测试方法及系统,针对现有的x86架构软件迁移到arm架构上的兼容问题,提供有效的自动化测试。
5.为实现上述目的,本发明实施例提出一种软件兼容性自动测试系统,应用于x86架构软件迁移到arm架构时的软件兼容性自动测试,包括:
6.输入单元,用于获取x86架构软件的软件使用信息;
7.测试单元,用于根据所述软件使用信息测试所述x86架构软件迁移到arm架构时是否存在预设的多种软件兼容问题,并输出测试结果;
8.输出单元,用于根据所述测试结果生成测试报告,并输出显示。
9.可选地,所述测试单元,包括:
10.指令库,用于存储用于测试所述x86架构软件迁移到arm架构时是否存在预设的多种软件兼容问题的多条测试指令,所述多条测试指令设置有次序编码;
11.arm处理器,用于运行所述x86架构软件,并根据所述多条测试指令的次序编码,按次序从所述指令库中调取测试指令,控制所述x86架构软件执行调取的测试指令,并将指令执行结果标记对应的次序编号后保存为测试结果之一。
12.可选地,所述输入单元还用于接收用户输入的重新测试指令,所述重新测试指令为一个或多个次序编号;
13.所述arm处理器还用于根据所述重新测试指令,重新运行所述x86架构软件,并根据所述重新测试指令的一个或多个次序编号,按次序从所述指令库中调取测试指令,控制所述x86架构软件执行调取的测试指令,并将指令执行结果标记对应的次序编号后替换原
有次序编号所对应的测试结果。
14.可选地,所述软件兼容问题包括unsign char问题、值溢出的问题、c语言代码中内联嵌入汇编指令的问题、xchgl问题中的至少一种。
15.本发明另一实施例提出一种软件兼容性自动测试方法,应用于x86架构软件迁移到arm架构时的软件兼容性自动测试,包括:
16.步骤s10、输入单元获取x86架构软件的软件使用信息;
17.步骤s20、测试单元根据所述软件使用信息测试所述x86架构软件迁移到arm架构时是否存在预设的多种软件兼容问题,并输出测试结果;
18.步骤s30、输出单元根据所述测试结果生成测试报告,并输出显示。
19.可选地,所述步骤s20,包括:
20.指令库存储用于测试所述x86架构软件迁移到arm架构时是否存在预设的多种软件兼容问题的多条测试指令,所述多条测试指令设置有次序编码;
21.arm处理器运行所述x86架构软件,并根据所述多条测试指令的次序编码,按次序从所述指令库中调取测试指令,控制所述x86架构软件执行调取的测试指令,并将指令执行结果标记对应的次序编号后保存为测试结果之一。
22.可选地,所述输入单元接收用户输入的重新测试指令,所述重新测试指令为一个或多个次序编号;
23.arm处理器根据所述重新测试指令,重新运行所述x86架构软件,并根据所述重新测试指令的一个或多个次序编号,按次序从所述指令库中调取测试指令,控制所述x86架构软件执行调取的测试指令,并将指令执行结果标记对应的次序编号后替换原有次序编号所对应的测试结果。
24.可选地,所述软件兼容问题包括unsign char问题、值溢出的问题、c语言代码中内联嵌入汇编指令的问题、xchgl问题中的至少一种。
25.本发明实施例至少具有以下有益效果:
26.本发明实施例将x86架构软件迁移至arm框架过程中最容易导致软件兼容出现的多种问题的测试功能,集成到一个测试单元,通过该测试单元,可以自动地测试多种问题,避免手动测试需要耗费大量的人力和时间,提高软件兼容性测试的工作效率。
27.本发明实施例的其它特征和优点将在随后的说明书中阐述。
附图说明
28.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
29.图1为本发明一实施例所述的一种软件兼容性自动测试系统的框架结构图。
30.图2为本发明另一实施例所述的一种软件兼容性自动测试方法流程图。
具体实施方式
31.以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。另外,为了更
好的说明本发明,在下文的具体实施例中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本发明同样可以实施。在一些实例中,对于本领域技术人员熟知的手段未作详细描述,以便于凸显本发明的主旨。
32.参阅图1,本发明一实施例提出一种软件兼容性自动测试系统,应用于x86架构软件迁移到arm架构时的软件兼容性自动测试,包括:
33.输入单元,用于获取x86架构软件的软件使用信息;
34.测试单元,用于根据所述软件使用信息测试所述x86架构软件迁移到arm架构时是否存在预设的多种软件兼容问题,并输出测试结果;
35.输出单元,用于根据所述测试结果生成测试报告,并输出显示。
36.可选地,所述测试单元,包括:
37.指令库,用于存储用于测试所述x86架构软件迁移到arm架构时是否存在预设的多种软件兼容问题的多条测试指令,所述多条测试指令设置有次序编码;
38.具体而言,次序编码例如是1,2,3,4,
……
,n;
39.arm处理器,用于运行所述x86架构软件,并根据所述多条测试指令的次序编码,按次序从所述指令库中调取测试指令,控制所述x86架构软件执行调取的测试指令,并将指令执行结果标记对应的次序编号后保存为测试结果之一;
40.具体而言,现有技术中测试人员在手动测试时,会手动输入测试指令,来测试软件是否能够正常执行测试指令,但手动测试可能会遗漏某些测试,或者测试指令输入错误,容易因为测试人员的主观因素导致测试失败,因此,本发明实施例中,为了避免这种情况出现,将所有的测试指令都预先存储于指令库中,并进行次序编码,在测试时,arm处理器按次序编码的次序依次从指令库中读取测试指令,然后进行测试,这样可以避免上述因为测试人员的主观因素导致测试失败的问题。
41.可选地,所述输入单元还用于接收用户输入的重新测试指令,所述重新测试指令为一个或多个次序编号;
42.所述arm处理器还用于根据所述重新测试指令,重新运行所述x86架构软件,并根据所述重新测试指令的一个或多个次序编号,按次序从所述指令库中调取测试指令,控制所述x86架构软件执行调取的测试指令,并将指令执行结果标记对应的次序编号后替换原有次序编号所对应的测试结果。
43.具体而言,本实施例中还设置了根据测试人员/用户输入的重新测试指令来对某一些指令进行重新测试,重新测试后将原来的测试结果进行替换。
44.可选地,所述软件兼容问题包括unsign char问题、值溢出的问题、c语言代码中内联嵌入汇编指令的问题、xchgl问题中的至少一种。
45.其中,unsign char问题具体为:
46.补码的概念。比如1的二进制原码是10000001,它的补码是除了符号外取反加1,最后补码就是11111111。在x86架构下,char默认是有符号的,所以打印的时候正常打印

1;但是在arm下char默认是无符号的,这个二进制的11111111正好就是无符号的255。所以需要注意在arm编译程度时,加入

fsigned

char编译选项以避免这个问题如下:aarch64

redhat

linux

gcc

fsigned

char

o transfer*.c。
47.其中,值溢出的问题具体为:
48.x86的cpu里浮点到整型的转换指令,定义了一个indefinite integer value(0x8000000000000000),来处理溢出问题,但从indefinite integer value中无法判断上溢出还是下溢出。而arm的处理策略则是无论是上溢出还是下溢出时,都保留整型所能表示的最大或最小值,举例对比如下表1所示:
49.表1
[0050][0051]
其中,c语言代码中内联嵌入汇编指令的问题具体为:
[0052]
由于x86架构属于cisc(复杂指令集)而arm属于risc(精简指令集)他们在汇编指令上完全不同,部分常用的x86指令在arm体系下没有对应指令。尤其某些对于效率要求极高的x86体系程序经常用到如sse、sse2等多数据流的相关指令。
[0053]
其中,xchgl问题具体为:
[0054]
xchgl是x86上的汇编指令,作用是交换内存变量的值,我们知道交换操作需要中间过渡,而且需要执行三条指令,即a

>tmp,b

>a,tmp

>b三步才可完成,而这又是一个常用的x86汇编指令,单指令完成,而且属于原子操作。而鲲鹏上如果需要原子交换变量值,需要用glibc的原子操作接口__atomic_exchange_n来进行,而且也还是存在刚刚说的效率问题。
[0055]
以上四个问题是x86框架软件迁移至arm框架过程中最容易导致软件兼容有问题地方,如果采用现在人工在软件页面点击功能点来测试兼容性,可能一个复杂软件测试需要花费半天甚至更多时间来完成一个兼容测试报告,但是这个结果未必能完全包含所有可能情况,本发明实施例把上面提到问题集成到一个测试单元,测试人员只需要提供软件相关使用信息,利用该测试单元,就可以做到快速测试,出报告和定位问题。
[0056]
参阅图2,本发明另一实施例提出一种软件兼容性自动测试方法,应用于x86架构软件迁移到arm架构时的软件兼容性自动测试,包括:
[0057]
步骤s10、输入单元获取x86架构软件的软件使用信息;
[0058]
步骤s20、测试单元根据所述软件使用信息测试所述x86架构软件迁移到arm架构时是否存在预设的多种软件兼容问题,并输出测试结果;
[0059]
步骤s30、输出单元根据所述测试结果生成测试报告,并输出显示。
[0060]
可选地,所述步骤s20,包括:
[0061]
指令库存储用于测试所述x86架构软件迁移到arm架构时是否存在预设的多种软件兼容问题的多条测试指令,所述多条测试指令设置有次序编码;
[0062]
arm处理器运行所述x86架构软件,并根据所述多条测试指令的次序编码,按次序从所述指令库中调取测试指令,控制所述x86架构软件执行调取的测试指令,并将指令执行结果标记对应的次序编号后保存为测试结果之一。
[0063]
可选地,所述输入单元接收用户输入的重新测试指令,所述重新测试指令为一个或多个次序编号;
[0064]
arm处理器根据所述重新测试指令,重新运行所述x86架构软件,并根据所述重新测试指令的一个或多个次序编号,按次序从所述指令库中调取测试指令,控制所述x86架构软件执行调取的测试指令,并将指令执行结果标记对应的次序编号后替换原有次序编号所对应的测试结果。
[0065]
可选地,所述软件兼容问题包括unsign char问题、值溢出的问题、c语言代码中内联嵌入汇编指令的问题、xchgl问题中的至少一种。
[0066]
本实施例方法与上述实施例系统对应,因此,本实施例方法未详述的内容可以参阅上述实施例系统的内容得到,此处不再赘述。
[0067]
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献