时间
2016年刚刚结束,2017就已经过去了20多天。
2016总结还没来得及写,马上就该到2017年春节了。
时间过得真的很快,想要抓住时间或者让它停一会儿,真的很难,或者根本办不到;
我们能做的只能是利用好我们自己的时间,不让时间白白浪费。
想说一句话,就是:活着就要精彩。
选择
前段时间,北京的雾霾很严重,很多人都在思考一个问题,我们该选择离开吗?
我也想了很久,但是最终还是没有结果,那就只能留在这里。
但是我得到了一句话:选择大于努力。
其实应该是“[正确的]选择大于努力。”
很简单也是很鸡汤的一句话,但其实真的很朴实,很值得思考。
测试思考之——测试本质
思考
在这里,我只是想把我对测试工作或测试行业的理解来说一下。
我之前一直在思考,测试有什么样的价值,测试该如何发挥他的价值?
软件行业没有测试到底行不行?将来测试行业是否会被消化掉?
如果测试重要,那为什么公司裁员要先裁测试人员?——因为测试人员本身不直接产生价值,而属于成本部门。
如果公司要留下测试人员,那应该留下什么样的人?——肯定是有价值的人,也就是离开这个人,项目将无法完成,无他不可。
因为测试属于成本部门,如果在电子商务公司,属于成本部门里的成本部门。——因为在电子商务公司,内部使用的软件系统是不能直接产生利润的。
所以老板根本不可能投入太多精力去了解或关注这个部门,老板的经历都放在了利润部门;——这是现实也是正确的。
另外老板或者研发团队的leader对测试的了解也不是很深,但是他们对开发比较了解,这就造成了测试行业的一个畸形发展。
人工测试无法得到重视和尊重,自动化却是极端的“疯狂”。(原因很复杂,我后面再描述我的理解)
书归正传;
如果有一天,老板跟你说:测试工作以后交给你了。你怎么开展测试工作?
当然不同的人,有不同的方案;
测试本质
如果是我,该怎么做好测试工作呢?
其实核心还是如何更好地发挥测试的价值,让测试的价值最大化。
另外工作还分为两种,一种是实质性的,一种是影响力方面的。
两方面都很重要,但是从长远以及公司的利益出发,应该是先实质后影响力;当然具体还要根据公司情况以及团队情况来判断。
那测试的实质是什么?通过我的经验,要想发挥测试最大的价值,应该从三个方面考虑。
1、质量
2、成本
3、用户
质量
软件测试的目的就是要减少软件的问题,保证软件符合质量要求。
但是光靠测试人员保证质量是保证不了的,测试人员只能帮助开发减少问题,帮助用户在使用之前提前发现问题。
测试人员可以帮助提高软件的质量,但是无法保证软件的质量;最多也就是保证软件符合需求规格说明书。
绕了半天就一句话,软件的质量只靠测试是不行的。
那怎么样保证软件的质量呢?
质量不是靠一个人或一个部门来负责的,质量应该是靠产品、研发、测试共同承担的。
但是光靠他们还不够,因为这三种人每个人都有自己的工作,如果没有一个团队来专职管理,那软件的质量最终只能是靠大家的责任心和经验和能力。
但人性是懒惰的,没有明确的责任划分,很少有人主动来承担这个责任和义务,即使承担了责任,如果没有权利,也是很难办的。
所以质量管理团队我认为是非常重要的。
我们现实中存在的问题就是没有质量管理,或者没有有效的质量管理,导致软件开发的各个环节漏洞百出,问题满天飞。
测试即使想插手,想要对质量负责,也是心有余而力不足。
现实都有什么样的问题呢?我随便列几个:
- 产品没有需求,或者需求只是几句话几个图;
- 需求讨论、需求变更不通知测试。
- 需求文档没有得到保存、延续。
- 没有架构师,没有设计,开发只是根据自己的经验和能力来自由发挥。
- bug多少对开发人员根本没有考核。
这些问题就是因为没有制度或没有人来监督造成的;其实早期的作坊式开发就是这个样子的,一切只能靠人。
那是不是有了质量管理团队,软件的质量就一定有保障呢?
产品、研发、测试肯定不乐意了。
人,才是企业的根本,也就是人才是最关键的。如果没有高素质的人,软件的质量怎么能高呢?
所以只有提高人员的素质,多招一些高级的人才,才能从根本上提高软件的质量;
有了好的产品经理,才会有好的产品;
有了好的研发人员,才会有高质量的代码;
有了好的测试人员,才能发现更深层次的问题。
21世纪最重要的还是“人才”。
所以一个公司的招聘很重要,如果在招聘方面不重视,那公司的员工整体素质就得不到保障。
只有一流的人才能做出一流得产品,Google和苹果就是例子。
测试团队如何发展
上面说了很多质量,下面我想说一下测试,说一下上面的问题(人工测试无法得到重视和尊重,自动化却是极端的“疯狂” )。
现在行业内的现实情况就是这样,人工测试市场价格远远低于自动化测试,各大公司疯狂的追捧自动化测试。
但是现实又是公司的主要测试工作还是由人工来进行。
由于“市场价格”驱动,现在的手工测试人员也都无心认真的进行测试了,大家都向往着学习自动化。
测试人的心都乱了,还能做好测试工作吗?
为什么测试人都乱了?就是因为价格驱动,另外公司对测试的定位,对测试的发展规划是不正确的。
现在测试的级别基本都是根据自动化水平或者代码水平来确定的。
其实
测试应该分为测试工程师和测试开发工程师,他们的发展道路应该是平行的。
大家现在都是认为会写代码的测试工程师就是高级测试工程师;
这样就导致测试工程师的路已经被扭曲,被改变轨道了。
会写代码的测试工程师应该是测试开发工程师,不应该是高级测试工程师。
测试开发工程师也应该是分为初、中、高级的;其实测试开发工程师就是开发人员,我们招聘的时候就应该按照开发的要求去招聘。
而不是跑到测试队伍里招聘测试开发工程师。
测试开发本身应该是服务于测试的,是为了提高测试的效率而成立的。
但如果测试人员心都乱了,连测试都做不好了,那提高效率还有什么用?
当然我这里并不是在贬低测试开发的价值,也不是在讨论手工测试和自动化测试哪个更重要。
我只是希望测试行业不要畸形的发展,应该对测试和测试开发有一个正确的认识和正确的定位,让测试行业能够更加健康的发展。
也许再过几年就不会存在这种情况了,因为将来测试人员最基本的要求就是会编写代码,有一定的代码经验。
那时候,测试和测试开发也就可以平行发展,测试还是测试,测试开发就是开发了。
成本
测试部门本来就是成本部门,如果我们不想办法降低成本,有一天公司就会降低测试的成本。
做一个测试人员,很少会考虑“成本”这两个字。但是作为一个测试部门的负责人,一定要考虑。
做自动化测试、测试工具都是为了提高我们的测试效率,降低我们的测试成本。
但是我们还需要思考一个问题就是,我们自动化的成本有多高?是否真的能为我们带来收益?能为我们带来多少收益?
收益>成本,我们干;收益<成本,不干。
但是有多少人考虑过这些?也许自动化让我们更有面子,但是自动化的收益是否>成本?
我们一定要根据自己团队的实际情况,根据项目的情况,根据团队人员的情况判断一下。
不要让老板的钱白白的浪费,一定要想办法给老板挣钱。对于成本部门,考虑的就是如何降低成本,增加收益。
比如我们在做大数据测试的时候,就发现需要投入很多的人力和时间,才能完成正常的测试工作。
而且往往发现的bug并不多;
之前我们通过编写工具来准备数据,后来发现当数据脚本太多,准备数据的工具已经不再起作用,通过测试环境来进行测试会耗费很多时间和人力。
在如此成本大于收益的情况下我们该如何处理?工作不得不做,但是却是赔本的买卖。
赔本的买卖我们是不会干的!
于是我们一边做一边总结,最后我们采取了下面的思路:
- 通过与开发和产品沟通,调整开发的设计方案,以降低每次需求变更或升级所带来的影响,将需求变化对代码的影响降到最低。
- 测试人员通过白盒+黑盒的测试方法同时开展,黑盒测试主要通过真实数据和测试数据同步进行;以真实数据为主,测试数据为辅。
- 通过对代码的熟悉以及与开发的沟通,抓住测试重点,缩小测试范围,减少重复测试。
另外通过下面的方案也可以保证产品的质量:
- 开发人员加强自测,其实开发人员也一直在很负责任的测试。
- 业务人员同时进行线上验证,用真实的数据进行业务验证。
总之,
技术团队不能只考虑技术,也要考虑成本和收益,赔本的买卖一定不能做。
用户
写到这里,我有点累了,估计看的人也累了。但是这一节点也是最重要的一节。
如果这一点做不好,就直接决定了我们的产品会有失败的风险。
因为用户就是产品的衣食父母。
用户的重要性我就不多分析了,只想通过我遇到的几个例子分享一下。
有一次邀请了业务方(用户)一块进行需求评审,沟通过程中,用户对需求又提出了很多问题,而且很多都是完全颠覆了原有的设计;
需求文档根本无法满足用户的需求。用户需要的功能没有设计,用户不需要的却列了很多。这样的需求如果上线,肯定是失败的产品,因为产品设计的根本就不是用户需要的。
如果测试只是依赖需求文档来测试,肯定是发现不了这些问题的。所以我们一定要尽可能的多接触真实的用户,了解用户的真实想法。
由于业务人员一般不懂软件设计,所以他们都会有一个产品接口人与软件的产品经理进行对接;一般产品都是通过接口人和产品经理以及部分业务方沟通形成的。
但是在一次沟通会上,业务方用户的描述却与产品接口人的描述有很大的不同;产品接口人一直认为很重要的功能A,业务方用户却说实际工作中,功能A并不是很重要,或者说由于实际业务工作原因,功能A起到的作用其实是很小的。
看来信息经过传播,很有可能会失真。测试要想保证产品符合用户的真实需求,就一定要多接触一线的真实用户。
现在大数据产品都很火,什么样的数据产品是成功的产品我没想过,但是我知道什么样的数据产品是失败的。
首先如果数据不准确,那产品就一定会失败;界面再漂亮,用户也不会买账。
另外如果用户也不知道数据是否准确,但是如果没有理由让用户能够信任你的产品,那这款数据产品也一定是失败的。
总之,如果没有办法让用户觉得你的数据是靠谱的,那你的产品就一定会失败。
所以数据产品,数据的真实性、正确性、准确性是非常关键的。
测试,一定要重视一线的用户,只关注需求的测试不是好测试,一定要多关注一线的真实用户。
技术
测试本质=质量+成本+用户
但生活不只是眼前的苟且,还有诗和远方。
技术是我们必须要依赖的,有了技术才有诗和远方。
技术可以改变一个人的命运,我想也可以改变测试的方向。
跟测试相关的技术有很多很多,感觉整个软件工程中用到的技术都是测试需要掌握的。
如果一个人想要样样精通,估计最后大部分人都是样样稀松,当然也不排除有很多奇才。
所以我觉得测试人员就应该精通我们测试行业所必须的技术,那就是下图颜色鲜明的四个区域。
当然测试开发和管理要根据个人的职业规划来确定。
其他的技术我觉得都是为测试服务的,或者测试中用到的,我们做到掌握就OK 。
当然如果在某一方面我们有特殊的要求,比如我们就是做数据库产品的,或者我们就是做操作系统的,那这些知识就是必备的了。
但如果不是特殊需要,我觉得这些知识掌握了就好,如果需要深入应用,我们可以从公司借调专业的人才来帮助我们实现,而不需要专门招聘。
测试里数据库学的最好的就跟说相声里唱歌是最好的是一个道理。
最后还想说一下我认为测试发展趋势,我觉得编码对于测试人员将来是最基础的要求。
如果是因为不想编码而进入测试行业,将来肯定是行不通的。
现在我已经在要求我们的团队,
测试+业务+编码都要会,还必须得精通。
有哪一门通,都不好意思跟人家说我们是做测试的。
下面是我画的关于测试的知识领域以及发展道路。
<作者:张强(JD-Y) 2017/01/24 如需转载,请注明作者及来源 >