记者 王心怡 写“产品经理”这行的时候,采访对象说的一句话让我印象很深。她说,在一次又一次和客户、开发、设计、测试、销售、运营打交道的过程中,她深切体悟到了什么是“做了产品经理,管谁都叫哥”,而今天这篇文章的主角正是产品经理口中的“大哥”——软件测试工程师。 事实上,“大哥”也有“大哥”的苦和乐。 开发 成为“程序员”“工程师”或是“码农”的人生路径不外乎两种:一种是从小就泡在计算机、编程世界里,一骑绝尘而去的“别人家的孩子”;另一种是数学成绩还好点,其他科目只能望他人项背的“自己家的孩子”。 俞森大体上属于后者。大学专业选了“信息与计算科学”的原因也很简单——数学全班前几的成绩还不算赖,以及“信息与计算科学”这一什么都挨点边的专业名称让他觉得“找工作好找一些。” 听起来,信息与计算科学不就是妥妥地奔着程序员去的么,可由于这个专业被归到了数学大类下面,他们学的也大多是高等代数、数学分析、微积分、建模等,与编程和算法仅仅打了个擦边球。 所以,俞森毕业后进入一家科技公司做PHP后端开发,很长一段时间里,他连最基础的写代码、调试代码都不会,“好在网上都有教程和资料,只要理顺了逻辑思维的方式,从零开始学也不是难事。” 软件应用程序就像冰山一样,用户看到的只是应用程序的一部分,在大多数情况下,应用程序的最大部分他们是看不到的,也就是所谓的“后端”。在大多数应用中,非用户接口代码比用户接口代码多得多,复杂系统是在后台发生的各种使其工作的逻辑、存储和检索数据,遵循业务逻辑和规则,并且对结果进行预测……所有这一切都发生在幕后,由后端开发工程师完成。 比如一个登陆页面,前端开发工程师只要做好静态页面部分,但是输入用户名和密码后,登录系统需要连接数据库,这就需要后端开发工程师做其中的逻辑处理了。 刚开始,他对程序员依旧抱有的是我们惯常见到的刻板印象——苦逼、加班多、工资高、过劳死,这些印象有的来自于新闻媒体的报道,有的来自于身边从业者的吐槽,“坦白说,对这个工作,初期谈不上有多喜欢,却也不反感。” 真正喜欢上这一行,是在于他探索到了其中的乐趣,“无论我如何破沫横飞地向你形容一位程序员敲代码是一件多么幸福的事情,我想你都不会与热血、震撼联系起来。但这是创造事物的纯粹快乐。” 纯粹在于,他们潜下心来解决问题,持续学习,开发对别人有用的东西,最终抵达成就感的过程。 测试 如果不是一个机缘巧合,俞森大概率地会在开发工程师的领域继续深耕下去,“由于公司开发出来的APP需要测试人员,测试这个APP是否能兼容各种品牌、型号的手机,测试这个APP有没有Bug,我就从开发转到了测试上。” 软件测试工程师需理解产品的功能要求,并对其进行测试,检查软件有没有缺陷(Bug),测试软件是否具有稳定性、安全性、易操作性等性能,并撰写相应的测试规范和测试用例。简而言之,软件测试工程师在一家软件企业中担当的是“质量管理”角色,及时发现软件问题并及时督促更正,确保产品的正常运作。说得更简单些,他们的工作是找Bug,但他们做的其实远远不限于找Bug。 俞森坦言,往往企业在招聘人员的时候,对软件开发工程师的技术要求总比软件测试工程师高,但这并不代表软件测试是个可有可无的职业,也不代表技术水平高低是评判一个软件测试工程师好坏的唯一标准。 专业的人做专业的事。干了一段测试工作后又返回去做开发工作的工程师,俞森也见过不少。开发是顺向思维,而软件测试是逆向思维,总要找一些稀奇古怪的方法、场景去操作软件,软件的使用者千差万别,软件在使用过程中遇到的各种现象也各不相同。 所以,软件测试工程师更需要具有一些逆向思维的能力,想别人所不想,测别人所不测,这样才可以找到更多软件中深层次的Bug。朋友们经常见到俞森怀里揣着好几只手机,不停地换着场合,一遍遍地刷APP。 软件测试行业有道比较经典的面试题——“这是一个杯子,主要用来喝水的,它的质量应该如何考量?” 首先,这个杯子的质量包含哪些方面?即通常所说的需求是什么?如显性需求,首先应该是杯子,不是瓶子、罐子等,用途是喝水的;隐性需求呢?那就比较笼统了,如大小、高度、容积、制作材料、温度承受范围,还有一些其他细节如颜色、边角圆滑等。 知道需求后,下一步就是如何去准确获取、表现这些需求,比如用尺子测量杯子直径,用温度计测量水温等。 上面这个场景被放在软件测试上,就是要求像俞森他们这样的工程师在测试设计、执行之前必须清晰了解原始需求(显性、隐性需求),作出对应的测试方案——需要执行哪些类型测试,要用到什么测试工具等。
|