代码审查如何保证软件质量

研究使用Selenium 进行自动化测试的代码检查最佳实践和代码检查清单。java

在软件行业,您可能常常会听到术语“代码审查”。可是,代码审查的概念常常被误解。人们一般认为它在软件开发生命周期中被忽视执行测试应足以知足验证过程。所以,他们倾向于对代码审查过程视而不见。可是,忽略代码审查过程可能会反弹并产生重大后果。咱们也有一个误解,认为代码审查过程是开发团队的责任。它不是!代码审查是一个过程,不只应包括开发人员,还应包括质量保证人员和产品经理。本文是个人尝试,旨在帮助您意识到代码审查的重要性以及您应该如何参加质量检查。程序员

什么是代码审查及其目标?

代码审查是一种将源代码分解成小段的作法,由团队的主管或前辈检查这些源代码,而后在测试以前进行检查。这是敏捷方法中主要遵循的一个过程。面试

代码审查的主要目的是发现错误,及时发现错误并确保代码遵循标准作法。能够将其称为双向交流,在这种状况下,编码人员和检查代码的人员均可以互相学习,并消除可能会影响产品的任何潜在错误。编程

在敏捷环境中工做,您可能常常低估了代码审查过程的重要性。您可能会认为代码审查会很耗时,尤为是在期限紧迫的状况下。可是,这变得愈来愈重要。您越早检查代码并消除任何阻塞或错误的可能性,之后就能够按照发布过程越早交付产品。在发布周期的后期发现错误或在将其移植到生产中后,发现它们更昂贵,更耗时。这就是为何组织如今沿用Shift-Left测试的现代方法,将您从客户需求收集阶段开始的测试归入其中的缘由。数组

为何须要进行代码审查?

若是您认为只要进行测试就不须要进行代码审查,那么如下提到的好处可能会使您的想法转向不一样的想法。浏览器

  • 早期错误检测:在开发阶段的早期阶段检测到错误时,能够减小测试阶段的大量时间。整个过程变得很便宜。尽管现在,自动化测试减小了测试工做量和花费的时间,可是,没有比检测和纠正其余人所犯错误的人性更好的天赋了。
  • 指导低年级学生:当新生参加项目时,高年级学生可能没有太多时间来指导或指导大三学生进行编码实践或培训他们如何工做。在这种状况下,对于高级开发人员而言,理想的解决方案是花费至少20-30分钟的时间来审查初级用户编写的代码。按期的反馈将使新生可以发展本身的编码技能。
  • 敏捷时代:现在,大多数组织都遵循敏捷方法论,要求及时交付高质量的工做。代码审查将使组织可以开发出完好陷且遵循标准协议进行开发的高质量原型。
  • 团队凝聚力:频繁的讨论讨论使团队更加紧密,使他们意识到彼此的长处和短处,并避免他们陷入孤立的环境中。
  • 符合标准:在敏捷时代,客户常常要求咱们遵照特定的编码标准。可是,较新的开发人员一般不了解行业标准编码。常常检查有助于确保代码遵照利益相关者设定的规则和标准。

代码审查和测试能够互相替代吗?

对于初学者来讲,代码复查和测试都是包含在软件开发生命周期中的最佳实践。可是,二者在其各自的方式上都是独特的,不能混淆。认为您不须要代码审查是错误的,由于您已经在SDLC中进行了测试,反之亦然。安全

代码审查涉及检查代码,该检查可能包括也可能不包括检查错误。它涉及检查代码风格是否符合全部策略,是否存在违反安全性的问题,最重要的是,是否易于理解代码。目的是检查代码是否简单,是否遵循全部策略和标准,最重要的是,是否达到目的。网络

另外一方面,测试具备几个类别。测试的主要目的不是检查代码,而是检查应用程序是否正常运行。测试包括检测应用程序不一样层中是否存在任何错误,应用程序是否知足涉众的全部要求并确保将检测到的问题传达给相关团队。架构

假设地,代码审查能够代替测试。在很小的应用程序中,若是有多个审阅者仔细地检查代码,他们可能会肯定执行单元测试时可能引发缺陷的部分。仅假设,不现实。框架

手动或自动化测试一般采用固定方法来检查应用程序流,并肯定是否有任何异常的行为。

可是,代码审查须要人工干预。人类的大脑很复杂,可能会想到编写测试脚本时可能还没有预编程的方案。有经验的代码审查员能够在编写有效测试用例的过程当中,在测试人员可能没有想到的特定状况下,检测出可能致使破坏的任何错误代码行。

可是,仅当应用程序很是小且可能仅包含一百行代码时,代码审查才能代替测试。在大型应用程序的状况下,范围会变大,不管有多少审阅者一块儿检查代码,集成代码时,应用程序均可能会形成损坏。这就是测试起做用的地方。

可是,测试不能以假设或现实的方式代替代码审查。尽管测试能够检测到全部错误并由开发人员修复它们,但让咱们讨论一个方案,该方案将清楚说明为何它不能代替代码审查。

我将分享个人我的经验。咱们的团队正在开发大型动态Web应用程序。通过最后的测试阶段,整个应用程序能够知足每一个用户的需求。可是,存在一个问题–加载时间。即便以最快的网络链接速度,该应用程序也须要4-5秒钟来加载。经过代码审查阶段,咱们发现CSS和脚本很是复杂,能够将它们最小化几百行。这样作,咱们将加载时间减小到2秒。所以,能够得出结论,实际上,代码审查和测试都是软件开发阶段不可或缺的一部分,而且永远不可能彻底替代。

如何做为QA参加代码审查?

代码审查被认为是静态测试的一部分,该活动一般由质量分析人员执行,以在测试阶段开始以前发现是否能够较早发现任何错误。若是测试团队积极参与代码审查,则能够节省大量时间。

您可能想知道当您不参加测试时如何开始进行代码审查,而没有任何开发经验。可是事实是,代码审查只须要您的观察技能,而不须要您的编码能力。对于初学者,您能够从自动化脚本开始。尝试查找可能致使错误测试顺序的小错误。每当有时间时,请并行浏览应用程序的存储库,并尝试了解开发人员在该处所作的事情。

另外,若是您团队中的某人正在检查代码,请与他们讨论或坐在一块儿,并尝试了解他们的工做方式。检查他们是否在看

  • 记录易于理解的消息
  • 语法错误 -拼写错误致使的错误
  • 命名约定 最初,当测试人员有机会进行代码审查时,与经验丰富的人员进行配对会使任务变得容易得多。尽管最初的众多代码行毫无心义,但与时俱进使质量分析人员可以找到一种模式,而后他们逐渐习惯于代码库,最后只有经过查看应用程序的特定部分,他们才有机会能够清楚说明在该部分中实现了哪些业务逻辑。

此外,一旦开发团队发现QA团队正在关注代码,他们将很乐意向他们解释代码的工做原理,从而提升质量分析人员的编程知识,并改善团队之间的沟通。经过代码审查的实践,测试人员将知道在代码的哪一个部分中定义了项目的哪些功能,从而提升了总体智慧和团队合做精神。

最后,记住一件事。您无需成为执行代码审查会议的专家编码人员。具备基本编码知识的任何人均可以查看代码。您只须要查看更改并询问作什么,为何以及如何完成某件事。从较小的更改开始,并详细了解它们以及任何有任何差别的地方,对其进行评论,并请编码人员清除您的疑问。而且,若是您要管理整个项目,请确保将代码审查和测试做为必不可少的阶段包括在任何软件开发生命周期中都要执行。这将确保交付高质量的产品,并保持组织的声誉。

执行代码审查的方法

让咱们开始阅读代码。根据您的应用程序的大小,您能够执行两种类型的代码审查。

  • 正式代码审查:这是一个详细的过程,须要您与多个参与者协做并在多个阶段中工做。这是团队参加会议并逐行检查代码的传统过程,传统上是使用打印副本。进行了完全检查,发现该方法可有效发现缺陷。
  • 轻量级代码审查:此过程也很是有效,与正式代码审查相比,所需工做更少。做为正常开发程序的一部分,执行此审查有4种方法。
  1. 越过肩膀:在这里,开发人员查看其余人的代码,然后者则浏览前者的代码,并解释其中的操做。
  2. 传递电子邮件:不管什么时候签到,管理源代码的应用程序都会自动触发一封邮件给审阅者。
  3. 结对编程:2个编码器在同一工做站上开发代码,同时不断回顾彼此的工做。
  4. 工具辅助检查:现在提供了专用的工具,用于代码检查和测试。对等方使用这些工具来检查代码并根据须要进行注释。

Selenium自动化测试的代码审查清单

尽管有一些最佳实践,咱们将在后面进行讨论,但这将致使完好陷的代码审查,可是,若是您正在使用Selenium WebDriver进行自动化测试以对网站进行跨浏览器测试,则在审查代码时须要检查某些因素。

  • 尽量使用CSS定位器代替Xpath。
  • 必须将页面对象用于全部用做选择器的DOM对象。
  • 避免使用复杂的数据管理结构。
  • 为了处理等待问题,测试应主要取决于框架。
  • 对于数据搜索功能,使用最少的文本。
  • 长元素定位器一般很脆弱。避免使用它们,由于绑定它们的布局会发生变化。
  • 页面对象应该是惟一且健壮的。

代码审查–遵循的最佳作法

就像编码和测试同样,您还须要牢记一些代码审查最佳实践。让咱们详细讨论它们。

  • 知道您要寻找的内容:在检查以前设置目标。准备一个清单,其中可能包括编码样式,结构,逻辑的复杂性,可读性。简而言之,包括那些在自动化测试期间没法检查且须要人工干预的项目。提出诸如“我是否知道此代码在作什么?”或“此代码是否符合客户指定的编码标准?”之类的问题,这被认为是审查最佳实践的最佳代码,您能够轻松地准备要检查的项目。
  • 在审阅以前进行构建和测试:在当前持续集成和持续交付的时代,理想的方法是在手动审阅代码以前构建和测试代码。这样能够确保代码稳定并节省大量时间。成功构建以后,当代码经过全部自动化测试时,最好的作法是进行代码审查,并确保将无错误的代码推送到开发人员的代码行中。
  • 不要花太长时间进行审阅:做为代码审阅最佳实践的一部分,您须要确保您花费的时间不会超过平均时间。最好短暂休息一下代码,以确保您的大脑得到所需的时间间隔,而且能够从新开始,这会更好。常常检查代码也将帮助您考虑新场景并提升代码质量。
  • 您的评论毫不能伤害:在评论中要有建设性,而不是批评。提出问题而不是发表声明。此外,还要称赞开发人员的工做。您以正确的语气提供的反馈意见必定不会伤害他们,而应该激励他们改正错误,并确保再也不发生错误。
  • 传达指望和目标:明确审核的目的和审核者的指望。若是审阅者在您的指导下工做,那么做为代码审阅最佳实践的一部分,建议您为他们提供一个清单,以帮助他们检查强制性内容并确保以一致的方式审阅整个团队的代码。
  • 包括您的整个团队:不管您的程序员有多资深或经验。每一个人都必须检查代码以及对其代码进行检查。当他们知道要检查其代码时,性能水平将相对提升。审查代码时,请尝试将架构师和开发人员包括在内。二者都将检测到不一样的问题,同时最终将影响整个应用程序的设计。
  • 在任何须要的地方自动化:应该手动检查代码中的某些内容。还有其余一些事情,可使用适当的工具进行检查。在您不须要手动干预的地方实现自动化。诸如代码分析器之类的工具会将代码与编码规则进行比较,并找出潜在的问题。
  • 考虑代码检查以检查跨浏览器的兼容性:咱们都知道,当特定的浏览器不支持特定的CSS样式或JS功能时,就会发生Javascript,HTML / CSS的浏览器兼容性问题。
  • 一旦咱们在某个应用程序上工做,该应用程序只能在Internet Explorer的较早版本中完美运行,所以某些样式的使用受到了限制,该浏览器因与全部最新Web技术不兼容而给全世界的开发人员带来了痛苦。
  • 通过数周的编码,进行了一次审查会议,结果发现,在编写CSS时,在代码的某些部分,咱们错过了浏览器特定的供应商。当即进行更正,而后应用程序进入测试阶段。不用说,它完美地经过了浏览器兼容性测试。若是不进行代码审查,则可能会在跨浏览器测试期间发现缺陷,从而使开发人员急于找出致使问题的缘由。
  • 培养积极的环境:从管理的角度来看,保持积极的工做文化很是重要,这是代码审查最佳实践的一部分。审查代码时,积极的环境可能很是有帮助。谁引发了错误可有可无。重要的是已捕获并修复了该错误。赞赏通信员,总的来讲,这将有助于维持产品的质量。
  • 依靠代码查看工具:代替手动检查和写下问题,使用代码查看工具能够经过启用内联注释和错误报告来节省工做量。

我但愿您如今意识到SDLC中代码审查的重要性,以及它与测试的区别。若是您是产品经理,那么对于您而言,相当重要的是将代码检查过程归入发布周期,以防万一,您能够将其归入其中。若是将其合并,则须要有效地组织带宽和资源,并确保开发人员和测试人员都积极参与。若是您是一个QA,可是惧怕介入代码审查,那么您就须要改变见解,直接进入。最后,若是您是开发人员,则必须确保引入产品经理和软件测试人员。代码审查过程,以确保透明的透明度。审核愉快!

技术类文章精选

非技术文章精选

大咖风采

长按关注

相关文章
相关标签/搜索