所有优秀的开发人员都能够成为优秀的测试人员吗?[2] 软件测试
加速学习
正如特性和产品无法单独工作一样,它们也无法保持一成不变。产品和技术以比以前任何时候都快的速度向前发展。优秀的测试人员将不断地学习,更重要的是,需要快速地学习。SVT 测试人员的学习环境非常具有挑战性。通常在该特性尚处于设计阶段时,没有可用的文档,代码库可能很不稳定,但是 SVT 测试人员必须对其进行研究。当他们开始真正理解该特性时,发布日期已迫在眉睫。所以,许多 SVT 测试人员根据经验、通过反复试验来了解相关的特性。尽管这通常是一种有效的学习方式,但是对于测试人员来说,仅仅依靠这种单一的学习机制还是不够的,因为这样难以分辨特性的行为是来自于设计还是由错误产生的。这还隐含着另外一个危险,是否将来自开发人员的所有信息都认为是正确无误的,对于这一点,我更倾向于作一名学生。
一种更好的学习方法是从该特性打算解决的问题入手,无论它是业务问题或是技术问题,然后了解该特性如何解决问题的关键思想。特性的功能表现了这些关键思想的具体形式。换句话说,优秀的 SVT 测试人员将用更多的时间来研究问题,而不是解决方案。测试是一种度量用该特性作为问题解决方案的能力的方法。
开发测试场景
SVT 测试人员开发出好的测试场景,以便高效地演习该特性,这需要全面地了解特性及其相关的特性、以及它打算解决的问题。大多数情况下,测试场景无法按照最初的预期工作。这正是测试的目的,即找出具体的问题。优秀的 SVT 测试人员能够分析系统中每个组件所扮演的角色、确定问题、找出系统中的瓶颈、收集相关的证据以证实他们的预测。如果系统的行为继续与预期相反,测试人员可以重新设计测试方案或对该特性的设计提出质疑。总之,优秀的 SVT 测试人员同时也是优秀的系统分析师。例如,我们的一个测试应用程序着重对 J2EE 功能(如 EJB 组件、Web 服务,等等)进行测试。然而,该系统在数据访问逻辑中存在瓶颈,所以当 CPU 使用率较高时,这个测试场景就成了压力测试,尽管压力特性并不是这项测试的任务。
权衡风险和实用性
所有测试人员常常面对的另一个挑战是实用性和优先顺序设置。通常,几乎不可能测试“所有情况”。可以进行测试的整个范围通常太大,难以在给定的时间内完成测试工作,当多个特性组合在一起时测试的范围将变得更大,其排列组合呈指数上升。对于中间件产品,如 WebSphere Application Server,您可以在其基础上构建各种应用程序。应用程序的设计方式是无限的。因此,问题变成了如何对测试场景进行优先顺序设置,以及多少测试工作能够实现成本和效益之间的最优化。这仍然取决于客户价值、技术采用周期和该特性打算解决的问题。然而,优先顺序可能被取消,重要的测试场景可能缺失,所以始终存在着一定的不确定性,但是优秀的 SVT 测试人员将注意到危险的存在、积极地确定相关的危险、并根据进展的情况对它们进行管理。在产品发布之前,他们记录下假设和遗漏之处,并在发布之后,根据客户反馈信息进行确认和修正。通过使用经过证实的 SVT 方法学中的检查、平衡和预防措施,最终将弥补这种内在的不确定性。
测试人员应该是程序员
我坚信,优秀的 SVT 测试人员应该是优秀的程序员,并且我这样认为是出于下面几个原因:
◆除非使用某种技术,否则无法完整地理解它。
◆如果没有基本编程技能,测试人员无法进行研究、调试、并逐步确定问题的根本原因,而这将帮助开发人员更好地解决问题。
◆测试人员需要具有足够的编程技能,以便与开发人员进行有效交流,并且可能更重要的是,赢得开发团体的尊重。
根据我的经验,对于那些不具备很好的编程技能的测试人员,他们的测试效率比较低,并且他们的意见也常常被开发人员忽视,而对于那些具有很好的编程技能的测试人员,他们可以更快地解决问题,并且他们的反馈信息也得到更高的重视。
文章来源于领测软件测试网 https://www.ltesting.net/