一种应用程序的测试方法和装置
当终端的操作系统升级后,可以避免对未升级的应用程序进行重复测试。
PC端用于获取智能电视中的应用程序信息等并根据获取到的信息生成终端应用程序列表,还用于将已生成的终端应用程序列表的最新记录上传到服务器;服务器用于接收PC端上传的终端应用程序列表的最新记录,并保存终端应用程序列表的历史记录。
步骤解析:
上述最新记录记录运行于当前版本操作系统中的每个应用程序的包名和版本信息,上述历史记录记录运行于历史版本操作系统中的每个应用程序的包名和版本信息。
通过应用程序的版本校验码。
通过如下步骤生成终端应用程序列表的最新记录:检测到上述终端的操作系统升级后获取每个应用程序的包名和代码路径;根据上述代码路径生成对应的应用程序的版本校验码;根据获取到的每个应用程序的包名和版本校验码,生成终端应用程序列表的最新记录。
在根据获取到的每个应用程序的包名和版本校验码的步骤之后,将操作系统升级前的终端应用程序列表的最新记录作为终端应用程序列表的一条历史记录进行保存。
获取升级应用程序在上述最新记录中的版本号和在上述历史记录中的版本号,上述升级应用程序为上述具有相同包名且版本信息不同的应用程序; 版本号不同测试优先级定为高
原理:应用程序(APP)的版本信息可以包括各种可以标识该应用程序的版本的信息,例如:版本标识、版本号、版本校验码
一般来说,如果APP的数据进行了升级或修改,该APP的MD5一定会发生变化,但是版本号未必发生变化。
区分该APP在终端操作系统升级前和升级后的MD5值和版本号是否相同,
| MD5发生变化 | 版本号不变 | APP一定发生变化 |
| MD5发生变化 | 版本号变 | 加大测试 |
| MD5不变 | 版本号不变 | 不需要测试 |
智能电视测试方法的流程示意图
1、PC端建立与智能电视的通信链路上的连接,并建立与服务器的通信链路上的连接。
2、PC端生成并向智能电视发送用于获取运行于该智能电视中的全部应用程序的包名的第一指令,并接收智能电视返回的包名。
PC端通过向智能电视发送第一指令(如系统应用数据收集命令)的方式,获取智能电视中全部的应用程序的包名,或者获取智能电视中的包名列表。PC端接收智能电视返回的包名或包名列表。
3、PC端根据在步骤2中接收到的包名,依次生成用于获取每个包名所对应的应用程序的版本号和路径代码的第二指令,接收终端返回的每个应用程序的版本号和路径代码。
PC端根据在步骤2中接收到的包名,依次对每个包名所对应的应用程序生成并发送用于获取该应用程序详细信息的第二指令,应用程序详细信息可以具体包括:应用程序的版本号和路径代码(path code)等信息。
4、PC端根据在步骤3中接收到的每个应用程序的path code,依次生成用于获取每个应用程序的MD5值的第三指令,并接收智能电视返回的每个应用程序的MD5值。
PC端将在步骤3中接收到的每个应用程序的path code发送给智能电视,智能电视在接收到path code之后,根据path code计算出该应用程序的MD5值,并将计算出的MD5值返回给PC端。
PC端还可以判断是否获取到智能电视中的全部应用程序的信息,若是,则继续执行步骤5;否则,重新执行步骤2~步骤4,直到PC端获取到智能电视中的全部应用程序的信息。
5、PC端根据接收到的每个应用程序对应的包名、版本号和MD5值,生成终端应用程序列表的最新记录;并将已生成的终端应用程序列表的最新记录上传给服务器进行保存。
PC端获取到当前智能电视中的所有应用程序的包名、版本信息、详细信息等信息后,生成端应用程序列表的最新记录;在生成最新记录后,还可以通过http协议将生成的应用程序列表的最新记录上传给服务器,服务器解析出每段字符串的含义,存储到服务器的数据库相应字段中。其中,相关字段中的App(应用程序)字段所存储的内容可以如表1所示:
表1
相关字段中的AppVersion(应用程序版本)字段所存储的内容可以如表2所示:
表2
相关字段中的Device(终端)字段所存储的内容可以如表3所示:
表3
相关字段中的DeviceVersion(终端版本)字段所存储的内容可以如表4所示:
表4
相关字段中的DeviceAppAssignment(终端应用程序任务)字段所存储的内容可以如表5所示:
表5
服务器将PC端最新上传的终端应用程序列表的记录作为终端应用程序列表的最新记录,将其余的终端应用程序列表的记录作为终端应用程序列表的历史记录;需要说明的是,可以根据服务器可以根据PC端上传的时间对历史记录进行排序,还可以根据智能电视当前操作系统的版本对历史记录进行排序。
6:对比终端应用程序列表的最新记录和历史记录,确定最新记录中与历史记录相同包名且版本信息不同的应用程序和/或新增的应用程序为目标应用程序。
(B:DCE A:DCF S1:DC S2:F S3:E)
(2)举例来说,服务器可以循环遍历索引数组S1,比较数组A与数组B中的VersionCode字段与MD5值字段,可以得到当前操作系统与历史版本操作系统中,VersionCode与MD5值的变化,从而得出APP的变化情况。
具体的,服务器首先判断索引数组S1是否为空,若为空,则代表数组A与数组B没有共同的应用,对比流程结束;若不为空,服务器循环遍历索引数组S1,取得应用包名P,获取数组A中关于P的VersionCode值,获取数组B中关于P的VersionCode值,比较两者的大小,以同样的方法,获取A和B关于P的MD5值,比较两者是否相同;最后,将比较结果显示给用户。其中,若该应用程序在最新记录中的MD5值和在历史记录中的MD5值相同,则将该应用程序确定为不需要进行测试的应用程序;若该应用程序在最新记录中的MD5值和在历史记录中的MD5值不同,则将该应用程序确定为目标应用程序,并判断该应用程序在最新记录中的版本号和在历史记录中的版本号是否相同,若版本号相同,则将该应用程序的测试优先级确定为低;若版本号不同,则将该应用程序的测试优先级确定为高。
(3)再举例来说,服务器可以循环遍历索引数组S2,可以得出当前操作系统相比较于历史版本操作系统而言,新增加的APP。
(4)又举例来说,服务器可以循环遍历索引数组S3,可以得出当前操作系统相比较于历史版本操作系统而言,删除的APP。服务器将新增加的应用程序确定为目标应用程序,并将新增加的应用程序的测试优先级确定为高。
在本发明实施例中,可以由服务器根据终端应用程序列表的最新记录和历史记录进行信息比对和筛选,从而确定目标应用程序。服务器将被删除的应用程序确定为不需要进行测试的应用程序。
7、服务器根据目标应用程序的测试优先级,对目标应用程序进行测试。
(1)具体实现时,服务器根据预先设置的测试策略,对优先级为高的应用程序进行优先测试或重点测试,之后,服务器再对优先级为低的目标应用程序进行测试。这样,实现了仅对智能电视中的部分目标应用程序进行测试,过滤掉不需要进行测试的应用程序(未升级的应用程序)从而节省了测试时间和资源,提高了测试效率。
|
开始 |
|
接收版本号和路径代码 |
|
是 |
|
否 |
|
接收包名 |
|
接收MD5值代码 |
|
是否获取到智能电视中的全部应用程序的信息 |
|
建立连接 |
|
生成最新记录 |
|
对比 |
|
结束 |
|
根据优先级测试 |
从上述技术方案可以看出,当某一终端的操作系统由历史版本升级到当前版本时,本发明实施例能够获取到终端中的终端应用程序列表的最新记录(即,在当前版本下的终端应用程序列表),还能获取到终端中的终端应用程序列表的历史记录(即,在历史版本下的终端应用程序列表),由于终端的操作系统的升级可能造成应用程序的变化(如删除、新增或升级),本发明实施例能够获取并对比同一应用程序在最新记录和历史记录中的版本信息,从而确定出最新记录中与历史记录相同包名且版本信息不同的应用程序,并进一步只对确定出的目标应用程序进行测试;本发明实施例还能够确定出新增的应用程序,并进一步对确定出的新增的应用程序进行测试;从而避免了对版本信息相同的同一应用进行重复测试,节省了测试时间,提高了测试效率。
1、本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器,使得通过该计算机或其他可编程数据处理设备的处理器执行的指令可实现流程图中的一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
2、这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
3、这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能的步骤。
专利知识
前四位是年份,年份后的数字表示专利类型:1-发明,2-实用新型,3-外观设计。
首先,对于外观设计专利来说,无论出于何种目的,使用专利产品不构成侵犯专利权。
其次,对于发明专利和实用新型专利,不以商业为目的的使用也不侵犯专利权。被控侵权人有证据证明其实施的技术或者设计属于现有技术或者现有设计的,不构成侵犯专利权。
app中用到的唯一标识
mac 地址、android_Id、 IMEI:、Pseudo-Unique ID、拼接生成UUID
移动设备(手机)的唯一ID
一、IMEI
IMEI是国际移动设备识别码,一串15位的号码,每部通过正规渠道销售的GSM手机均有唯一的IMEI码。IMEI码由GSMA协会统一规划,并授权各地区组织进行分配,一般由运营商存储在SIM卡中。
在IOS5.0以后,苹果官方就屏蔽了获取IMEI号的接口,因此后续版本的苹果设备都无法获取到IMEI号。
2、Andriod体系下:可以获取
Andriod的手机设备是允许开发者获取IMEI号的,但在Andriod6.0以后版本需要得到用户的主动授权才能获取。
二、IDFA
苹果和Google针对移动设备推出的 广告标识符
1、IOS体系下:可以获取
在IOS6.0以后版本均可以正常获取IDFA,但手机用户可以手动还原 以及 手动禁止获取(手动关闭广告追踪,目前关闭的用户占比较小)。
2、Andriod体系下:受限获取
其实在Andriod2.3以后,Google也学苹果推出了IDFA,用于跟踪广告的唯一标识,功能基本上与苹果的IDFA是一样一样的。但是Google的这个IDFA是需要基于Google Play等基础APP的,在国内环境下,Google的这些基础APP要么无法访问使用,要么被手机厂商直接去掉了,因此Android手机上的IDFA在国内没有起到唯一ID的作用。
三、UDID
原苹果设备的唯一识别ID,它是40个字符组成。
1、IOS体系下:无法获取
在IOS旧版本可以使用,但在IOS7.0以后版本苹果停用了此ID,新版都无法获取。
2、Andriod体系下:无法获取
Andriod体系没有这个ID。
四、MAC
MAC是指无线网卡地址
1、IOS体系下:无法获取
在IOS7.0以后版本IOS设备无法获取到MAC(准确说是会返回一个固定值的MAC,不具有唯一性)。
2、Andriod体系下:可以获取
APP的开发者可以主动获取当前Andriod手机的MAC地址,另外 如果是通过 WIFI上网 或者 WIFI AP 探针 也都可以获取到当前设备的MAC地址。
五、Andriod_ID
Andriod_ID 是Andriod设备独有的ID,每一个新设备系统都会随机的分配一个Andriod_ID,为64位数字。如果将设备恢复出厂设置、刷机,则会生成一个新的ID。在 Android 8.0 以后,签名不同的 App 所获取的 Android ID(SSAID)是不一样的,但同一个开发者可以根据自己的数字签名,将所开发的不同 App 进行关联。
六、其它 IDFV、openUDID、UUID
IDFV 是苹果设备给单个APP自身用于追踪用户的唯一ID,这个IDFV在一个APP内是唯一的,跨APP就不唯一了,因此只能用于单个APP自身用于追踪用户行为。
openUDID 是非官方提供的API,在IOS和Andriod体系下都可以使用,效果一般,有部分公司也会使用这个ID。
UUID由于Andriod体系ID确实太复杂了,所以还有厂商会根据UUID生成标准在APP中生成UUID来使用。
无论是苹果还是Google,都越来越注重用户隐私的保护。因此可以看到,只要是涉及到 设备的唯一性且不可更改性的ID,都慢慢的不会苹果/Google推荐使用,例如 MAC地址、UDID等,都是与设备永久性绑定,一旦泄漏涉嫌侵犯用户隐私的。所以现在厂商都开始推各类的 广告ID,例如 IDFA,可用于追踪广告,也可由用户自主设置。
目前,在国内,Android设备主要还是以 IMEI 为主,IOS设备主要以 IDFA 为主。