【测试开发学习历程】App测试(上)

写在前面:

测试基础到上个环节可以划上一个小句号了,我会在前一篇文章中补上敏捷开发会议的一些内容。

希望在下一个阶段,自己还能用同样的激情与活力去学习测试开发方面的知识,进一步地提升自己的专业技能,养成总结的好习惯,对自己的学习习惯有更好的提升。

如果小伙伴们对我连载的内容或者是某篇博文感兴趣的话,劳烦你们动动自己的鼠标或者是小手点个赞或者收藏一下哦 ~ ~ ~      ᖘ ❛‿˂̵✧

目录

一、 什么是App?

二、 App的分类

三、App应用商店

四、B/S架构与C/S架构

五、 iOS App与Android App的区别

六、App的测试点

(一)功能测试、

(二)兼容性测试

(三) 安装、卸载、升级测试

1.安装测试

2.卸载测试

3.升级测试

(四)弱网测试

(五)App压力测试

(六) UI易用性测试

(七) 交叉事件测试

(八)耗电量测试

(九) 流量测试

(十) 边界测试


一、 什么是App?

  • App是Application的缩写,意思是“应用程序”,主要指安装在智能手机、智能平板、车载智能终端及可穿戴设备等终端上的软件,比如我们常用的手机版QQ、微信、抖音等。

img

  • Mobile端和PC端流量统计数据:

    image-20220208220047925

    Desktop vs Mobile vs Tablet Market Share Worldwide | Statcounter Global Stats

  • 2021年1月中国手机App用户量排行榜Top50:

    img

  • 为什么要学习App测试?

    • 当今是移动互联网时代,据统计,每月移动互联网用户规模达到10亿+人,App用户人均单日使用时长达到6小时+,排除吃饭睡觉,有一多半的时间在玩手机。鉴于此,软件开发者在开发软件时,除了Web端应用外,大多数时候还会提供对应的App端应用。作为测试工程师,必须掌握App测试的相关技能。

二、 App的分类

  • iOS是基于Unix内核深度定制的一个移动设备操作系统;Android是一个Linux发行版,用于移动设备;Linux是类Unix系统;iOS是闭源的,Android是开源的;iOS是苹果公司主导,Android是谷歌主导的;

  • 从操作系统平台来分,主要分为如下两种类型:

    • iOS App

      • 安装在苹果的iOS操作系统上,主要是iPhone、iPad、iWatch等

      • 同一款应用,通常对iPhone和iPad要出两个不同的版本,因为要针对iPhone和iPad两种终端的不同分辨率、屏幕尺寸分别适配

      • iOS App的安装包后缀为.ipa

    • Android App

      • 安装在Android操作系统上,主要是Android手机和Android平板

      • 同一款应用,通常对Android手机和Android平板要出两个不同的版本,因为要针对Android手机和Android平板两种终端的不同分辨率、屏幕尺寸分别适配

      • Android App的安装包后缀为.apk

  • 从技术实现上,目前主流的App可以分为原生App、混合App和Web App两种类型:

    • 原生App

      • 原生App又称Native App,就是利用Android、iOS平台官方的开发语言、开发类库、工具进行开发。比如安卓的Java语言,iOS的Object-c语言。在应用性能上和交互体验上应该是好的。原生App需要针对Android和iOS平台开发两套不同代码,成本高。

    • Web App

      • 指的是移动端的Web浏览器,主要借助H5网页技术进行开发,相当于开发一个网页,然后分别生成Android和iOS的壳。这种App只需要一套编程开发语言,技术简单,人力少,周期短。缺点是用户体验相对差。

    • 混合App

      • 混合App又称Hybrid App,是介于原生App和Web App之间的一种App形式。

      • uni-app是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉)等14个平台。

      • 了解uni-app:uni-app官网

      目前国内基本只有大厂还在玩原生App,中小企业以混合App为主。

三、App应用商店

  • 常用的App应用商店:

    • App Store:苹果应用商店,所有非越狱的苹果设备,只能从App Store上下载App

    • Google Play:谷歌应用商店,国外的智能手机默认使用的应用商店

    • App Gallery:华为应用商店,华为手机和平板使用的应用商店

    • 小米商店应用:小米手机和平板使用的应用商店

    • OPPO软件商店:OPPO手机使用的应用商店

    • 百度手机助手、360手机助手、腾讯应用宝、豌豆荚等其它应用商店,中国有超过400个Android应用商店。

  • 注意:凡是在以上商店能下载的App都是正式版本,测试版本不可能从上面去下载。

四、B/S架构与C/S架构

B/S架构:

image-20210728092110573

C/S架构:

image-20210728092130821

  1. B/S:浏览器/服务器,用浏览器去打开的系统;C/S:客户端/服务器,客户端又分手机客户端(App)以及PC客户端

  2. B/S架构下核心的业务处理在服务端完成,C/S架构下可以将业务合理地分配到客户端和服务器端来实现

  3. C/S能更好地利用客户端设备的处理能力,具有更好的用户体验,响应速度更快,安全性也更高

  4. 在开发、测试时,B/S需要考虑兼容不同的浏览器(内核),C/S需要兼容不同的操作系统版本及设备,前者相对开发周期更短,共享性更强;因为iOS和Android系统的差异,iOS App和Android App的开发语言是不一样的,对开发人员的能力要求也是不一样的,需要不同的开发人员分别开发出iOS App和Android App两套开发包,同时因为Android系统的碎片化严重,Android App在开发测试阶段需要花费大量的精力适配不同厂家的系统及设备,最后因为手机和平板的尺寸不一样,还需要分别出手机版和平板版(HD)两个版本。

    • 所有浏览器,按内核分,有如下几种内核:

      • Apple Webkit(谷歌内核):Chrome、SafariEdge、QQ浏览器、360极速版、世界之窗等

      • Gecko(火狐内核):Firefox

      • Trident(IE内核):IE、360兼容版

  5. 从维护的角度,C/S工作量会更大,因为B/S的升级只需要在服务器上升级即可,C/S的升级往往需要同时升级服务器端和客户端;iOS和Android系统有重大更新的时候会需要开发者同步更新App以适配最新的操作系统。

五、 iOS App与Android App的区别

  1. 开发语言(原生应用):iOS App用object-c开发,对应的是iOS开发工程师;Android App用Java开发,对应的是Android开发工程师;

  2. 上架(商用上线)的市场:iOS App是统一上架到苹果的App Store,苹果设备只要没有越狱,只能从AppStore上下载app安装;Android app是上架到各个手机厂家的应用市场上,比如谷歌的Google Play,华为的App Galary等等;

  3. 在做兼容性测试时,Android App会更复杂;

  4. iOS是一个相对封闭的操作系统,是苹果基于Unix内核深度定制的一个移动设备操作系统;Android是一个开放的操作系统,谷歌会定期发布基线版本,各个手机厂家会在基线版本的基础上再进行本地化定制,结果就导致Android系统出现很多分支(碎片化),导致Android App对不同分支版本的适配难度会更大;

  5. AppStore对应用的审核会更严格,所以iOS APP会相对更安全;

  6. Android App的包后缀是.apk,iOS App的包后缀是.ipa;

    • MyCamera.apk:Android手机版App

    • MyCameraHD.apk:Android平板App

    • MyCamera.ipa:iPhone手机版App

    • MyCameraHD.ipa:iPad版App

六、App的测试点

(一)功能测试、

(Web和App都要重点考虑的)

就功能测试而言,App测试和Web测试没有区别,都是基于软件的功能性需求编写测试用例,设计测试用例的方法都可以采用场景分析、等价类、边界值、错误猜测等。写好用例之后先安装环境,然后执行用例,对发现的问题提交Bug单跟进解决。

(二)兼容性测试

(Web和App的侧重点不一样)

兼容性测试顾名思义就是,要确保App在不同场景下的正确性。App和Web的兼容性测试侧重点不一样,Web需要兼容不同内核的浏览器(Chrome、Firefox、IE等),App需要兼容不同版本的操作系统(iOS14、iOS15、Android10、Android11、Android12、鸿蒙OS等)、设备尺寸、屏幕的类型(曲面屏、折叠屏、刘海屏、挖孔屏、全面屏)、分辨率、网络环境、语言等。

测试方法:在不同的设备上进行安装、启动、运行、卸载测试,需要大量的测试设备才能做好兼容性测试。

兼容测试的难点:设备类型太多,iPhone目前有20多款设备,Android手机就更多了,Android碎片化严重,想要做充分的兼容性测试,成本很大。

测试设备来源:公司自己买测试机、公司租手机、用员工的手机、WeTest云测平台(附上链接:腾讯WeTest,品质成就未来,收费的,介意勿扰)等。一般采用真机来测试,如果实在找不到真机,有的时候也用模拟器来模拟。

(三) 安装、卸载、升级测试

1.安装测试

  • 安装方法:

    1. 对Android App来讲,可以直接把apk发到手机上下载并安装;

    2. 通过adb(安卓调试桥)命令安装(仅限于Android App):adb install xxx.apk;

    3. 通过爱思助手等工具安装(iOS App和Android App都可以);

  • 测试点:直接安装能否安装成功,卸载后再次安装能够成功,安装的App能否正常启动

    • 注意事项:

    1. 通过助手工具连接iOS设备前,需要先在电脑上安装iTunes工具

    2. 安装iOS App,一般需要先把测试手机的UDID获取到(每个手机都不一样),由开发写入到App的配置文件中再打包,这时得到的App才可以在测试设备上安装

      img

2.卸载测试

  • 卸载方法:

    1. 在手机上直接卸载

    2. 通过adb命令卸载:adb uninstall 包名

    3. 通过助手工具卸载

  • 测试点:App能够卸载成功,卸载后是否可以再次安装

3.升级测试

  • 基本方法:先安装老版本,再安装新版本,看是否能安装成功并覆盖老版本。

  • App的升级方案

    App的升级方案有在线升级和离线升级两种,其中在线升级又分为强制升级和非强制升级。

    1. 在线升级:当应用商店已经有新版本时,提示更新,用户点击更新,下载最新版本,进行安装升级,这种就是在线升级;

      • 强制升级:强制更新就是当检测到有新版本时,弹出提示,这个提示框没有关闭按钮,只能更新,一般需要强制更新的版本,主要是功能模板改动较大,或业务比较重要,和功能模板存在风险等;

        image-20210727115949600

      • 非强制升级:非强制更新就可以让用户选择是否现在更新或以后更新,旧版本的功能正常使用。

        image-20210727120152301

    2. 离线升级:不从线上下载升级包,通过线下的方式安装升级包进行升级,这种就是离线升级。

  • 升级场景设计:

    • 第一个版本:用户只有新安装的场景

    • 第二个版本:用户有新安装的场景、也有从第一个版本升级到第二个版本的场景

    • 第三个版本:用户有新安装的场景、也有从第一个版本升级到第三个版本的场景、也有从第二个版本升级到第三个版本的场景

    • 版本越多,跨版本升级的场景也越复杂,一般也不可能把所有场景都验证一遍,通常的做法是分析生产环境的数据,看绝大部分用户都在哪几个版本上,重点考虑从这几个版本升级到新版本的场景。如果App做了强制升级的方案,这种情况下用户的版本就比较新,升级的场景也更简单。

  • 测试方法:

    1. 通过手机助手软件或者命令,先安装升级前的老版本,再安装新版本,看能否正常地覆盖升级,以及升级后功能是否正常,数据是否有丢失,版本号是否正确;

    2. 为尽可能模拟真实的用户场景,可以把升级包部署在一个http服务器上(升级服务器),手机通过浏览器打开这个服务器的URL下载新版本,模拟用户从应用商店下载升级的过程。

(四)弱网测试

一方面App的网络环境复杂,包括2G/3G/4G/5G/WiFi等,另一方面App的使用场景多变,用户可能在各种场所使用App,包括网络较差的场景(延迟、丢包、抖动等),如果App没有对各种网络异常进行兼容处理,那么用户可能在使用中遇到APP闪退、ANR(应用无响应)、数据丢失等问题。

测试方法:通过工具模拟弱网的场景进行测试,比如QNET。

(五)App压力测试

Android App可以通过monkey命令来做压力测试。

(六) UI易用性测试

  • 检测界面是否美观,操作是否简单易用,是否符合用户的操作行为,产品是否有相关的帮助文档,FAQ(常问问题)等

  • 参考:UI设计图,检查系统的实现是否与UI设计图一致。

(七) 交叉事件测试

交叉事件测试也叫中断测试,是指App执行过程中,有其它事件或者应用中断当前应用执行的测试。比如在App使用过程中出现来电、来消息、响闹钟、弹出电量低、打开其它App等其它事件,验证当其它事件出现的时候,是否会中断当前App的事件。

交叉测试一般采用手工测试的方式在真机上进行。

(八)耗电量测试

  • 目的就是检查App的耗电是否过高,电量消耗跟CPU有关系。

  • 可以通过手机的电池统计来查看App的耗电情况,也可以通过adb命令来查看,还可以通过第三方工具PerfDog(性能狗)、GT等来检查耗电情况

(九) 流量测试

  • 流量测试,指的是监控App的流量使用是否合理,目的是优化App的流量使用,比如有些数据需要缓存到客户端上来避免过多地消耗流量。

  • 有很多方法可以获取App的流量,比如对于Android系统,网络流量信息通常存放在/proc/net/dev目录下,可以直接利用adb工具获取实时的流量信息。另外,推荐一款Android的轻量级性能监控小工具Emmagee。对于iOS系统,可以使用XCode自带的性能分析工具集中的Network Activity,分析具体的流量使用情况。

  • 推荐:使用PerfDog(性能狗)可以很方便地监控App的流量。

(十) 边界测试

边界测试是指,移动App在一些临界状态下的行为功能是否正常,基本思想是找出各种潜在的临界场景,并对每一类临界场景做验证和测试。比如:

  • 手机提示内存空间不足

  • 飞行模式来回切换的场景

  • App 不具有某些系统访问权限的场景,比如 App 由于隐私设置不能访问相册或者通讯录等

  • 长时间使用App,系统资源是否有异常,比如内存泄漏、过多的链接数等

  • 出现ANR的场景(网络差、操作频繁、手机上起的应用过多、不同App之间切换等)

  • 操作系统时间早于或者晚于标准时间的场景

  • 时区切换的场景 GMT

  • 等等......

面试题:Web测试和App测试有什么区别?

功能测试方面,Web和App没有区别,App有一些专项的测试:安装、卸载、升级,兼容性(关注的点不一样),弱网,交叉事件,耗电量,流量,边界测试,压力测试(关注的点不一样)等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谷雨__

愿你有所得,有所成。谢谢打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值