做移动互联网App,你的测试用例足够吗?

    我在面试测试工程师时,经常问到的一个问题是“给出Word另存为这个功能的测试用例”。除开基本的测试用例外,考虑到各种异常情况,例如内存已满、硬盘空间不足是非常重要的。但是针对移动互联网App来说,情况还要复杂的多。

    一个重要原则是:测试你最终要发布给用户的App版本。

    可能每日构建、每日测试的理念已经深入人心,我们很多时候测试的只是App的开发和Debug版本,而不是最终的Release版本。在打包最终的Release版本时,我们一般还要加上数字签名,或者再加上代码混淆。那么最终的发布版本和Debug版本肯定有不一致的地方。我们iPhone的App曾经使用过一个第三方开源库,在Debug版本时完全工作正常,但是正式上线后才发现必定会导致崩溃。这个代价和经验非常宝贵(其实这个开源库的论坛上已经讨论并警告过这个问题)。我们后来花了许多力气来修正和弥补这个问题。如果在一开始就针对Release版本进行了测试,这样的问题是不会出现的。


Debug& Release

 

    测试网络相关的App,有三个非常重要的最佳实践

    1、2G、3G、wifi都要覆盖

    这三者之间不仅仅只是网络速度的差别,它们代表了三种不同的网络环境。另外你可能没有想到一种特殊的情况可以用它们来测出问题:开发环境和生产环境。

    一个有经验的开发团队会在内网搭建测试环境来进行开发时的测试,在上线时将配置切换到线上的生产环境。这个切换应该是在发布流程中需要Check的一个环节。但是,我们有可能遗漏。

    所以这个测试用例可以用来防止这种情况的出现,在wifi下内网环境可以work fine,但是2G和3G就不行,只有真实的环境下2G和3G才能正常工作(想想2G和3G是否可以正常访问http://192.168.1.xxx这样的地址就可以了)。

    2、HTTP、HTTPS都要覆盖

    许多App和后台服务都是通过HTTP来交互的,正常情况下都一切正常。为什么需要测试HTTPS环境?在一些免费上网的环境中,例如在麦当劳、星巴克里,它们的网络环境都要输入用户名和密码,通过SSL认证来访问网络。如果你使用HTTP Client的library对这种异常没有做捕获处理,那么你的App必定会崩溃掉。


    3、进行网络异常、服务器宕机或出现404、502等情况下的测试

    后台服务的稳定性是你有时很难去控制的,尤其是牵涉到DNS、空间服务商的情况下。国内某著名DNS服务商经常出现大规模域名解析故障,碰到这种情况,你对后台API的请求很可能就会出现404错误。而你和API交互的数据应该是某种固定格式例如JSON和XML,这样你的数据解析必然会出现错误,抛出异常。如果你对异常没有进行正确的处理可能会导致程序不能正常工作。以下用伪代码解释一下逻辑:

try { if(request() == success) { callSuccess(); } else { callFail(); } hidePopup(); } catch(e) { // do nothing, just wait….now popup window will show forever on the screen!!! // if it is a iOS app, the popup window will lock the screen }

    而针对不同的手机系统也有需要注意的地方。Android系统固件1.5、1.6和2.0以上版本都是要分别详细测试的。因为Android 1.5、1.6及以上的SDK有很多实现不一致的地方,兼容性有很大问题。在没有做特殊处理时,可以在Android 1.6上正常运行的程序基本在1.5上打开就会崩溃(资源文件和API的问题,这个可以单独写一篇文章来解释这个问题)。


Andorid 1.5目前仍有1.0%的保有量


我测试Android1.5的机型:摩托罗拉Backflip

    针对iOS系统,除了iOS3、iOS4和iOS5的测试外。我只想说尽可能多,尽可能谨慎,尽可能苛刻的进行测试。受限于App Store冗长的审核周期,一旦你的应用出现严重系统错误,你的修复版本基本不可能在很短时间内在App Store上架。那么用户将需要容忍一周左右的时间你的App所带来的煎熬或者永远离去。


App Store的审核以严厉和时间长著称

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303223.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 手机 wlan信号桥,手机WLAN信号桥是什么?WLAN信号的作用和使用方法

什么是寒假必备?温暖的被窝和wifi绝对是不能少的。今天就给大家介绍一下和手机WIFI有关的WLAN信号桥的知识,让大家在寒假享受WIFI又多了一种选择。感兴趣的可以一起来看看。一、什么是WLAN信号桥?WLAN信号桥简单的来说就是手机连接一个WiFi后…

.NET 6 HotReload的试用

.net v6.0.0-preview.3的HotReload我是极喜欢的,因为之前有这样的需求——状态不丢,上下文不丢。为了验证,安装完.net 6 preview 3后,新建一个webapi项目,写了如下简单代码:using Microsoft.AspNetCore.Mvc…

如何撬动机器学习的冰山一角?

目前,人工智能的应用日渐广泛。而作为人工智能核心的机器学习,是一门多领域的交叉学科,专门研究计算机模拟或实现人类学习行为的方法,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。简单来说&a…

linux 下运行libnids,libnids出错

2017/03/28因为246上一般用的东西都比较多了,就直接使用了这部分。但当初编译的时候也不是我弄得。今天想试一下libnids的编程。编译错误在网上查了下,说是版本不够的原因,那我也不能重新编译了,毕竟还有别人说不定用的好好的。gc…

服务治理治什么,10张图告诉你答案

凌晨四点被公司的监控告警叫醒了,告警的原因是生产环境跑批任务发生故障。即刻起床处理故障,但还是花了不少时间才解决。这次故障是一次数据校验的跑批任务,校验前面跑批任务的数据是否正确。幸运的是,之前的核心任务已经完成&…

Mapgis6.7 林相图自动注记 .

林业行业制作林相图是一件比较复杂的事。Mapgis注释和子图分别对应arcmap中的标注和符号,区文件填充颜色对应arcmap中的渲染。由于mapgis中上注释文本和子图号都只能手工一个个去上。如果能结合arcmap出图的强大功能,由arcmap负责制图,mapgis…

在linux文件共享接口,入坑Linux-day13(使用vsftpd服务传输文件、使用Samba或NFS实现文件共享)...

一、文件传输协议#ftp是一种在互联网中进行的文件传输协议,基于客户端/服务器模式,默认使用20、21号端口,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于接收客户端发出的相关FTP命令与参数。#FTP工作的两种模式主动…

大数据分析了50万条拼多多商品数据, 得出了这样的结论

一、缘起我在杭州有位朋友,提到有家做社交的电商很火,叫拼多多,我没有在意,直到有一天,我居然在电视上看到了它的广告,广告画面活蹦乱跳,余音绕梁,我惊呆了,想知道这是何…

CentOS 7 安装 Greenplum6 (附 dotNET Core 示例)

Mysql 在面对大数据量的时候,还是表现有些吃力,所以产品中需要扩展能支持海量数据的数据库,这里选择的数据库为 Greenplum6 ,Greenplum 底层使用的是开源数据库 PostgreSQL 。本文会介绍怎样在 CentOS 7 中安装 Greenplum6&#x…

linux系统故障实验,Linux常见系统故障排除

导读: 前言 运维人员经常会遇到各式各样的系统故障,如何根据故障特征锁定问题根源,需要的不仅仅是技巧,还有遇到故障时的思路,和对系统内部的理解,本文列出了一些常见的系统故障和处理方法,在那…

MIT正式发布编程语言Julia 1.0:Python、R、C++三合一

MIT 开发的 Julia 语言是全球热度上升最快的编程语言之一,下载量超过 200 万次,下载者包括谷歌、Facebook、FAA 和美国能源部等各个部门的开发者。近日,MIT CSAIL 实验室正式发布了 Julia 1.0,该语言期望结合 C 的速度、Matlab 的…

EFCore3.1+编写自定义的EF.Functions扩展方法

前言本文主要是讲解EF Core3.0 如何实现自定义的数据库扩展函数,虽然EF.Functions 提供了很多数据库函数,但是并不全面.比如加密解密..。这样的话 我们就需要自己扩展这些数据库函数 从而达到调用的目的.本文以达梦数据库为例(其他数据库都一样)..上篇文章推荐: EF …

WSUS2.0数据导入、导出(备份、还原)

以前我们做的WSUS实验都是让WSUS服务器通过互联网连接到微软网站去下 载更新补丁,但是现实的生活中有些网络是与互联网隔绝的,这种情况下可以采用导入导出WSUS数据的方法来解决WSUS的更新问题。先在一台能联网的 WSUS服务器上下载所需更新,然…

linux perl模块检测,Linux有问必答:如何用Perl检测Linux的发行版本

提问:我需要写一个Perl程序,它会包含Linux发行版相关的代码。为此,Perl程序需要能够自动检测运行中的Linux的发行版(如Ubuntu、CentOS、Debian、Fedora等等),以及它是什么版本号。如何用Perl检测Linux的发行版本?如果要用Perl脚本…

借助TensorFlow框架,到底能做什么?

谷歌在七月份正式推出了深度学习框架TensorFlow 1.9 版本,那么TensorFlow框架到底是什么?TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。最初由Google大脑小组的研究员和工程师们开发…

在c语言中如何屏蔽一段程序,如何在用C语言关闭TCP程序中的Nagle算法

TCP为了防止在网络中过多的小分组会导致阻塞,因此提供了Nagle算法:要求一个TCP连接上最多只能有一个未被确认的未完成的小分组,在该分组的确认到达之前不能发送其他的小分组。相反,TCP收集这些少量的分组,并在确认到来…

CCNP课堂练习四:frame-relay traffic-shaping(帧中继流量×××)

帧中继(Frame Relay)是一种网络与数据终端设备(DTE)接口标准。它可以减少结点的处理时间,提高网络的吞吐量。帧中继提供的是数据链路层和物理层的协议规范,任何高层协议都独立于帧中继协议,因此,大大地简化了帧中继的实现。目前帧中继的主要应用之一是局域网互联,特别是在局域网…

百度内部培训PPT流出:数据分析的道与术

这是一份来自百度内部的数据分析学习PPT,非常经典的入门教材。主要内容1、什么是数据分析(道)1.1 数据分析是什么?1.2 什么是做好数据分析的关键?1.3 分析要思考业务,尤其是接地气1.4 分析要言之有物&#…

VS2010 C++下编译调试MongoDB“.NET研究”源码

考虑到mongodb使用了boost库源码,参考mongodb官方文档后,下载编译boost版本是1.42(时间为2010-2-2)或更新版本:boost版本1.42:http://sourceforge.net/projects/boost/files/boost/1.42.0/boost_1_42_0.zip/download 下载boost源码之后…

有了这15款编程游戏,谁都可以学编程!

1、Coding Games一边玩游戏,一边挑战编程难题。Coding games支持包括PHP、C、JavaScript在内的20多种编程语言。用户界面功能强大,可以定制。例如,你可以选择你的代码编辑器的风格: Emacs、Vim、Classic。如果你想提升编程技能&am…