从对人负责的角度,重新理解软件测试
发布于 2021-05-11 20:11 ,所属分类:软件测试工程师学习资料
软件测试在一个项目中的确有很多事情要做,最基本的包括制定测试计划、编写测试用例、搭建测试环境、执行测试用例、报告测试结果等等。但是,软件测试的目的是为了对这些事负责吗?
人们通常认为,软件测试就是验证软件产品特性是否满足用户的需求,或者就是发现软件产品中的bug。这都没有错,是正向和逆向两种思维方式,互为补充,发现软件中的bug也是从用户角度出发,找到对用户产生负面影响的缺陷。这样来说,其实软件测试从根本上不是对产品负责,也不是对bug 负责,而是对用户负责。
如果对事负责,你会花很多时间去读需求文档,根据文档编写测试用例;
如果对人负责,你会花很多时间研究用户,分析产品的目标用户,观察用户的行为,研究用户的应用场景。
如果对事负责,你会视用户故事卡片、需求文档为圣旨,把它们作为测试的依据;
如果对人负责,你敢于质疑用户故事的描述、需求文档是否完善,是否正确,是否代表了用户真正的需求。
如果对事负责,你会按部就班的执行测试用例,每天完成多少条测试用例,每周提报多少个有效的bug;
如果对人负责,你会在测试中扮演产品的用户角色,从用户出发设计不同的用户场景进行测试。
子曰:君子不器,出自《论语·为政》,意思是君子心怀天下,不像器具那样,作用仅仅限于某一方面。人一旦成为器物就会很脆弱,因为器物是有形的,有形的东西用途就是固定的,一旦情况发生变化,这种器物没用了,就会被抛弃。因此,人要具备反脆弱的能力,就不能让自己局限于只能做一种事。
在传统的瀑布式软件开发模式中,开发和测试被分成两个不同的阶段,开发人员和测试人员的职责泾渭分明,做开发的只管编写代码,做测试的只管找bug。因此,传统模式下的研发团队中,既有专门的开发部门,也有专门的测试部门。在这样的体制下,软件测试被当成一项职业,一个社会分工。但开发和测试好歹还在一个研发团队里,负责需求的产品市场部门往往独立在研发团队之外,产品部门、开发部门和测试部门之间都有厚厚的墙,需求从墙外扔过来,产品从墙内扔出去。产品经理、开发人员、测试人员、项目经理这些角色都被禁锢在各自的系统里,都成为了工具人,互相也不了解各自的业务领域。
敏捷开发模式让这个情况开始转变,打破了开发、测试和产品之间的墙,倡导这三者之间的彻底融合,大家组成一个全职能的敏捷团队,软件测试不再只是测试人员的责任,开发人员也要做测试,测试人员也要参与需求分析,产品负责人也要参与软件测试特别是验收测试。可以说,在敏捷模式中,软件测试不再是一项职业,而变成一个团队中的角色。显然,这对人的要求更高,但也有助于掀翻软件测试人员职业发展的天花板,充分调动和发挥团队中每个个体的潜能。
我们是否常常困在测试流程里?
从上个世纪后期到现在,软件测试经过几十年的发展,目前已经形成了完整的测试流程和体系。一开始没有流程的时候,大家都是摸索着前进,逐渐了形成了一套流程,又变得越来越重,传统的瀑布开发模式下的测试流程尤其如此,在此基础上,又发展出认证体系,比如TMMi认证。很多企业为了业绩和资质,全力以赴只为拿到认证。那么,我们到底是对测试流程负责,还是对流程中的自己负责?
流程中必然包括针对软件测试的绩效系统,测试人员被要求一天执行多少条测试用例,一周提报多少个有效的bug。一套绩效体系被建立起来,这和要求外卖小哥多少分钟送达外卖很有几分相似。每个测试人员被困在绩效系统里,那么,他们是对绩效指标负责,还是对用户负责?一切的系统对我们来说,都只是工具,绩效看板让我们能够清楚的了解进度,计划和调整工作,但我们不是对绩效负责,而是对产品负责。
总结
推荐阅读:
测试故事续:传统到敏捷,破茧欲成蝶... 实现自动化测试,首先不是一个技术问题 老话题新解说:究竟什么是敏捷测试? 读了这篇文章,受益终身:敏捷测试思维模式
相关资源