7.7 KiB
Brian Okken 对 Python 社区的采访
本周,我很荣幸采访到布莱恩·奥肯。Brian 最出名的可能是《用 pytest 测试 Python》的作者,以及两个播客的主持人。请继续阅读,了解更多关于这个声音背后的人,他在波特兰的新聚会,以及他对软件测试新手的建议。
瑞奇: 让我们从我问所有客人的相同问题开始。你是怎么进入编程的?你是什么时候开始用 Python 的?
大概在我 14 岁的时候,父母给了我一台 TRS-80 作为礼物。我并没有真正学会在那上面编码,但我确实从杂志背面输入了小应用和游戏的基本程序列表。然后我在高中上了一个基础课,除此之外就没怎么上了。我不知道你能以此为职业。
直到大学 2 到 3 年后,当我从数学和美术转向计算机科学时,我才重新开始编程。到我的学士和硕士学位结束时,我已经使用了 Scheme、Perl、Tcl、C、C++和 ksh,都是在计算机科学领域。然后,我加入了一家制造电子测试系统和仪器的测试和测量公司。
在 21 世纪初,我们的团队引入了一个基于 Python 的测试框架。尽管我开发的是嵌入式 C++代码,但这些年来,我使用 Python 来驱动系统测试的次数越来越多。自从我在 2012 年和 2015 年开始写博客和播客以来,我已经扩大了对 Python 的使用,无论是在项目内部还是在工作中,以至于现在它是我花费大部分时间的地方。
是什么吸引你将软件测试作为一种职业?你最喜欢它的什么?
布莱恩:我有点喜欢这个问题,但同时又有些畏缩。我从来没有以“软件测试”为职业。不过,我想这是我经常做的事情。
成功、有效、高效的软件开发包括软件测试。我们依靠坚实、可靠、彻底而快速的测试套件,为 CI/CD 管道中的合并开绿灯。我们越来越依赖自动化测试的质量来保证我们软件的质量。这使我们能够更快地开发,更快地发货,更快地迭代,更快地转向,更快地犯错误并从中学习,等等。
然而,很少有开发人员知道如何高效且有效地编写自动化测试,交付我们赋予自动化测试套件的所有责任。许多人被告知(或相信)他们需要编写单元测试,却不知道这意味着什么。大多数人在理论上相信测试金字塔,但并不真正使用它,也不知道它意味着什么。所以,我的工作逐渐转向敲鼓吹响号角站在讲台上,为自动化测试唱赞歌,并试图教人们如何去做。
我喜欢从一些代码的第一次实现,即第一份草案中了解问题。我真的很喜欢写第二稿、第三稿等等。我喜欢修补软件项目。我喜欢撕掉丑陋的部分,努力让它变得可读,或者至少不那么丑陋。为了做到这一点,我需要依靠测试来告诉我是否做错了什么。
这是它的核心。我想玩软件,所以我想花尽可能少的时间写测试、调试和分类问题。这样,我可以花尽可能多的时间写新东西和重构旧东西。我想开发自己引以为豪的软件。自动化软件测试允许这样做。我不知道还有其他方法。这是我从测试中最享受的。
对于我们刚接触测试(或者编程)的读者,你会给他们什么建议?
布莱恩不要把测试拖到最后。你不必先做。你不必做测试驱动的开发。但也不要做到最后。在构建代码的同时构建测试,并积累知识。
您的自动化测试应该允许您更快地开发,因为您不必返回并手动检查所有曾经工作的东西。如果感觉添加自动化测试增加了您的工作量,那么可能会发生一些事情。也许你只是新手,学习一项新技能需要时间。您可能编写了太多的测试。在更高的层次,或更大的块,或参数化,或以上所有的测试可能会使你的测试写作时间更有效率。
测试并不容易。但也不复杂。给自己时间学习。测试让你了解你的软件。学习将帮助你开发更好的软件。这种学习是有价值的,所以在愿意把这种学习给别人的时候要非常小心。让工程师开发他们自己的测试的团队将会比把测试扔给独立团队的团队培养出更好的工程师。
我想这不仅仅是一点建议。:)
如果你能预测未来,你认为我们未来测试软件的最大挑战是什么?
布莱恩:除非现在有所改变,否则未来将会面临和我们现在一样的挑战。教编程的人并没有教测试与开发齐头并进。与电气工程相比。获得学士或硕士学位的电子工程专业毕业生将花费大量时间使用示波器、逻辑分析仪、频谱分析仪、频率计数器、功率计和其他设备,以验证他们的电路和系统是否按预期工作。
然而对于计算机科学来说,我们根本没有花太多时间来确保毕业生知道如何验证他们开发的软件。互联网是一堆相互矛盾的信息。测试被如此误解真的不奇怪。我正试图在它上面留下凹痕。但实际上,最大的挑战是教育和反对旧的假设。
瑞奇: 如果我没有提到你主持的播客(测试和编码)和联合主持的播客( Python Bytes ),那我就失职了。有没有从播客中吸取的经验教训转移到你的代码中?它有没有以任何方式帮助你提高你的编程水平?
布莱恩:有这么多课!但是我认为我学到的最重要的事情是发展倾听技巧和经常练习的重要性。提问是一种很好的学习方法,但只有当你让自己听并听到答案时,它才会起作用。在编辑过程中,我不得不删除剧集中的后续问题,因为很明显我没有真正倾听受访者已经告诉我的内容。
仔细倾听比我们想象的要难,而且如此强大。成为一个更好的倾听者肯定会延续到我生活的所有其他部分,包括管理、编程、测试,甚至家庭。
最后但同样重要的是,当你不写代码的时候,你在业余时间还会做些什么?你还有什么其他的爱好和兴趣?你想插什么?
布莱恩:我最喜欢和我的妻子和孩子在一起。我的妻子和我一直是美丽的古董和古董物品的收藏家,我们试图建立一个充满折衷主义和戏剧元素的家。我们把我们的生活空间当作一个巨大的阴影盒艺术装置。最近,这种兴趣转移到了零售领域,我们通过当地的古董商场进行销售。随意在 Instagram 上看照片,我们在那里 FrivolityPDX 。
我刚刚和我的 Python Bytes 联合主持人 Michael Kennedy 为西波特兰开了 Python PDX 西聚会。我还写了一本书。您不仅可以很好地学习使用 pytest,还可以在一本短到可以在一个周末阅读的书中获得很多测试策略建议。用 pytest 进行 Python 测试可以在务实或者亚马逊上找到。还有请听测试&代码。测试不仅仅是测试,而是开发。播客也是如此。这就是为什么名称中有一个“&代码”部分。:)
谢谢你,布莱恩,参加我的面试!有你在采访麦克风的另一边真好(可以这么说)。
一如既往,如果你想让我在未来采访某人,请在下面的评论中联系我,或者在 Twitter 上给我发消息。
