一个软件测试工程师的成长日记(连载一)

发表于:2013-4-28 11:17

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:《从菜鸟到测试架构师    来源:51Testing软件测试网采编

  因为时间周期缩短,和传统瀑布模式相比,迭代开发的进度会紧凑很多。项目组必须定期开会确保项目如期进行。项目的周期称为冲刺(Sprint),每个Sprint通常持续2~6周时间。在Sprint开始之前,项目组会进行Sprint计划会议,安排当前开发周期的任务;而在Sprint结束时,项目组举行Sprint评审会议,对这个周期的交付件进行评审核实;评审会议结束后,项目组还需要进行简明扼要的Sprint回顾会议,回顾这个开发周期中做得好的或需要提高的方面,以便在下一周期提高开发效率。

  在每个Sprint中,为了确保开发进度,项目组还需要举行周期的会议(通常是每天),确定各个小组成员更新已经完成的任务、即将开始的任务及使进度受阻的问题,并通过讨论得出解决问题的方案。这种周期的会议叫做每日站立会议(Daily Scrum Meeting),由Scrum Master主持。

  小艾最讨厌开会了,他认为开会浪费时间却常常没什么有效的结果。但凯文告诉他,每日站立会议有个重要原则,为了避免浪费时间,每个成员的汇报时间必须严格限制,会议的持续时间只能在15到20分钟。更细节的问题都放在会后讨论。这样的安排优势是明显的,既能让所有成员了解项目进度,又不耽误所有人的时间。

  听完凯文的介绍,小艾对敏捷开发条件下的项目运作有了最基本的了解。对于敏捷开发范畴而言,这仅仅是冰山的一角。凯文还列举了许多开发的方法,包括测试驱动开发(Test Driven Development)、极限编程(Extreme Programming)、开发统一过程(Open Unified Process)、结对开发(Pair Development)等。不同的项目根据实际情况会使用不同的具体开发方式。然而,有两样东西是所有这些方法的基础--计划和流程。

  计划定义的是做什么(What)和什么时候做(When)。在项目或迭代的初期,项目负责人要根据需求定义项目的计划,计划的内容包括要执行的任务、任务依赖条件、负责人选、执行任务的时间等。对于测试而言,测试计划的制订非常重要。测试计划详细描述了测试的环境、场景、执行要点、依赖等内容。项目执行完全根据计划实施,因此,好的计划是项目成功的基础。

  流程是项目成功的保障,它定义了怎么做(How)。无论是开发还是测试,每个步骤都有标准的流程。在软件测试中,测试环境的准备有标准流程,没有按标准流程安装的环境就可能有潜在的错误;执行测试的步骤有标准控制流程,没有按流程执行的测试结果是无效的。完全按照标准流程完成的测试,如果存在失败的测试用例,我们就可以很直接地从产品本身找原因,而不用怀疑是错误的执行导致了失败。流程控制每个步骤的正确完成,有了流程控制,软件的质量才得以保证。

  作为菜鸟的小艾对测试工程师的基本功掌握得差不多了,他明白,这些基本功需要在实践锻炼中不断加深理解,才能得心应手,融会贯通。

  1.1.3  培养专业技能

  这天中午,小艾经过凯文的座位,发现他正在专心致志地阅读一本技术书籍。小艾好奇地问凯文,究竟是什么书那么有趣。面对小艾的一脸好奇,凯文细致地解释自己学习的内容:“我在学习脚本语言编程技术。作为测试工程师,开发技术对我们而言也同样重要。为了更好地进行测试,得学点脚本编程知识。”

  “测试工程师也必须掌握开发技术吗?还有哪些技能是测试工程师应该掌握的呢?”小艾有些疑惑。

  “的确,我们的工作应该专注在测试上,但这并不代表我们不需要掌握开发技术。恰恰相反,开发技术是测试工程师应该掌握的基本专业技能之一。先给你解释什么是专业技能,再介绍我们应该掌握哪些专业技能吧。”

  在软件开发团队中,作为软件测试工程师,为了完成测试任务,有一些技能是必须掌握的,我们把这部分技能定位为专业技能。在开发团队里的“专业”,与高等院校中的“专业”不同。开发团队的专业,强调的是长时期从事的行为作业规范,规范保证了产品的质量。

  一名专业的测试工程师,应该把开发技能作为其技能体系的基础。测试人员虽然不需要编写功能代码,但是测试人员在测试过程中需要完成测试代码的编写。掌握开发技能,有利于理解功能实现的方法和逻辑。我们知道,测试就像一把手术刀,务求一击即中要害,不让存在问题的地方漏网。测试工程师掌握了开发方法,基于对开发的了解,更容易设计出有效的测试场景和用例。例如,使用Java EE开发的应用程序,程序的实现逻辑很有可能影响垃圾回收的效率,那么设计测试用例时,应当重点测试功能模块对垃圾回收的影响。又如,使用JavaScript实现的前端页面,在不同的浏览器中的显示状况可能有明显差异,有些脚本是针对特定的浏览器开发的。了解JavaScript的这种特性及开发的逻辑后,设计测试用例时就应当在不同浏览器中针对可能有问题的脚本进行测试。测试工程师应该掌握数据结构和算法设计、设计模式和体系结构,了解不同的开发语言和平台的差异。

  开发技能不仅包括设计和实现功能的技术,还包括发布和部署代码、配置环境的技术。软件产品的测试通常具有严格的版本限制,小版本的差异也完全有可能得出不一样的测试结果。测试人员了解代码的发布和部署,能够评估新代码的影响范围,并根据评估适当地调整测试的内容。当然,掌握代码发布和部署以后,至少不会糊里糊涂地就开始测试,而能够在确认代码的发布和版本都没有问题之后再行动。

  开发团队使用了版本控制工具来管理程序的版本,了解新代码如何进入到软件版本中,对测试人员而言也很有用。在对原始代码进行修改前,程序员或测试人员需要创建一个“缺陷”,“缺陷”意味着系统有需要更新的地方。缺陷创建后,系统会生成唯一的缺陷号码,用于跟踪代码的更新状态。无论是因为加入新功能还是测试失败而创建的缺陷,都通过统一的平台进行管理。有了这种版本控制方法,对代码的任何改动都记录在案,任何引起新问题的线索都得以保留,系统也可以在需要时回滚到任何较早的状态。了解“缺陷”模式的运作,有助于测试人员执行测试或回归,验证缺陷是否修复。

  鉴于测试工程师的专职工作是完成软件测试,因此测试专业技能是测试工程师技能体系的核心。

  小知识:软件测试,从宏观角度而言,是指针对被测试的产品或服务进行的一系列关于软件质量的调查,软件测试结果对软件的拥有者(Product Owner)负责。软件测试还从一种独立的视角为业务运作提供客观评估,这种评估包括软件的质量达标程度及因为某种相应的实现方式而存在的风险等。

54/5<12345>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • 黑鱼白
    2013-7-01 14:48:06

    如果是一个普通院校的大专生,结果会是这样嘛?怀疑甚至连面试的机会都没有吧

  • yanying0203
    2013-7-01 10:41:59

    向往这样的测试,毕业就能有这么好的系统的学习,难得

  • zww820
    2013-5-02 09:21:17

    写得很好。

  • lyj0418
    2013-4-28 11:26:07

    不错

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号