你好,我是小牛。
到今天为止,移动互联网已经走过了十个年头。虽然,行业红利早已经过去,但是移动端依旧是大厂纷纷争抢的流量入口。
互联网行业不同于其它行业,一个很明显的特点是基本上只能一家独大,不存在一超多强。
从租房买房,学习工作,再到衣食住行以及生活的各个方面,基本上都有独角兽在垄断整个领域。而这些独角兽的背后往往就是BAT三家巨头投资,于是又出现了阿里系,腾讯系各种公司.....
依旧记得刚上大学那会儿,移动互联网刚刚兴起,大厂高管纷纷辞职创业。北京中关村的咖啡厅到处是投资人和创业者,聊融资,聊创业。那个时候国家鼓励,大众创新,万众创业。
而这些现象的背后,带来的便是巨大的行业红利与人才缺口。那个时候基本上只要会点app开发,都可以很轻松的找到不错的工作。薪水也甚至一度超过了后端开发。对于测试人员来说,会功能测试,懂点数据库,知道几个linux命令也能轻松的找到工作......
然而现在,入行不仅对学历有了更高要求,而且最好还要会编程,会自动化测试,性能压测最好也会点。所以还是那句话,跟买房一样,早就是优势!
好了,废话不多说,进入正题!
首先,目前市场上有两种App,分别为原生App和Web App。原生App是基于操作系统运行的App,Web App 是基于手机浏览器运行的App。两种App开发的语言不同,原生App安卓端是使用的java语言进行开发,ios端是采用object-c开发。Web App 采用H5进行开发。
从开发语言就可以看出来,两者的开发成本不一样,如果公司要开发原生App需要开发两套代码,一套苹果的,一套安卓的。而Web App 只需要开发一套代码便可以跨平台运行,同时支持苹果端和安卓端使用。
那么两者的区别是什么呢?主要是原生App的性能要优于Web App,加载速度和页面响应更快,而且原生的可以调用移动端硬件设备,比如麦克风,摄像头,GPS,蓝牙等等。而Web App这方面就不如原生的,只能调用有限的移动设备。
因此,目前企业在进行开发时,如果App仅仅是展示类型的软件一般多采用Web App ,一套代码,多端运行。如果是对性能要求比较高,比如很多大厂App,用户多,不差钱依旧是采用原生App为主。
当然,目前较为流行的开发方式是使用原生App 和Web App融合,叫做混合式开发模式。重要的业务页面、复杂的动画交互、系统UI等使用原生来完成,展示类的对性能要求低的采用web形式,这样既节约了成本,只需要开发一套代码,又保证了功能的完备性以及良好的用户体验。
虽然这两种类型的App开发语言不同,但是对于测试来说大同小异,关注点其实都差不多。App和Web测试都属于Ui前端测试,但是App除了页面功能测试之外,还有专项测试。主要是针对App性能的一些测试......
下面主要列举一下App测试需要关注哪些点:
- 功能测试:这个不用过多解释,就是点点点,保证页面的功能实现,没有业务逻辑方面问题。
- UI测试:主要关注页面颜色是否舒服,布局是否合理,有无错别字等等。
- 兼容性测试:就是测试你的app程序在不同手机品牌上面是否能正常运行,页面布局如何,是否乱序。需要覆盖到目前市场上面主流的手机类型,最好使用真机测试,不推荐模拟器。还需要考虑不同操作系统版本对于程序的影响。
- 场景测试:使用App时要考虑到各种不同的使用场景,比如正在使用app,来电话或者短信了程序如何应对?正在听音乐,app也有个播放功能和喇叭发生资源抢夺怎么办?以及不同应用程序之间的切换和前后台切换等等。
- 性能测试:考虑内存,耗电量,安装包大小,流量耗用多少以及响应事件的快慢等等......
- 弱网测试:不同类型2g,3g,4g,5g的移动流量或者是wifi模式下程序的运行情况。网络速度极差或者断网的情况下,程序运行状况等等。
- 安装/卸载/更新:需要考虑卸载时是否要保留用户数据?更新的话是提示更新还是强制更新?更新过程中手机没电关机或者用户关闭退出等等。
- 权限测试:主要是用户关闭了某项权限时,程序是否还能正常使用;是否可以访问通讯录,相册,录音等;以及检测App的用户授权级别,数据泄露,非法授权访问等。
- 稳定性测试:避免程序出现卡顿,闪退,崩溃等现象,这个可以使用工具比如monkey自动频繁快速操作各个功能检测程序稳定性。
- 安全测试:应用是否保存敏感数据到本地,应用与服务器之间的数据传输是否加密。如果金融类的涉及钱的应用,重点测试,支付接口是否能被外部调用伪造等。
以上,大概罗列了一下App测试需要注意的常见的测试点,仅供参考。最后说一下,app测试工具有哪些:
- adb: 安卓手机的官方检测工具,用来操作安卓系统。
- monkey:可以无规律的模拟用户操作,检测程序运行的稳定性。
- monkey runner:可以自己写脚本模拟用户进行操作,更加的灵活。
- Appium: app自动化框架,适用于python/java语言。