安卓sdk能测试 sdk测试什么
一、sdk测试要注意些什么东西
上一篇,解释了SDK是什么,SDK的功能如何测试,这次来讲SDK的其他测试内容。
1.SDK和API解析。
SDK是一种软件开发工具包,API简而言之就是网络接口。
实际上SDK包含了API的定义,API定义一种接口及其规范,而SDK往往包含这种接口和规范。
3.那SDK还要测什么内容?
3.1还需要兼容性测试
SDK的开发更多是为了嵌入到其它应用中进行调用的,那嵌入到什么应用中,怎样去调用,调用过程中是否会被嵌入的程序、数据混淆时是不是会对SDK的请求造成影响、不同版本的SDK是否可以同时运行等,都是SDK兼容性的测试内容。
在兼容性测试中,要确保SDK能兼容机型、设备系统版本、应用版本、分辨率、其他软件,并且不影响通话和相机等系统软件的使用。
同时包含对模拟器的支持,多平台性,及多端消息数据包的交互正常。
3.2性能测试
对于SDK,也要像软件程序一样满足其性能指标:客户端的CPU、内存、耗电量和流量,以及服务端并发数、吞吐量、响应时间、资源使用等。
性能测试要根据用户的使用频率进行测试。比如常用的登录功能,在这个工程中需要同步大量的数据包和离线消息,需要对数据包的解析和本地储存的进行分析和测试。
3.3稳定性测试
稳定性测试主要是对于业务场景的测试。即在一定压力下,根据SDK的业务规则让客户端持续运行较长时间,检查接口的功能和以及设备资源占用是否异常。
3.4弱网测试
SDK的实际使用过程中,也会有弱网的情况。为了保证SDK的正常运行,不影响被嵌入的应用,需要在不同的网络类型及网络环境中,对SDK接口进行测试,保证接口数据交互和一些异常处理没有问题。
3.5安全性测试
在SDK中,数据是通过API接口实现传输和响应的,对于数据的隐私保护、访问权限的控制、用户服务的鉴权、传输URL的加密等都要进行内容的测试,保证用户数据的安全。
3.6更新测试
对于SDK,也要进行更新测试,更新时可能新增接口,也可能是更换接口的参数数据等,需要对对应的协议和相应字段的意义进行重新测试。
对新增的接口抓包,确定发送的请求参数、返回值与协议一致并且互不影响。
并且还要考虑到旧SDK的数据兼容,以及对旧数据的处理机制。
3.6拆包和组包测试
在SDK中可能有很多的工具,也就是有很多的对应包的接口,在实际嵌入时可能只需要嵌入其中的一个或某几个功能包,就需要对SDK进行拆包或组包的测试。
测试流程是:通过SDK进行拆包,将其中的特征值找到,并得到其对应的包名。组包就是将几个包名整合在一起,保证它们之间的数据调用的正确性和异常处理。并对被嵌入的应用进行再次SDK功能的验证测试。
二、sdk测试什么
其实很简单,SDK就是 Software Development Kit的缩写,中文意思就是“软件开发工具包”。这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的**都可以叫做“SDK”。具体到我们这个系列教程,我们后面只讨论广义 SDK的一个子集——即开发 Windows平台下的应用程序所使用的 SDK。
呵呵,其实上面只是说了一个 SDK大概的概念而已,理解什么是 SDK真有这么容易吗?恐怕没这么简单!为了解释什么是 SDK我们不得不引入 API、动态链接库、导入库等等概念。^_^,不要怕,也就是几个新的名词而已,我也是到了大学快结束的时候才体会到其实学习新知识就是在学习新名词、新概念和新术语。
首先要接触的是“API”,也就是 Application Programming Interface,其实就是*作系统留给应用程序的一个调用接口,应用程序通过调用*作系统的 API而使*作系统去执行应用程序的命令(动作)。其实早在 DOS时代就有 API的概念,只不过那个时候的 API是以中断调用的形式(INT 21h)提供的,在 DOS下跑的应用程序都直接或间接的通过中断调用来使用*作系统功能,比如将 AH置为 30h后调用 INT 21h就可以得到 DOS*作系统的版本号。而在 Windows中,系统 API是以函数调用的方式提供的。同样是取得*作系统的版本号,在 Windows中你所要做的就是调用 GetVersionEx()函数。可以这么说,DOS API是“Thinking in汇编语言”的,而 Windows API则是“Thinking in高级语言”的。DOS API是系统程序的一部分,他们与系统一同被载入内存并且可以通过中断矢量表找到他们的入口,那么 Windows API呢?要说明白这个问题就不得不引入我们下面要介绍得这个概念——DLL。
DLL(又是一个缩写,感觉 IT这个行业里三字头缩写特别多),即 Dynamic Link Library(动态链接库)。我们经常会看到一些.dll格式的文件,这些文件就是动态链接库文件,其实也是一种可执行文件格式。跟.exe文件不同的是,.dll文件不能直接执行,他们通常由.exe在执行时装入,内含有一些资源以及可执行代码等。其实 Windows的三大模块就是以 DLL的形式提供的(Kernel32.dll,User32.dll,GDI32.dll),里面就含有了 API函数的执行代码。为了使用 DLL中的 API函数,我们必须要有 API函数的声明(.H)和其导入库(.LIB),函数的原型声明不难理解,那么导入库又是做什么用的呢?我们暂时先这样理解:导入库是为了在 DLL中找到 API的入口点而使用的。
所以,为了使用 API函数,我们就要有跟 API所对应的.H和.LIB文件,而 SDK正是提供了一整套开发 Windows应用程序所需的相关文件、范例和工具的“工具包”。到此为止,我们才真正的解释清楚了 SDK的含义。
由于 SDK包含了使用 API的必需资料,所以人们也常把仅使用 API来编写 Windows应用程序的开发方式叫做“SDK编程”。而 API和 SDK是开发 Windows应用程序所必需的东西,所以其它编程框架和类库都是建立在它们之上的,比如 VCL和 MFC,虽然他们比起“SDK编程”来有着更高的抽象度,但这丝毫不妨碍它们在需要的时候随时直接调用 API函数。
三、【app测试-安卓】兼容性测试
1概述
兼容性测试是指测试软件在特定的硬件平台上、不同的应用软件之间、不同的*作系统平台上、不同的网络等环境中是否能够很友好的运行的测试。
2兼容性测试的目的
由于Android设备在品牌、系统、屏幕、硬件等碎片化较为严重,导致一些app在特定的机型上未能按预计的设计展示和运行,导致用户体验较差,不利于app的推广,影响业务发展。为此,app需在上线前进行兼容性专项测试,以便尽可能适配市面上已上市或即将上市的手机和系统。
3影响兼容性问题的因素
3.1硬件
1、处理器
a) CPU架构,常规手机均是arm64,若app要适配x86架构则需要针对性测试
b)不同CPU厂商,尤其是小众CPU,需要特别考虑,例如华为海思、小米澎湃
2、显卡
a)显卡影响图形渲染和部分场景的计算,app如用到OpenGL、OpenCV、深度学习、AR、VR、AI,则需要重点考虑
3、屏幕
a)分辨率影响UI展示,需兼容HVGA、VGA、WVGA、FWVGA、720p、1080p屏幕分辨率,并考虑不同PPI的情况
b)关注异形屏幕:刘海屏、水滴屏、打孔屏、全面屏
4、传感器
a)视app实际调用情况进行选择:如指纹模块,则需要考虑不同供应商的情况
5、物理按键
a)检测物理按键是否生效:音量键、电源键、拍照键
b)与系统或其他app是否存在冲突
3.2系统
1、 Rom
a)不同版本的系统存在一些API、功能、权限等差异,需要结合app的功能进行适配;
b)第三方定制rom具有一些特殊功能或权限,需要特别考虑,如MIUI
2、编译版本
a) app编译时以低版本设置值为标准,*作系统会拒绝将应用安装在系统版本低于标准的设备上
b) Android版本更新,新的版本会引入一些新的特性和方法,新的方法带来很多便利,但是对系统版本有要求,无法再低版本手机上运行,如果未做兼容性处理,强行运行,会导致Crash
附:Android已发布版本和API对应表及占用率(官方数据)
3、浏览器内核
a)不同浏览器内核影响web页面展示及功能
3.3网络
1、 2G/3G/4G/5G
a)不同网络下兼容各种类型的网络请求,关注数据请求过程及结果
2、 WiFi
a)部分WiFi非直连网络,需要有一步认证的过程,需要特别考虑
b)对于可能弹出广告的WiFi要做兼容处理
4介入时机
1、产品发布前或发布后更新涉及上述“影响兼容性问题的因素”中一个或多个点时,且面临用户数较多、使用人群较为复杂
2、产品上市后出现较多兼容性问题
5场景选择
以下罗列的一些通用场景,并针对场景做了具体的描述,有些场景是非必测项,具体可视app功能来确定
5.1安装卸载
该场景会涉及系统权限,可能会出现无法安装或安装后数据丢失,甚至无法启动
5.2 UI展示
受不同屏幕分辨率、PPI影响,可能会出现展示错*、图片丢失、图片穿透等
5.3高频交互
高频交互场景受一系列因素影响,考验整机兼容性,需特别考虑
5.4 H5页面(JS/CSS)
不同浏览器内核、浏览器标识会影响具体样式的展示及数据请求
5.5文字输入
受输入法、虚拟键盘影响,可能会出现无法上屏,或上屏错*
5.6系统API交互
受不同厂家、版本的rom影响,可能会导致功能无法使用
5.7权限相关
受不同厂家、版本的rom影响,可能会导致一些权限无**常获取
5.8音视频播放/录制
音视频的录制会调用麦克风(多麦)及摄像头(双摄、三摄等),可能存在不可使用或音视频出现错*
5.9传感器调用
可能存在传感器无法调用、权限异常或数据异常
5.10升级覆盖
受存储权限、安全性影响,可能会出现数据丢失、无法启动等错误
5.11三方SDK
三方SDK的架构、技术选型会影响上层正常调用
5.12外设交互
特殊厂商的键盘、鼠标等外设可能存在冲突或无法调用
6设备选择
1、通过用户调研、竞品分析、三方平台数据(近阶段各设备占用率分布及设备出货量、预出货量等)等确定设备选择范围;
附:
友盟设备统计:
百度设备统计:
艾瑞移动设备分析:
腾讯移动分析:
2、根据app类型,确定重点考虑的指标(通常考虑rom、分辨率、厂商),剔除重复,保留用户量较多的设备
7测试方法
参照上文中列出的和兼容性相关的点以及产品特性,整体相关场景,并选择合适的设备进行手工或自动化方式进行测试验证(附:设备选择方式参考)
自行协调云测平台优点拥有设备的完全控制权,测试范围更广设备丰富,执行较为简单,有完整的测试报告缺点需要采购,成本较大,有些特殊系统很难协调到资源需要支出一定费用,设备不完全可控,灵活性较差
附:
常见云测平台对比报告