这个题目更应该是个疑问句,而不是陈述句。要想成为一名Senior Mobile SW testing engineer,不谈软性的方面,诸如管理能力,沟通技巧等等,单纯从技术层面上来说,在广度和深度上到底需要具备那些专业知识,到目前为止,我仍然没有一个确定的答案。

有个插曲可以说一说,倒是可以给这个问题带来一点点提示。在韩国出差的时候,曾经和一位开发的同事闲聊,问他为什么不是Senior SW engineer, 因为据我所知,和他差不多同样水平的工程师大部分都是Senior的级别。他说当初应聘我们公司的时候没有想到要申请 Senior,进来才发现原来成为Senior很容易。然后他反过来问我,我说我不是,但是我们组刚来的几个从SE跳过来的同事都是Senior。这位开发工程师一脸诧异的表情,你们这测MMI的不久是啪啪的按手机吗?还有什么Senior啊!难道Senior看的是比谁手按的快吗?一时之间,我哑然了,因为我实在无法解释作为手机MMI层的测试工程师,Senior与Junior的区别到底在哪里?在我们项目里,Senior和Junior工程师所从事的工作是完全一致的,Senior的价值又体现在哪里呢?开发的同事接着说,Senior的测试工程师应该可以自己开发测试工具啊,这样才够Senior啊。

能够自己开发测试工具,无疑是一个Senior testing engineer应该具备的素质之一。

但是我觉的这只是一个方面,在我理解中,一个合格的高级手机软件测试工程师应该具有以下几个方面的知识:

★★★★★ 深入理解及掌握

★★★★ 一般理解

★★★ 了解

★★ 基本概念

1. 移动通信原理和网络结构 ★★★★

移动通信的原理和网络结构,专业性很强,而一般的MMI测试工程师很难掌握,而且也有专门的协议测试工程师来负责协议栈一致性测试。但是我认为作为一个手机软件测试工程师还是应该学习和理解一些在协议层level上的知识,对于信道,信令等还是要有一些概念性的理解。对于一些典型的手机流程,比如开机,关机,主呼,被呼,发送/接受短信等典型流程,应该有信令级的理解,对于一些常用的网络参数,要理解其含义,发现问题的时候,通过trace或log信息能够基本确定网络问题还是手机的 defect。(其实要想看懂的手机的Trace,一定要对协议栈有一定的理解)。题外话,我们测试部门的director曾经对我们软件测试team的表现很不满意,认为我们不应该只是单纯的发现bug,而应该从更深层次的去探究这个 bug的原因,甚至可以定位bug,所以对我们做了很么网络,协议层的培训,但是效果很不好,而且team manager和director的分歧也很大,在我们team manager看来,定位defect应该是开发的任务,对于这一点我想另外写文说说自己的观点

2. 手机软件的架构 ★★★

手机软件的Architecture,从底层驱动到上层应用,是一个什么样的结构,应该有一定的认识。在我的理解中,基本上现在的手机研发,都是由第三方如TI提供一个整体的平台,整合了所有协议栈的内容,然后在之上是手机的操作系统,如Symbian, Linux, or Palm等等,或者如我所在的公司,由Openplug or SKY提供开发的framework, 然后在这之上进行MMI的开发

3. 软件测试理论知识 ★★★★★

这个不用多说,软件测试工程师必须要掌握的,软件测试如何融入整个开发的流程,什么时候介入,什么时候结束,如何搭建测试环境,如何设计Test Case (包括设计Case的等价类划分,边界值法等等),还有测试领域专用的一些术语等等。

4. 开发技能 ★★★★★

合格的软件测试工程师,编程技能不可缺少。在手机测试中,比如AT command,完全可以开发工具来实现自动化测试。所以掌握一门扎实的编程语言,C或者C++还是非常重要的

5. 手机的工作原理 ★

这里涉及到手机的一些硬件知识,这部分知识在手机软件测试中有没有作用,我也没有什么认识。暂且列在此处。但是我觉的一些手机的专业术语还是应该知道的。

我能想到的是这些了,一个合格的手机软件测试工程师,要掌握的东西是很多很多的。

生无涯,而学也无涯,看来学习要走的路还是很长的,加油啦!