通用技能上:
1.基本计算机知识(操作系统,数据库,通讯协议原理,熟悉至少一门编程语言)
2.基本软件测试知识(各种测试理论,测试方法论,测试用例编写,缺陷界定标准,软件质量评估)
3.简单项目管理知识
产品、系统认知:
1.熟悉所测产品功能,能够将产品文档内描述的UC转化成TC,这个最最基本
2.熟悉所测产品的一些隐藏需求或者功能(业务上的进阶能力)
打个比方,支付公司上一种新的支付渠道,熟悉业务的测试人员应当可以预见到这次升级可能会对前段界面、系统账务、各类报表等各个模块造成影响,从而一并纳入测试范畴。
要知道,很多时候,即便是接入这些渠道的产品经理,也不一定会在Prd或者UC中对这些可见影响项一一列出,这需要经验和责任心。
性格上:
1.有牛皮糖属性的为佳,越“不要脸”越好
测试工程师,在很多公司,和研发是有业务上对立属性的(虽然从宏观角度上来说,都是为了提高软件质量服务)。测试工程师提交的BUG越多,意味着研发工程师工作质量越差,需要返工的工作量也越大,甚至会影响绩效,所以测试工程师有时候很容易得罪研发部门。
一个可以相对坚持原则(比如3级BUG以上一定要改),又能拉下脸和不愉快的研发工程师保持较好关系的测试工程师,会对项目质量起到很关键作用。说到底,又能做事(发现BUG并督促修改),又会做人(该进的不让,该退的绝对给面子,最大化消除部门间矛盾)的测试工程师,是十分难得的。
2.有异想天开属性的为佳
这个只可意会,不好言传的。在我带过的团队里,的确有那种奇葩……经常会用令人匪夷所思的方式找出BUG,这是天赋。
3.会“偷懒”的为佳
这里的偷懒不是指上班发微博聊天混日子,而是能够利用已知资源对枯燥乏味的测试工作进行优化的同学。
说个实例:
我以前公司曾经上过一个“授信”项目,做过金融类项目的同学大家都知道。授信项目的测试用例真可以说是相当变态,随着账期、滞纳金率、手续费率、利息率、本金、还款情况的不同,可以衍生出无比多的用例,同时每个用例进行编写时,都要仔细根据规则计算预期结果的资金状况,非常费力。
咱部门一个小伙子,头一天晚上拿了PRD,第二天晚上就利用Excel写了一个固定某些账期下不同情况下的各项资金计算工具(有一些小BUG,无伤大雅)……大大减少了兄弟们按计算器的工作时间。这种“懒”员工,你是领导你喜欢不?
软件测试工程师:软件企业中的质量管理
近年来,由于IT行业的人才稀缺,越来越多人转向了IT相关职业。由于IT软件业的薪资较高,吸引了不少人选择了IT软件专业,IT软件专业包括软件开发、Java工程师、软件测试工程师等。从薪资来说,软件测试工程师相比软件开发类的职业会偏低一点,但是它的难度性也会偏低,所以也有不少人选择了软件测试工程专业。那么在转向这个专业的同时,首先还是得了解它主要是做什么的,需具备哪些职业素质。
软件测试工程师主要是负责理解产品的功能要求,并对其进行测试,检查软件有没有错误(Bug),决定软件是否具有稳定性(Robustness),写出相应的测试规范和测试案例。简单的说,软件测试工程师在一家软件企业中担当的是“质量管理”角色,及时纠错及时更正,确保产品的正常运作。那么要成为一个软件测试工程师应具备哪些职业素质呢?
1.分析能力。软件测试的核心其实应该就是设计测试用例了,而设计测试用例,就是依赖与分析能力了。这里我们不说那些常用的设计方法,从一个稍高的层面上来讲,就是怎么将一个复杂的系统进行抽象,分析拆成几个不同的维度,结合维度可能出现的情况进行有选择的组合,以小成本获取大收益。无法将一个复杂系统拆解成简单的维度,是没法做好用例设计的。
2.编程语言。语言其实就像说话一样,只不过我们常说的英语日语之类是与人沟通,计算机语言就是与计算机进行沟通的。对于测试工程师来说,精通一门语言,熟悉其它几门语言是有必要的。对于不同语言编写的被测程序,是有不同特点的,如果对实现的语言不了解,无法进行白盒测试,没法看代码diff(结合代码diff做测试)来提高效率。对于特点不了解,可能也会导致自己漏掉部分内容。
3.设计能力。不要认为设计能力就是开发工程师的事情,拥有好的设计能力,就可以在设计评审的时候多提意见,促进开发工程师使用好的设计,不仅对开发有好处,对测试也是很有好处的。这样才能防患于未然,不仅自己的劳动力,也节省团队的劳动力。
4.对业务的理解。对业务的理解越充分,就越能够理解终端用户的需求,促进产品设计使用好的方式,促进产品成功。难道你想做一大堆不成功的项目么,那样是多么没有成就感的一件事啊。
5.自动化相关的考虑。随着项目越来越多,系统的测试项目也会积累的越来越多,每次有新功能了,难道要用手工来回归一下原有的case么。自动化测试是提高回归测试效率的唯一解决方案,以高效率促进高质量,才是一个良性循环的发展方式啊。