Web测试转App测试不看不知道

2020-08-08

Web测试

Web通常指的是互联网应用系统,比如税务电子化征管档案系统、金融数据平台、餐饮商家管理后台等等,其实质是C/S的程序。

C是Client——客户端,S是Server——服务器。

Web中的客户端一般指的是Browser——浏览器,也就是B/S。

Web系统有三层结构 == 表示层 + 业务层 + 数据层。

MVC软件设计模式也是三层 == 模型 + 视图 + 控制器。

它们的对应关系如下,不完全准确,简单意会意会即可,

1593469587793_副本

测试的一个重要思路是,了解被测对象的架构,Web系统典型架构如图所示,

1593470884765_副本

这个图很重要,多看几秒!想想这些问题,

我测试覆盖的是哪些地方?

有哪些环节是漏掉的?

浏览器从请求到响应,这个过程是怎样一个链路?

测试难点

Web测试,不仅仅是页面的点点点。

面对这样复杂的系统,如何保障质量,使系统健康的、长期的、稳定的运行,是测试的难点。

业务复杂度本身就是难点,而且这是测试核心中的核心。

安全、性能的评估,也是一个棘手的难点。

网站用户的能力,包括浏览器、操作系统、设备、网络带宽都可能是参差不齐。

网络中断,或弱网情况下,网站的表现。

网站本身的应用日志、系统资源、冷热数据。

引入的第三方程序的质量,虽然可以直接用,但仍需做黑盒测试。

国际化差异,如语言、时差、货币兑换。

你要考虑的不是一个点,也不是一个面,而是一个整体。

表示层

表示层的测试对象包括了,

  • UI(User Interface)用户界面
  • UE(User Experience)用户体验
  • UED(User-Experience Design)用户体验设计

简而言之就是,系统的外观和感觉。

更专业具体点,就是整体审美、字体、链接跳转、图形分辨率和大小、色彩、拼写检查、文字语法和风格、光标位置、选中默认按钮、交互操作体验友好、商业特定术语和风格、确认框、浏览器版本、操作系统配置等。

表示层的测试主要以人工为主,部分测试也可以通过工具完成,如无效链接检测。

业务层

业务层包括内部业务和外部服务,内部业务和外部服务都需要经过测试。

内部业务就是实实在在的业务,每个公司的业务都有差异。

业务测试是贯穿于测试周期自始始终的。

最开始测试考虑的是业务,测试结束考虑的也还是业务。

业务层测试是用到测试用例设计方法最多的,包括等价类划分、边界值、判定表、因果分析、场景法等。

同时也需要做性能测试,考察响应时间、吞吐率等性能指标。

毫不夸张的说,无业务,不测试!

数据层

数据层主要干的事就是读写数据。

数据层的数据既包括系统自产的,也包括从用户收集来的数据。

数据是存放在数据库服务器里边的,包括RDBMS、NoSQL。

数据模型定义了数据层接口和数据存储方式。

数据可以直接使用,但往往是经过了ETL对数据进行加工。

数据层的测试是有一些门槛的,但一些隐藏的bug就藏在这一层。

首先需要测试的是数据存储的正确,其次需要测试冗余数据的清理,还有数据状态的变化。

数据库的性能,sql的耗时,数据量大小,数据冷热。

数据库的数据类型,长度、精度、字符集、日期时间格式、时区等。

数据库的安全,数据加密和安全性。

还有数据库的鲁棒性,故障处理,备份恢复能力,最大化MTBF,最小化MTTR。

App测试

网络

App测试还是从架构入手,先看看App的典型的无线运营商网络架构,

2020-07-28_211128_副本

移动网络,是App区别于Web应用的重要差异。

移动网络的通信协议并不是基于IP的,而通常是一种基于射频的协议。

如,

  • CDMA(Code Division Multiple Access)码分多址
  • TDMA(Time Division Multiple Access)时分多址
  • GSM(Global System for Mobile)全球移动通信系统
  • 4G (the 4th generation mobile communication technology)第四代移动通信技术

很多运营商都使用某种代码转换器或Web代理来进行移动设备与互联网的通信。但是因为竞争的关系,运营商一般不会披露这些细节。他们可能会“偷偷”干这些事,

  • 将数据转换成WAP或HTTP支持的格式
  • 压缩数据为了更快地传输和提高吞吐量
  • 数据传输加密和隐私保护
  • 屏蔽一些占用过高带宽的站点
  • 从网页中抽取HTML头信息和其他元数据以供程序使用

WAP,是指Wireless Application Protocal,无线应用协议,已经过时。

现在大多数都使用HTTP协议了。

正是由于移动网络的存在,以及不同使用场景下网络状态的不稳定,在测App时,需要做弱网测试。

弱网包括无网(断网)、弱网(2G 3G 4G)、网络切换。

设备

App测试和Web测试,另外一个明显的区别就是,移动设备非常丰富。

不同的机型。不同的屏幕。不同的版本。不同的系统。不同的CPU内存。不同的浏览器。不同的配置。

App是To C的,也就意味着使用环境无法统一控制,是千差万别的。

这对测试来说是很大的挑战,以至于有漫画调侃,高级测试工程师,可以转行卖手机了!

不过好在有模拟器,有云测平台,减少了测试设备兼容性的成本。

模拟器也不是银弹,不能替代真机,所以App必须在真机上面跑过才算ok。

真机和模拟器,各有利弊,需要做必要的权衡。

可以先用模拟器完成大量测试,最后使用真机做验收。

用真机测试还需要注意的一个小问题就是,测试用例设计的尽量有效,不然每一次重复测试,就很可能在燃烧你的经费。

测试方法

App测试和Web测试有很多共同的地方,尤其是业务层和数据层。

不过由于网络和设备等因素,让App测试也有一些特殊的场景,

测试分类 说明
安装/卸载 确保用户可以正确的安装应用程序
确保用户可以完全卸载应用程序
测试安装中断后能否恢复正常
测试卸载能否中断
网络基础设施 证实应用程序在网络丢失的情况能够正确响应
证实应用程序能够正确响应网络回复的情况
证实应用程序能够在网络信号差的情况下正确响应
来电和短信处理 测试用户能够在应用程序运行的情况下接电话以及回短信
测试用户能够在处理完来电和短信之后能否返回应用程序
测试用户能否在不中断应用的情况下取消来电和短信
测试用户能否在不退出应用程序的条件下拨打电话和短信
内存不足 确保应用程序在设备内存不足的情况下仍然能够稳定工作
按键 测试所有的热键按照产品规格书实现
退出 检查程序能够正常退出(通过按键合屏或滑块锁屏)
确保在机器关闭的情况下应用程序的行为和设计规格说明书上一致
充电 确保程序在切换到充电模式时工作正常
确保程序能够在充电状态下正常工作
确保程序在退出充电模式时不会发生异常
电量 测试在电量不足的情况下应用程序的行为表现
计算应用程序将用多长时间耗尽电量
确保在电池突然拔出的情况下应用程序的反应和说明书一致
硬件资源 确保应用程序没有过度占用CPU
确保应用程序不消耗过多的内存资源
升级 确保静默升级、提示升级、强制升级情况下升级成功
确保补丁包、全量包升级成功

电子商务术语

B2B、B2C、C2C、O2O是电子商务的4种模式。

B2B,Business to Business,企业对企业,如经销商销货给超市。

B2C,Business to Customer,企业对个人,如超市卖东西。

C2C,Customer to Customer,个人对个人,如摆地摊。

O2O,Online to Offline,线上到线下,如网上点个豆浆早餐到肯德基取。

B端-->企业端。

C端-->个人端。

G端-->政府端。

参考资料

——《软件测试的艺术》

专注测试,坚持原创,只做精品。欢迎关注公众号『东方er』


版权申明:本文为博主原创文章,转载请保留原文链接及作者。