手机功能测试介绍 一、简单介绍.1 二、开发平台介绍:3 1、JAVA.3 2、BREW.4 3、.NET.4 三、操作系统介绍:5 四、网络协议介绍.6 1、WAP 网络协议.6 2、GPRS 网络协议.6 五、测试实例.6 1、手机 SIM 卡测试.6 2、手机常用功能测试.9 六、CDMA/GSM 手机功能测试原理.11 1、时间域测量.11 2、频域测量.11 3、调制域测量.12 4、通道功率的测量.12 七、手机软件系统测试要素.13 1、测试计划(Test Plan)13 2、测试用例(Test Case)14 3、待测手机和附件.15 4、测试设备和工具.15 5、测试执行.16 6、错误报告.17 7、进度报告(Progress Report)18 8、测试报告(Test Report)18 八、何做一名称职的手机软件测试工程师.19 1、吃透手机的各种功能.19 2、熟悉网络和运营商的各种服务.19 3、熟悉系统架构.20 4、提高测试敏感度.20 5、细心加用心.20 6、踏踏实实做事.20 九、其它.20 一、简单介绍 当前,对于不同品牌的手机,它们所用的平台(指CPU 和操作系统)各不相同, 由于采用不同的设计方案,各设计之间缺乏兼容性,操作系统和二进制代码都不兼 容.当手机运行需要大量内存时,特别是随着接入互联网,手机用户要求能使用个 性化的 交互式应用软件,应用程序运行在虚拟运行环境下时,问题显得尤为突出. 所以,有必要建立一种标准的通用运行平台,达到在合适的成本下提供统一的交互 式应用软件运行环境.但是,除非该平台是基于完全标准的器件,否则是难以达到 要求的. 标准的通用的运行平台是满足运营商,软件开发商,和终端用户三者综合要求 的解决办法.理想的环境必须具备以下性质: (1)、平台应提供二进制兼容性.可执行软件是二进制目标码,需要在处理器和应 用软件目标码之间建立沟通; (2)、平台必须包括微处理器,或一个与微处理器机器代码相离的通用机器码仿真 器; (3)、平台应包括带有应用程序接口 API 及支持一致性图形用户界面 GUI 相应功 能的操作系统.API 是执行典型操作功能的软件功能库,例如打开文件,读写数据, 配置和管理内存,处理事件,显示文文件和图形等.为使应用软件真正做到可移植, 装置上必须有公共功能集,并让软件开发者能通过一致性 API 扩展功能; (4)、平台不应要求过多的系统资源,可移植性设备不应使成本上升太多; (5)、平台应对功率有高效率,尤其考虑用电池供电的设备; (6)、由于要在互联网上应用,安全性也是重要因素. 以Java 手机软件测试为例潜在的测试问题和解决办法 Java 有移植性好和其它很多优势,但用在手机上,速率和功耗仍是个瓶颈. Java 带来的新问题是执行速度慢,消耗功率大.与PC 不同的是,手机资源有 限,一般流行的手机中 CPU 的速率为 26MHz,或52MHz,带128M 闪存,8Mb,16M 或64Mb 内存,没有硬盘,由电池供电,体积小,空间窄. 系统慢的原因是: (1)系统必须同时运行两套软件:Java 应用和虚拟机 JVM; (2)Java 软件需要被翻译成自然 CPU 指令; (3)Java 平台是基于栈(相对于寄存器)结构的,导致更多的内存存取. 因而,如何对执行 Java 加速成为关键.加速处理数据和图形,这对手机上互联 网和多媒体的应用具有重要意义.要克服这些问题,提高 Java 软件性能,可能的方 法有四种: (1)提高微处理器速率.然而 Java 软件性能与时钟频率并不成线性关系,微处 理器运行一般比内存存取时间高 2-10 倍, 增加时钟频率只会增加等待周期. (2)对JVM 软件进行优化.这可能涉及到要用汇编语言对字节码翻译环路进 行编程,而这会导致 JRE 变得与微处理器类别有关.而与可移植相抵触; (3)编译将软件直接编译到微处理器的自然机器语言.但是这会增加内存的 开销, 也不节省能量的消耗. (4)采用基于硬件的加速器. 这可以做到提高性能,保障能量和成本的有效性. 被手机设计厂商认为是较理想的措施. 二、开发平台介绍: 目前,智能手机的开发平台主要有:JAVA、BREW 和.NET. 1、JAVA 目前在在移动领域广泛使用开发平台是 Sun 开发的 J2ME(Java 2 Micro Edition),即用于嵌入式系统的 Java.J2ME 技术由一个虚拟机 KVM(K Virtual Machine)和一组 API 组成,这组 API 适合于为消费和嵌入式电子设备提供经过 剪裁的运行环境. KVM(K Virtual Machine)虚拟机本身仅仅需要 40-80KB 内存、20-40KB 动态内存(堆),能够运行在 16 位25MHz 处理器上.经典手机6688I 由于 支持 K-JAVA,功能可以无限扩展,从而成为手机发烧友的最爱,其在友人网的 手机论坛至今仍是热闹非凡. J2ME 为移动互联引入了一种新的模型,即允许手机可以从互联网上下载各 种应用程序,并在手机创造可执行环境离线运行这些程序.作为 Java 技术在移 动电话等小型设备的版本, 它针对屏幕、电能和内存等资源有限的移动设备进行 了优化和定义,为了解决无线设备多样化的矛盾,Sun 依照各种设备的资源特性 将J2ME 技术架构分为 Java Virtual Machine(JVM)、配置(configuration)和说明 (profile)三层,然后再进一步细分,这使 J2ME 能够在每一类设备的限制下工作, 而同时提供最低限度的 Java 语言功能性. 由于定义了可执行程序下载的标准, 并在手机上创立了可执行环境和程序开 发语言,由此,在移动通信业第一次为软件开发商创造了巨大的商业机会,手机 用户在得到丰富应用体验的同时,也大大提高了运营商的网络流量. Java 有句名言:"编写一次,随处运行"(Write Once,Run Anywhere), 也有人戏称为"Write Once,Debug Anywhere".从实际情况来看,二者都有一定的 道理. 缺点:目前支持 J2ME 的移动设备处理速度还比较慢,Java 服务应用软件相 对较少. 2、BREW 美国高通公司的 BREW(Binary Runtime Environment for Wireless)平台是 一种为无线设备提供开放式标准平台的瘦应用程序执行环境, 是无线应用程序开 发、设备配置、应用程序发布以及计费和支付的完整端到端解决方案的一部分. 完整的 BREW 解决方案包括面向开发者的 BREW SDK (tm)(软件开发包)、面向 设备制造商的 BREW 应用程序平台和移植工具以及由运营商控制和管理的 BREW 分发系统(BDS).利用该系统,他们可以轻松地将开发者开发的应用程序 投入市场并协调计费和支付过程.利用运营商基于 BREW 的服务,用户可以通 过从运营商的应用程序下载服务器上无线下载应用程序来自定义手持设备. BREW 平台是独立于空中接口的技术,所以 BREW 与任何网络的结合都非常 平滑.在CDMA2000 1X 网络中可以充分利用其高速的数据传输速率,为最终用 户带来极具冲击力的用户体验. 到目前为止,中国联通已经有了基于 BREW 平台所开发的商用程序,如: Adventure(环球历险记)、Any Flash (安凯软件)、 City Online(都市在线)、 E4E Stock(股票)、 Hit Submarine(决战四大洋)、 Instant Weather(天气快报)、 Mobi Escape(莫比大逃亡)、 Suc Esc(星际生存)、Yao Ming Basketball(姚明篮球)等. 缺点:BREW 目前开发工具还不成熟,主要用 c 语言来开发.另外,全球 有34 家运营商采用了 Java,而只有 8 家运营商采用 BREW,它的应用范围相对 较小. 3、.NET .NET 是Microsoft XML Web services 平台,是一组开发工具和操作系统集, 用来生成、公开和消费 XML Web 服务,通过智能设备实现个性化的集成 Web. 它由四部分组成:.NET 框架和 Visual Studio.NET ,服务器结构,构造块服务, 智能设备软件. XML Web services 允许应用程序通过 Internet 进行通讯和共享数据,而不管 所采用的是哪种操作系统、 设备或编程语言.Microsoft.NET 平台提供创建 XML Web services 并将这些服务集成在一起之所需.对个人用户的好处是无缝的、 吸 引人的体验. .NET 框架是一个用于生成、部署和运行 XML Web 服务及其它应用程序的 环境.它包含三个主要部分:公共语言运行库、框架类和 ASP.NET..NET 框架 压缩版是伴侣结构, 它有一套编程接口, 以供开发人员开发面向智能电话和 PDA 等移动设备的软件. 从根本上讲,.NET 是关于使技术为人们所用,而不是强制个人适应其计算 器的限制.利用.NET,无论何时何地,您总能连接到您首选设备上的信息.利用.NET,您可以保护您的个人信息和企业数据,同时允许有您的授权的他人连 接到这些信息. .NET 的缺点:该平台的一些设计太过理想,不保证能达得到(至少短期内是 如此). 三、操作系统介绍: 说到操作系统,您也许会很自然地想起计算器来,也许会想到了 DOS、 WIN9X 以及 WINNT,但肯定没有多少人能想到手机!这也对呀,就这么巴掌大 的东西,怎么可能安装得下这么庞大的操作系统呢,再说手机接通电源的时候, 好象也没有看见手机正在激活. 那么说了这么多,手机到底有没有操作系统呢? 答案当然是肯定的,不过我们普通用户的手机可能就没有操作系统的身影了, 它 一般出现在 PDA 类型的手机中. 从目前的市场来看,PDA 类型的手机通常采用手机厂商自己开发的操作系 统,或者是使用在目前的市场上影响较大的手机操作系统,例如微软公司的 Windows Ce Os 或者是 3Com 公司的 Palm Os 等.而在目前我国品牌手机中,大 多数使用的是 EPOC 操作系统,例如爱立信、摩托罗拉、松下以及诺基亚等品牌 手机都支持该操作系统. 各个手机生产商独立开发的手机操作系统,由于是针对 自己的产品设计的, 因此它与其它厂商的手机很难兼容,这种手机操作系统由于 先天的独立性和封闭性,注定了他们不能在手机操作系统市场中能掀起什么大 浪.当然,现在有的手机生产厂家也看到了市场的潜力,他们通过不断改进自己 的操作系统,允许用户选择各种各样的扩充软件来扩充功能,或者是利用外部的 扩展设备达到与其它产品相兼容的目的,不过这种扩展功能毕竟是有限的,他们 与赫赫有名的 Windows Ce Os 或者是 Palm Os 相比,简直微不足道. Windows Ce Os 是美国微软公司想在移动电话领域里继续台式计算机操作 系统领域的神话的一个代表作品从多媒体发展的角度来看, 该操作系统具有很强 的竞争能力, 再加上微软在软件行业的影响力, 其升级与扩展的潜力是相当大的. 据说,最近微软公司又宣布,计划今年年底前推出一项命名为"针刺"(Stinger) 的操作系统软件,主要在设定多媒体驱动的电话标准,并平衡原窗口操作系统在 市场上的强势地位;包括该软件在内的手机售价约为八百美元.准备和 Palm 以及i-Mode 相互较劲.微软表示,装有该操作系统的手机非常迷你、并拥有相当 大的彩色屏幕,功能除作为记事簿、还可连结数据库和播放音乐和影片. Palm Os 系统是 3Com 公司的 Palm Computing 部开发的一种 32 位的嵌入式 操作系统,它的身影经常出现在一些掌上计算机中,当然大部分 PDA 手机也是 使用的该操作系统. 该操作系统如果配合同步软件 HotSync,将可以使 PDA 手机与普通计算器 的数据信息实现同步效果,从而使用 PDA 就能轻松实现个人计算机所具有的功 能.最近 3Com 公司又推出了最新版的操作系统 Palm OS 5.0,该版本强化了多 项功能,除了支持多国语言外,还突出了以下功能:首先增加了通信警告功能 "Attention manager",电子邮件到达可及时通知,通知方式为:弹出符号或弹出 对话窗口,闪灯或振动,这些功能与手机的电子邮件功能相似,只是这些功能目 前只限于内置了无线通信功能的终端;其次该系统支持蓝牙功能,对于无通信功 能的终端来说,只要连接具备蓝牙技术界面的手机,就可利用终端内的地址簿进 行收发电子邮件;再有该系统的在数据传输速度方面比以前版本提高了几倍, 同 时利用该操作系统您还能方便地扩展存储设备.不过,为了保证对象代码的可兼 容性, 该操作系统没有使用被称作"Thumb"的可以将 32bit 命令压缩为 16bit 的技 术,据说该操作系统将作为 2002 年投放市场的 PDA 所使用的操作系统. EPOC 操作系统是由 Psion Software 公司推出的操作系统,而且推出的时间 也比较早了, 现在一般的移动计算设备都采用该操作系统. 最早的 EPOC 操作系 统是 16 位的,随着信息量的不断增加和技术的不断成熟,现在的 EPOC 可以支 持32 位了,并且可以支持多任务同时操作.EPOC 操作系统在很多功能上都优 于Windows CE OS,例如 EPOC 系统性能更加稳定,设计更紧凑,功能更加实 用, 更能提高个人工作效率和个人信息管理功能,而且市场上有很多免费共享软 件以及商业软件可以给 EPOC 系统增加很多新功能. 在PDA 手机市场上, EPOC 是Windows CE OS 和Palm Os 强有力的竞争对手.目前支持 EPOC 的主要有爱 立信、摩托罗拉、松下、诺基亚以及 Psion PLC,这些公司为了共同的利益,组 建了一个 Symbian 的公司,以便全身心地投入到与微软公司和 3COM 公司竞争 当中去. 四、网络协议介绍 1、WAP 网络协议 1. Wireless Application Environment (WAE) 2. Wireless Session Layer (WSP) 3. Wireless Transaction Layer (WTP) 4. Wireless Transport Layer Security (WTLS) 5. Wireless Transport Layer (WDP) 2、GPRS 网络协议 移动台(MS)和SGSN 之间的 GPRS 分层协议模型如图所示.Um 接口是 GSM 的空中接口. Um 接口上的通信协议有 5 层, 自下面上依次为物理层、 MAC (Mdium AcceSS Control) 层、 LLC (Logical Link Control) 层、 SNDC(Subnetwork Dependant Convergence)层和网络层. 五、测试实例 1、手机 SIM 卡测试 由于各手机的 MMI 界面及基本功能不一致,这里列出部分测试方案,敬请 各位批评,指正. 1、参照手机:GSM 制式 2、参考标准: GB/T 18905.5-2002 软件工程产品评价 第五部分 评价者用的过程 BG/T 16260-1996 信息技术 软件产品评价质量特性及其使用指南 3、评判依据: 各公司的标准定制的不一样,有些公司可能更细化些,在这里仅作一个粗略 依据.产品的好坏由用户说的算,一切为用户服务! 依据:软件研制规范,软件需求说明书,用户手册. 4、基本功能说明: 添加、删除、修改、查找 设置(各MMI 不一样,在这里不进行举例) 批量操作:SIM 卡复制到手机,手机复制到 SIM 卡,SIM 卡移动到手机, 手机移动到 SIM 卡…… 5、功能测试: 在这里只讨论名片夹的功能性和可靠性的测试,对名片夹模块的易用性, 效率,维护性以及可移植性不做考虑. 按是否通过测试,则分为两种,顾名思意即通过测试和失败测试.通常的失 败测试,也就是说要设计测试用例,迫使软件出错.通过测试则是要保证软件实 现基本功能. 5.1 基本功能测试: 手机输入法有很多种,比如 T9,拼音,字母,数字等等.在编写测试用例的 时候,首先要保证各输入法是否能正常输入;能否正常保存;在进行错误输入的 时候,是否有响应的提示.在这里举出几个例子: 5.1.1、存储在 SIM 卡上的记录 5.1.1.1、添加: 1)姓名输入: i)是否可以使用任意输入法添加汉字、字母、数字,达到姓名允许的最大 字节,并能正常保存. ii)是否可以使用任意输入法添加汉字、字母、数字,在没有进行输入时, 是 否有警告提示或是否可以正常保存(根据产品要求). iii)是否可以使用任意输入法添加汉字、字母、数字,超过姓名允许的最大 字节,是否有告警提?是否可以正常保存. iV)是否可以进行汉字、字母、数字的混合输入,并重复 iiii,是否有异常. 2)电话号码的输入: i)是否可输入数字至最大值,并可正常保存. ii)在不输入数字时,进行保存时,是否有告警提示. iii)是否可以输入汉字,字母,此时是否有告警提示或异常. iv)是否可以输入特殊字符,如+、P、*、#,是否可以正常保存.这里给介 绍个出错的案例: 连续输入多个*, P 或+, 不按电话的号码的正常顺序进行输入, 试试,比如"++139***P123",看看是个什么样的效果,是否显示正常. 3)在输入过程中按返回键、挂机键、或翻合翻盖、电源键,是否有告警提示或 异常. 4)在各 MMI 界面下,各按键功能是否正常. 5)待机界面下直接输入数字至最大值,是否可以正常保存. 6)待机界面下直接输入数字即特殊字符(+,P),是否可以正常保存. 7) 将1),6)步骤进行一下排列组合,查看是否有异常情况. 1 对2, 2 对4, 4 对16, 所以测试用例经常的几千条, 几万条根本就不希奇, 一个名片夹写上 1K 条也之是写了个小部分.呵呵,罗嗦话又一堆.继续...... 5.1.1.2 修改 1)单条记录的修改: 是否可以对单条记录进行修改, 包括姓名和数字, 并重复 5.1.1.1 中的 1) , 2) , 3),4)各步骤. 2)连续多条记录进行修改 此条的测试目的是对软件进行压力测试. 5.1.1.3 删除 1)对单条记录进行删除 i)删除后,列表显示是否正常;数量是否正确. ii)SIM 卡记录为空时,进行删除时,是否有告警提示. iii)SIM 卡记录仅为一条时,删除后,是否有 SIM 卡内容为空的提示. iv)在删除过程中,各功能键是否正常. v)在删除过程中,进行中断操作,是否正常,比如挂机键,电源键等等. 2)对多条记录进行删除,目的是对软件的进行压力测试. i)连续对 SIM 卡的多条记录进行删除,是否出现异常情况. ii)删除 SIM 卡记录直至为空时,是否有异常. iii)在删除过程中,各功能键是否正常. 5.1.1.4 查找 由于各手机的查找功能定制的不同,在这里不做累述. 5.1.2 存储在手机上的记录 存储在手机上的记录和存储在 SIM 卡上的记录的测试用例基本相同.在测 试过程中需要留心的是 SIM 卡的存储容量以及手机的存储容量,由于软件的定 制不同,往往在不同处易出现故障.比如 SIM 卡的姓名栏可存储 5 个 汉字,或8个字母、数字,电话号码可以存 20 位,手机的姓名栏目可以存 12 个汉字,20 个字母、数字,电话号码可以存 30 位.在这个不同点之间就容易出 现故障 2、手机常用功能测试 测试,首先要对测试的对象有深入的了解.那么手机有哪些功能自然是我们 必须首先了解的.毫无疑问,打电话永远是手机的第一功能,也是绝大多数人购 买手机的根本出发点.但是作为现在的手机来说,仅仅能打电话远远是不够的, 手机的功能大致可以分成以下几个大类: 1.通话功能 a.对拨入拨出电话的管理 b.对通话记录的管理 c.呼叫转接、呼叫等待、通话计时计费等方便用户使用的功能 2.消息(Message)功能 a.文字短消息(SMS)的编辑、发送、接收、转发和存储等; b.多媒体短消息(MMS)的编辑、发送、接收、转发、存储和配置; 3 电话本(Phonebook) a. 名片的管理 b.存在 SIM 卡上的名片 c.存在手机内存中的名片 d.一个名字多项内容(如传真、固话、手机、Email 等) e.名片的新建、修改、拷贝、转存、删除 f.名片以红外或短消息形式发送给其它手机 g.单键拨号(Speed Dialing) h.号码分组(Caller Groups) 4.增值服务(Value Added Service) a.WAP 上网 b.GPRS 上网 5.其它功能 a.闹钟(Alarm) b.日历(Calendar) c.计算器(Calculator) d 定时器(Count Down Timer) e 屏保(Screen Saver) f.待办事项(To-Do List) 6 为特定语言(以简体中文为例)量身订做的功能: a.中文输入(拼音/笔划) b.中文菜单 c.农历(Lunar Calendar) 7.附件 a.充电器(Charger) b.耳机(Headset) c.车载免提(Car Kit) d. 照相头(Camera) 手机中可能还会有很多其它功能,以上只是列举出了一些比较常用的.大家 可以去网站上下载某款手机的用户说明书了解该款手机都有哪些功能. 用户说明书只是一个简略的介绍,对于一般用户来说可能够用了.但是对于 专业的测试工程师来说还不够.手机制造商当然会有介绍这些功能的设计文文 件, 如果你能参与到手机制造商的开发项目中, 这些数据的优先级永远是最高的, 需要详细阅读.但这些数据一般来说对外界是保密的,还有一个渠道是一些手机 的论坛和网站. 六、CDMA/GSM 手机功能测试原理 1、时间域测量 时间域测量常用于脉冲信号系统,测量参数包括脉冲上升/下降时间、脉冲 重复间隔、开/关机时间、误码间隔时间等等.传统的测量方法就是用示波器来 观察信号的时域波形. 而我们可以用矢量信号分析仪将输入信号移到基带后采样 成同相分量 I 和正交分量 Q.我们可以在幅度-时间、相位-时间或 I/Q 极坐标等 坐标系统中来表示这两个分量.扫频仪用于显示信号在时域的幅度,即RF 信号 的包络. 对于 TDMA 技术来说时域分析尤为重要, 所以脉冲的波形和定时在 GSM 手机的检测中是必不可少的参数. 2、频域测量 手机的频域测量通常分为 Spectrum due to modulation and wideband noise 测试 以及 Spectrum due to switching 测试. Spectrum due to modulation and wideband noise 测试是为了确保调制过程不会 造成频谱的过度传播. 如果频谱过度传播,那么工作在其它频段的手机就将受到 噪声的干扰.这项测试在某种程度上也被视为相邻信道功率测试.我们通过这项 测试可以及时发现信号发射过程中诸如 I/Q 基带信号发生器、 滤波器和调制器等 各个层面上的问题. GSM/EDGE 发射器会使射频信号功率迅速呈下降趋势. 发射射频载波功率测 试确保这一过程发生时间的快速而准确, 然而射频信号功率下降过快又会导致在 发射射频信号中出现不良频率的干扰信号. 所以 Spectrum due to switching test 测 试确保了这些频率成分的信号功率保持在一个可以接受的范围内. 如果射频信号 功率下降过快, 就会导致工作在发射频率附近其它信道上的手机受到很强的噪声 干扰. 如果这项测试不能通过的话可能的原因就是发射器的功率放大器或是基准 回路有问题. 3、调制域测量 调制质量是手机发射器最重要的性能指针之一,所以它的测量就变得尤为重 要.CDMA 手机和 GSM 手机的调制质量测试方法有所不同,CDMA 手机是通 过测试ρ和频率误差来表征它的调制质量,而GSM 手机则通过测试相位误差和 频率误差来表征它的调制质量. CDMA 手机:ρ是关于互功率和总功率之间关系测量.互功率是将测得的射 频信号功率和理想的参考信号功率求互相关得到: ρ的性能好坏严重影响到手机对信号的处理能力.如果ρ值太小使得许多不 相关的信号以噪声的形式出现在信号中, 于是我们就不得不加大信号的功率来提 高信噪比, 这样基站在发射功率不变的基础上就不得不暂时屏蔽掉一些通话以保 证另一些通话有足够的信噪比. 频率误差的测量是为了验证手机信号发射器是否工作在准确的频率上.这对 于手机以及整个通信系统来说也是至关重要的, 如果手机发射频率出现比较大的 误差就会对工作在其相邻频率信道上的信号产生干扰. GSM 手机:相位误差(GMSK)和频率误差是用于表征 GSM 手机调制质量的 两个重要参数.相位误差的测量能反映出发射器电路中 I/Q 基带信号发生器、 滤 波器、调制器和放大器等部分的问题,在实际系统中,太大的相位误差会使接收 器在某些边界条件下无法正确解调,这最终会影响工作频率范围.频率误差的测 量能够反映出合成器/锁相环等部分的性能.频率误差过大反映出当信号发送时 存在频率转换,合成器不能快速识别信号.在实际系统中,频率误差过大会造成 接收器无法锁定频率,最终导致和其它手机之间相互干扰. 4、通道功率的测量 信道功率是指在信号频率带宽范围内的平均功率,它是通信系统最基本的参 数之一.在无线通信系统中,我们要用尽可能小的功率实现最佳的通信连接. 这 样不仅有助于将整个系统的干扰保持在最小的程度, 还可以最大限度地延长基站 电池的寿命.手机移动通信中如果通道功率太小,那我们就无法得到理想的通话 质量,如果通道功率太大,基站电池的寿命就会大大缩短,我们要使通道功率保 持在一个使两者性能达到最佳的均衡状态. 因此通道功率的测试在手机测试中就 显得至关重要. 七、手机软件系统测试要素 作为软件测试的一种, 手机软件测试本身也有几种分类. 以测试手段来划分, 可以分为黑盒测试和白盒测试. 以测试的发生时间和目标来划分,可以分为模块 单元测试、 集成测试和系统测试. 以测试的任务来划分, 可以分为现场测试 (Field Test);互操作(Inter-Operatability Test )测试.另外还有一个 True Test 的阶段 类似于微软的α和β测试,由一些非专业人士仿真用户来进行手机的试用,试图 发现 BUG 的一个阶段. 以下需要介绍的,是手机软件系统测试阶段的一些组成部分. 1、测试计划(Test Plan) 软件系统测试作为一个产品开发项目的一部分,一定要有测试计划.计划由测试 经理制定,参考文文件为整个产品的开发计划.其中会定义如下信息: 1、测试的任务:即需要测试什么和不需要测试什么; 2、工作量估算:需要多少人,测试多少天,测试几个周期; 3、日程表:每人每天需要做什么; 4、测试方法和流程:采用什么方法,遵循哪些流程; 5、测试资源:需要多少人、设备、工具、文档等资源,以及对上述资源都有哪 些要求. 6、测试输出:测试中需完成的错误报告(Error Report)和进度报告(Progress Report),测试完成后需完成的总结报告(Summary Report). 测试计划将是整个测试项目的指导, 定义了一切测试活动遵循的规则, 最为重要. 2、测试用例(Test Case) 我们在第一部分曾经提到, 对于手机的各种功能来说,总会有一个文档来描 述它.这种文档通常叫做"软件特性"(Software Specification)或"软件需求 规格" (Software Requirement),但是这种文文件是用开发语言写成而不是用测 试语言来写成的.如何区别这两种语言,请看下面的例子: 比如我们如果需要用户在 X 窗口中输入一个月份,在软件特性文档中通常 会这样说:X 窗口中提示用户输入一个月份,其可能的值为 1~12,如输入值超 出此范围,将出现错误提示窗口.这就是典型的开发语言.直接把这句话作为测 试用例来用虽说并不是不可以, 但是会带来一定的问题:我们无法保证测试人员 完全完整完备的进行了测试.此时,我们需要有测试工程师根据软件需求特性, 把开发语言"翻译"成测试语言,变成下面的样子: 序号输入(Input) 期望输出(Expected Output) 测试结果(Pass/Fail/Not Available) 1 在月份输入窗口中 输入 0 出现错误提示 2 在月份输入窗口中 输入 1 正常,当前月份变为 01 3 在月份输入窗口中 输入 5 正常,当前月份变为 05 4 在月份输入窗口中 输入 12 正常,当前月份变为 12 5 在月份输入窗口中 输入 13 出现错误提示 上面仅仅是一个简单的例子,真实情况中,如果真的出现这种情况,用不用 测试语言区别是不大的. 因为一般的测试工程师都有这样的素质,对待测软件进 行完备的测试.但是为了避免人为的疏忽,同时方便进行工作量和工作进度的评 估,测试语言还是需要的.而且,面对一些复杂情况,如果没有一个清晰的文档 把所有测试的点一一列出,很难保证测试的完备性. 我们通常把测试用例分为两类:Clean Case 和Dirty Case,字面意思是"干 净的用例"和"肮脏的用例".Clean Case 所谓的"干净",是指测试人员进行 的是一种温和的测试,测试完成后,待测设备应该一尘不染,像测试前一样. 在 开发 Clean Case 的过程中,测试工程师完完本本按照传统、经典、普通的方式, 根据需求特性的描述,按部就班、循规蹈矩的做 Case,比如上面表中的例子, 就是一种 Clean Case.与此相反,Dirty Case 就不那么客气了.测试人员会对待 测设备进行毁灭性的测试, 比如以前我们看到有的彩电厂商为宣传自己产品质量 过硬,不惜把彩电从楼上摔下,在水里浸泡,这就是一种 Dirty Test.但是软件 是无影无形的东西,既不能刀切火烧,又不能连砸带摔.如何对软件进行 Dirty Test 呢?我们通常采取的方法是:营造出复杂的任务或者大流量大业务量,来验 证手机在这种情况下依旧能够正常工作.举例来说,我们如果要测试"编辑短信 并发送"的功能,如果要做 Clean Test,测试人员回输入一段文字,可能只有一 两个字,这就够了,之后选择发送,如果能够正常发送出去,我们认为此功能就 Pass 了.但是对于 Dirty Test,就不能这么温柔了,测试人员会编辑一段长长的 文字,其中包含中文、英文大写、小写、数字、全角符号、半角符号、空格等等 内容,而且长度会是允许范围的最大值,这样的一段文字发送、接收才是对手机 软件的真正考验.这个例子其实还不够"肮脏",大家在参与测试项目的过程中 可以自己去领会.一个高水平的测试工程师的价值就体现在对系统的熟悉程度 上,他们能够设计出条件复杂多样的测试用例,能够使测试事半功倍. 通常一个完整的测试用例,会包含以下一些内容: 1、测试环境或先决条件:把做测试前需要具备的环境和先决条件列出,比如说 要设计一个测试电话会议功能的测试用例, 由于电话会议功能在中国只有中国联 通的网络才支持,因此在测试用例的这一部分里应该明确标识出:测试时只能使 用联通的 SIM 卡. 2、输入:一个或一组操作就是测试的输入; 3、期望输出:每做完一个输入后,相对应的手机的显示或反应就是输出了,严 格按照需求特性设计的测试用例,此处就应该把需求特性规定的正确输出列到 "期望输出"栏中,这样测试人员在测试的时候就可以判断实际的输出结果是否 和期望输出一致,如果不一致,就说明这是一个错误(BUG).从这一方面可 以看出,这也就是测试用例最重要的作用:帮助测试人员(尤其是对系统不是非 常熟悉或有把握的测试人员)判断出一个输出是否正确. 3、待测手机和附件 这一部分没有什么太多需要注意的内容.需要提醒的是:要把待测手机的软 件升级到需要测试的版本去. 升级肯定需要特别的软件和工具,每个产品都会对 此进行培训. 另外对于附件,比如充电器、耳机、车载免提等等,均有专门的说明书可供 咨询. 4、测试设备和工具 我们的测试虽然绝大多数是手工进行的,但并不能说,一个测试人员只有一 双手就可以进行测试了. 想想我们在测试中都需要什么东西呢?联系上面的三个 部分, 我们可以总结出: 手机、 测试计划、 测试用例毫无疑问是需要的. 此外呢? SIM 卡大多数情况是需要的,除了打电话、发短信以外,绝大多数功能(除 紧急拨号外)没有 SIM 卡根本无法使用. 计算机和网络也是需要的,测试用例很多时候是存在网上的电子文文件;如 果测试时发现错误, 填写错误报告也是在网上进行的.此外升级手机的软件也需 要计算机. 此外会需要一些特殊的设备,比如升级手机软件的设备,同步 PC 与手机数 据的设备等. 5、测试执行 现在万事具备,只欠东风.可以开始测试了.通常一个测试循环,是由以下任务 组成的: 一个测试循环,时间可长可短,但通常的做法是以两个软件版本发布的间隔 作为一个测试周期的长度. 比如每两周发布一个版本,则一个测试周期就为两周 得到一个新的版本意味着一个测试周期的开始, 第一步自然是升级手机的软 件了.之后首先要做的是做验证,验证那些在以前版本中发现,在新的版本中已 经被更改了的错误是否确实正确无误; 尤其要注意的是看看是不是改掉旧问题的 同时带来了新问题. 可能你有疑问:我怎么知道在这期版本里哪些问题得到了改 正呢?这是从以前你报告的错误中得知的.每当你发现一个错误时,你需要到错 误数据库中去填写一份错误报告单,经过错误更改流程,开发人员将更改软件中 的错误, 同时改变数据库中对应错误报告单的状态,系统会自动通知错误发现者 到新的版本中去验证错误是否已经被改正. 接下来,测试人员将按照测试用例的指导进行测试,检查每个测试用例是否 通过, 如果没有通过需要报告填写错误报告单,如果通过则进行下一个测试用例 的测试,每天需向测试经理报告进度. 一般来说,在产品测试周期中,会安排一个自由测试的阶段,在此阶段,测 试人员应按照自己对系统的理解,对产品进行随意但有针对性的测试,这往往是 能发现大量错误的阶段. 一个测试周期的结束也意味着下一个新测试周期的开始, 周而复始,一般软 件产品需要安排至少 4 个测试周期,这样才能保证"发现错误-改正错误-验证 错误"都能有充足的时间. 以上这些测试执行的行为,都是一般意义上的.有的时候,依据项目的实际 情况,可能会安排一些特殊的测试阶段,典型的例子是压力测试,如果市场上报 告发现了一些较难复现的 BUG,项目通常就会组织压力测试,测试人员得到的 仅仅是错误的症状和可能使之出现的建议,但是无法提供出精确的复现步骤, 需 要测试人员依据自己的理解和对系统的测试经验,进行有重点的测试,目标很明 确,抓住那些稍纵即逝的 BUG,并试图找出复现步骤. 测试,是一种压力很大的工作.我们需要的是和几千万潜在的用户赛跑, 比 赛看谁能早一步发现那些潜伏的 BUG.我们虽然起步比他们早,但是他们的环 境会多种多样,我们十几人的测试团队,只能尽我们所能的比用户早一点想到, 早一点测到,只有如此才能真正意义上的保证产品的质量. 6、错误报告 刚才已经数次提到错误报告了,这是一个测试工程师重要的工作成果之一, 也是唯一对产品质量有直接帮助的成果.因此错误报告单的质量非常重要,也是 衡量测试工程师水平和能力的关键标尺. 错误报告单的第一个作用是清楚地告诉别人这个问题是什么, 复现步骤是什 么样的. 以帮助开发人员定位此问题.一个好的问题报告单应该能够让开发人员 独立的, 不需要再次求助测试人员帮助就能明白问题是什么,之后定位错误和修 改BUG 就能顺利进行下去了. 一份合格的错误报告单,至少应该具备以下内容: 1、被测试手机的软、硬件版本; 2、该错误是否可以重现; 3、发现错误的步骤; 4、错误现象的描述; 5、正确现象应该是什么样的. 写错误报告尤其是写英文的错误报告,最忌讳的是先入为主的观念,测试人 员手中拿着出错的手机,往往觉得"这不是很明显吗?"但是在其它人尤其是不 同国家、不同语言的人看来,就不一定那么明显了.所以要做到让一个完全没有 准备的人看懂并成功复现问题,是一门学问,建议大家注意以下几点: 1、语言要简练,相同的话别说两遍; 2、步骤要详细、准确,不要跳过一些步骤; 3、避免使用从金山词霸上查到的怪僻生词,尽量使用常见的词; 4、尽量使用手机软件的术语,不要自己发明一些词汇; 写作错误报告,需要经验的积累,大家慢慢熟悉总会有一天掌握技巧的, 关 键是这个等待的周期要尽量缩短.平时练习的时候,尝试着写一些自己凭空想象 出来的错误用来练笔,效果会很好. 7、进度报告(Progress Report) 一个测试项目通常会有成千上万个测试用例,几个到几十个测试人员,这样 规模的项目,没有进度的监控,效果可想而知.为了能够即使准确的了解项目的 进展情况, 同时把软件测试的发现错误情况即使汇总, 通常我们都需要进度报告. 进度报告一般包括以下一些内容: 1、工作时间(小时数); 2、测试用例执行情况: a.已经完成的测试用例数目; b.其中出错的测试用例数目; c.通过的测试用例数目; d.未测的测试用例数目; e.无法测试的测试用例数目; 3、发现的所有错误的列表; 4、执行的所有测试用例及其结果的列表. 进度报告一般每天下班前都需要实时提交, 以保证测试经理随时能够对项目 的进展和软件的稳定度有精确的了解. 8、测试报告(Test Report) 作为一个测试项目的总结,测试报告的内容应该包括: 1、测试活动的时间; 2、测试投入的人力; 3、测试效果和结论; 4、测试用例通过情况列表; 5、发现所有错误的列表; 6、所有仍未关闭的错误报告列表 测试报告一般由测试经理完成,需要提交给软件经理以及更上层的研发经理. 八、如何做一名称职的手机软件测试工程师 所谓"行行出状元",有些人认为做手机测试无聊,没有技术含量.正相反, 现在职场上高水平的测试工程师非常难觅.因为这一行入门容易精通难. 为什么说入门容易?一个没有任何通信背景, 没有任何测试经验的人也可以 做测试, 因为至少他可以以一个普通用户的身份来测试,要做手机的用户没有任 何条件, 所以做用户测试自然也不需要条件.可问题是用户做测试仅仅是测测就 算了.他可以没有任何计划性和根据,只是依据自己的理解和好恶胡来一通. 他 完全可以理直气壮地这么做,因为他仅仅是一个用户.但我们不能如此,我们的 头衔是"软件测试工程师",如何做才能配的上这个头衔呢? 1、吃透手机的各种功能 我们的测试有别于一般用户进行的真实测试(True Test)的,在于对待测设 备的了解上.对于没有任何移动通信背景的用户来说,手机对他意味着打电话、 发短信和电话本,最多再加上日历等功能.对于软件测试工程师来说,这仅仅是 最基本的部分,手机中所有的功能加起来有上百个,其中描述说明的文档有上万 页, 还能说手机测试没有技术含量吗?别的不说, 如果你能吃透这上万页的文档, 你就可以称得上是专家了,事实上,这样的专家是少之又少,打着灯笼都难找. 另外, 为什么一般用户仅仅用到了手机的少数功能呢?这是因为有些功能用 起来比较不便,或者配置相对复杂,比如说要发送一条多媒体短信,则需要做一 些相对复杂的配置, 一般用户往往没有兴趣和时间做这些事情,而测试工程师不 能有这样的畏难情绪, 一定要强迫自己对测试的产品有兴趣.想一想手机论坛上 活跃着的那些手机玩家,把那些人作为我们的榜样吧. 2、熟悉网络和运营商的各种服务 手机中会有上百种功能, 但是并不是所有的功能在中国移动或中国联通覆盖 的网络中能够使用. 这时往往就需要测试工程师的经验了,他们能够精确的判断 出测试时发现的问题是属于手机软件的问题,还是由于网络不支持造成的.培养 这种经验需要在工作中的细心和细致,要勤于发问,当一个问题有了答案后, 一 定要留心记住,经验的培养离不开记忆. 截至 2003 年1月,中国移动的大部分网络中尚不能支持以下服务:通话计 费、数据通话、USSD 信息、信息中心等等,有心的你可以自己去收集. 还有一些功能有赖于 SIM 卡的支持,早期的 SIM 卡只能存储 25 个名字, 后 来有了 100 个的,又有了 255 个名字的大容量卡;此外中国移动的移动梦网卡提 供了一些增值服务的功能,这些信息也需要测试人员的日常积累. 3、熟悉系统架构 纯黑盒测试对测试人员的系统了解程度要求是不高的, 但并不是说,测试人 员可以心安理得地满足现状. 有心人应该对系统力求有更深地了解,这样在测试 时, 他就能够不仅仅满足于对手机界面表面上的关注,尤其当你设计相对复杂的 测试用例时,如果你了解系统的某些模块相互之间会有影响,你就能够有的放矢 的营造测试的条件,测试的目的性和针对性会大大增强. 4、提高测试敏感度 为什么有的时候, 相同的测试用例、相同的手机但不同的测试人员测试的结 果会不一样呢?这是因为测试的敏感度不一样.当一个问题一闪而过,测试人员 可以选择熟视无睹, 也可以选择刨根问底,这一方面有可能是因为对系统的了解 程度不一样,当你把手机上每一个可能的界面烂熟于胸时,稍微一点的偏差你就 能发现;还有一方面是各人的责任心不同,发现问题可能是偶然的,但试图重现 它就需要测试人员的耐心了. 5、细心加用心 测试时当然要优先关注那些惊天动地的大问题,像死机、重起等导致手机无 法工作的问题属于第一等级,打电话、SMS、电话本等基本功能无法工作也属于 第一等级;其余功能无法工作应该属于第二等级;像显示界面、提示信息等小问 题虽说优先级不高,但也是我们测试的重要部分.这些问题的发现,有赖于测试 人员的认真细致.比如说手机屏幕上的滚动条,每条选项都有编号,这些编号通 常应该是 1、2、3、4 顺序排列的,但曾经有的产品的选项编号是 1、2、4、5, 3 被漏掉了,发现这种问题就需要测试人员的细心了. 6、踏踏实实做事 任何工作都需要踏实,这道理大家虽说都知道,但并不是所有人都能真正做 到. 太多的人一入职场, 就把过多的时间花费在对现在的抱怨和对未来的憧憬上, 频繁的跳槽更使他们一直处在动荡和熟悉环境的阶段,没有时间静心做事. 九、其它 随着手机这种消费类电子产品的普及, 越来越多的人开始使用上了这些小东 西. 随着用户数量的增大, 对软件中BUG的容忍度则在随之降低. 同样一个BUG, 对1个客户的危害如果可以用 10 美元来弥补,假如客户变成了 1,000,000,需要 付出的绝不是简单的 10,000,0000 个美元(虽然这个数目已经够让人嗔目结舌 了),最终的数目可能是 10 倍甚至 100 倍,更何况,在付出金钱的同时,损失 的名誉和客户忠诚度更是无法用金钱来衡量的. 有鉴于此,手机制造商为了减小 BUG 的数目,一个重要的举措就是增加对 测试的投入.固然这也是一种软件测试,遵循的原则和传统意义上的软件测试并 没有太多区别.本文的目的也不是重复那些相同的东西,只是指出手机产品的软 件测试相对独特的地方. 手机软件有哪些特点呢?归纳出来,无非以下几项: 1、用户群极为庞大,历史上的几款成功手机,都卖到了几千万台的数量级.试 想对于这样庞大的用户群,任何一个小小的 BUG 都会被放大几千万倍,这可不 是闹着玩的. 2、产品的声誉重于一切.创下一个品牌不容易,它需要很长时间小心翼翼的努 力; 但毁掉一个品牌简单得多,一款或几款失败的产品就能把一个叱风云的制 造商送出局.不信看看几年前的业界老大 Ericsson.同样,一些并不影响功能的 小的 BUG,也会给客户的心理造成一种微妙的影响.他们会想:连小处都做不 好,怎么能设想这款产品很成功呢? 3、技术相对简单,透明.虽然移动通信算是一种高科技,但作为通信终端的手 机来说,与网络的联系比较简单,而且对于用户来说,这些技术也是透明的. 不 需要用户对技术本身有太多的了解. 4、技术和功能更新升级极快.短短的几年时间,各制造商为争抢市场份额,新 技术新功能以让人头晕目眩的速度推出.每个产品里的新技术新功能,往往是埋 藏着大量 BUG 的定时炸弹.