3.误认为测试只有功能性的校验。
题主之所以这样问,可能在一定程度上会误认为,测试只是在使用产品的过程中,发现了功能上、界面上不合理的地方,报告给开发,他们修复,就结束了。
其实不然,测试除了功能性的校验,还有安全方面的测试、性能方面的测试、兼容性的测试,等等等等。一个负责任的企业,不可能把包含安全漏洞、性能奇差、对运行系统有各种吹毛求疵严酷要求的产品发布给普通用户,就算他们敢发布,用户也会选择唾弃他们。所以在发布产品之前,肯定有这方面的测试,而这方面的测试,不是普通用户所能胜任的。
喏,现在看到了吧。其实测试也是一个复杂的工程,并非单纯的使用最终产品,找到其中的缺陷和问题,再提交这么简单的事情。
说到这里,我猜想,题主所说的让大众去测试,去找bug,很大程度应该是指测试金字塔中,位于顶层的那部分。让用户通过自己的使用,遇到bug直接报。
而且,前面也有人回答了,单元测试那些是开发做的。对于那些测试金字塔中层级较低的测试,可以由开发人员或者其他相应的技术人员在产品发布前解决。对于那些层级高的,比如UI级别的测试,可以分发出去,让最终用户来测试,并且奖钱!
OK,没问题。那就依照这个说法,我再来解释为什么UI级别的测试也不能不管不顾的直接扔给最终用户。前面有人也提到了相关的东西,我在这里依旧分几点来说,先来个summary,主要是这几个点:
测试是一项工程,需要计划、策略。不能无脑乱来。
对于bug的描述和修复,是有相应要求的。普通用户做不来。
详细解释如下:
即便对于大家认为没有技术含量的手动测试,也要制定相应的测试策略、测试计划。确定使用什么方法去测试产品,如何测试,开展测试时如何组织测试用例,人员如何分配,团队如何分工合作。如果没有这些纲领性、指导性的东西,面对产品那么多的功能,全凭脑子想,用到哪里测到哪里?这个真有点天方夜谭了。苏杰的回答中已经提到不少。
要构建这么多测试,是需要团队内的人员一起努力、合作的。要考虑哪些东西需要提前注意,哪些情况需要单独拿出来测试,哪些东西不重要可以不测。在开发的过程中就尽量避免出现问题,而不是等它出现再修。
还是那句话,测试是一项工程。发现了bug,需要把它用合理的形式记录下来,反馈给开发方,再经过多方人员的沟通,修复,回归测试,才能确认修复好了,再次发布产品。
对于记录bug也有一些要求,比如要阐明在运行什么系统下、系统的版本、产品的版本、如果是浏览器中打开还要标明浏览器版本、重现步骤、提供截图、提供测试账号。
开发人员拿到bug后,可以根据那些信息尝试快速地复现bug,再定位,再修复。如果中间出现问题,需要跟报bug的人员沟通、确认,是产品本身就如此设计的?是偶然发生无法复现的?是优先级很低暂且不用管的?
这些事情,如果是在团队内,很好实施。如果需要跟用户做这样的沟通,那真是……费死牛劲了。所以,即便大家都认为没有技术含量的UI测试,也不能直接扔给用户去做。
最后,最重要的一点在这里:
用户使用产品,享受的是体验。
目的是高效舒服地解决自己的问题。
如果没有任何测试,直接把产品扔出去,让用户负责测试。前面提到的安全、性能、兼容性还有功能上的各种问题,任何一个都会导致用户崩溃。
别的不说,如果12306在发布后,你的身份证号、买票的银行卡号、密码会被随意泄露,你会用吗?你愿意用一下,冒这么大的风险去赚那100块钱吗?就算安全足够好,但是性能差,12306在高峰期卡成什么样,骂的人少吗?还有使用过程的体验,不少文章也批过12306的购票体验差吧,还说抢票插件的体验真不错!
这些东西都是测试过程中可以发现、避免和修复的。但直接放到最终用户使用的阶段再处理,市场那么多竞争对手,你的公司敢这么玩吗?你以为就你一家搞垄断业务啊?啊,不对,好像说错了什么……
澄清一下,我没有黑12306的意思。毕竟高峰期买票的人那么多,购票的流程又是那么复杂,网上也有不少帖子分析过,还是阿里的工程师写的。我们祝12306能吸取大家提的有益意见,及时改进,越办越好!
所以,无论如何都不能把质量没有保障的产品,直接扔给最终用户去做测试。
最后感慨一下,大家普遍对测试有一定程度的误解,觉得测试就是在界面点点点,找几个茬,就算完事了。
其实,测试需要专业的人士,需要对产品的透彻理解,需要对用户的同理心,需要对市场的把握,需要足够好的大局观,需要足够的耐心,需要一定的技术功底,需要宽泛的知识面,需要良好的沟通能力,需要能够协调团队中不同角色。
说的好像很高级,好多事情是产品经理或者项目经理干的活,但是,说实话,想做一个好的测试人员,这些东西真的都需要。当然,如果愿意踏踏实实做一个点界面的人,那就不需要这些。
说句题外话,从另一个角度看,题主这个建议其实很好,企业可以发布产品后,悬赏bug。对提出合理bug的用户予以一定的金钱奖励,这倒是一个不错的营销手段。