HardBirch

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

时间:11-10-18 栏目:HTML5移动开发 作者:张飞不张,文采横飞 评论:5 点击: 2,272 次

    我在面试测试工程师时,经常问到的一个问题是“给出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的审核以严厉和时间长著称

声明: 本文由( 张飞不张,文采横飞 )原创编译,转载请保留链接: 做移动互联网App,你的测试用例足够吗?

做移动互联网App,你的测试用例足够吗?:目前有5 条留言

  1. 5楼
    jiangtao:

    是否可以提供第三方测试平台 不然这么多环境搭建够麻烦的
    或者建立众包式的测试平台 让网友可以参与测试

    2011-10-19 09:27 [回复]
  2. 4楼
    hfahe:

    的确,测试对大多数中小应用开发者来说是一个很重要但是很麻烦的事情,尤其是Android众多的机型普通团队很难全部覆盖到,例如Andorid 1.5、Android 1.6、点心OS、MIUI、Moto blur等等。第三方测试平台和众包是很好的主意,希望有团队来解决这个问题,一定是很有前途的。

    2011-10-19 11:20 [回复]
  3. 地板
    flyindance525:

    [code=html]

    [/code]一定是很有前途的。

    2011-10-19 15:15 [回复]
  4. 板凳
    NickTang:

    能否开发自动测试技术?最近在思考这个问题,大家可以讨论一下。

    2011-10-19 22:16 [回复]
  5. 沙发
    philofly:

    好文章,值得学习。

    2011-10-20 12:43 [回复]

发表评论


QQ群互动

Linux系统与内核学习群:194051772

WP建站技术学习交流群:194062106

魔豆之路QR

魔豆的Linux内核之路

魔豆的Linux内核之路

优秀工程师当看优秀书籍

优秀程序员,要看优秀书!

赞助商广告

友荐云推荐