测试人员的 SOLID 原则:单一责任原则

2024-09-01   出处: thinkingtester  作/译者:kristinjackvony / Mint

多年来一直关注我博客的人可能已经发现了,每当我想学习一些东西时,我会挑战自己写一篇关于它的博客文章。在2020年,我每个月读一本关于软件测试的书,并写一篇书评。在2023年,我每个月都了解到一个逻辑谬误,并写一篇文章来解释它(这最终变成了我的书《测试者的逻辑谬误》)。

在接下来的五个月里,我将接受一个新的挑战:学习如何编写高质量代码的SOLID原则。多年来,我一直想了解这些,但我一直对术语感到恐惧(“Liskov代入”听起来太复杂了!)。但是我将尽我所能去学习这些原则,并用对软件测试人员有用的例子来解释它们。让我们从单一职责原则开始,了解SOLID中的“S”。

单一责任原则指的是一个类应该只有一个职责。让我们来看一下这个Login类:

class Login {
     constructor() {}
     login(username, password) {
          driver.findElement(By.id('username'))
               .sendKeys(username)
          driver.findElement(By.id('password'))
               .sendKeys(password)
          driver.findElement(By.id('submit')).click()
     }

     navigate(url) {
          driver.get(url)
     }
}

登录类有两个方法:登录和导航。对于编写自动化测试的人来说,这似乎是有道理的,因为登录和导航通常都出现在测试的开始部分。但实际上,登录和导航是两个完全不同的东西。

让我们想象一下,现在应用程序的用户可以选择多因素身份验证。测试自动化工程师现在想要添加一个新的登录方法,其中包括多因素身份验证。但是这会对导航方法产生什么影响呢?可能这根本没有任何影响,但如果需要向类中添加新的包导入,就有可能会破坏导航方法。

任何一个类的变化,都有可能破坏现有的功能。除了检查每个登录的测试之外,测试自动化工程师还需要检查每个有导航的测试。

这就是为什么最好只给类一个职责。应该把导航方法移到它自己的类中。这样当添加新的登录方法时,导航方法将完全不受影响。而且还可以在不影响登录方法的情况下,向导航类添加新的导航方法!


声明:本文为本站编辑转载,文章版权归原作者所有。文章内容为作者个人观点,本站只提供转载参考(依行业惯例严格标明出处和作译者),目的在于传递更多专业信息,普惠测试相关从业者,开源分享,推动行业交流和进步。 如涉及作品内容、版权和其它问题,请原作者及时与本站联系(QQ:1017718740),我们将第一时间进行处理。本站拥有对此声明的最终解释权!欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,与我们的编辑和其他窝友交流。
128° /1285 人阅读/0 条评论 发表评论

登录 后发表评论