按此:现代工具和自动化测试在 WordPress 开发中的重要性与 Josh Pollock

已发表: 2022-05-12

欢迎来到来自 WMR 的 WordPress 社区播客 Press This。 在这里,主持人 David Vogelpohl 与来自社区的客人坐下来讨论 WordPress 开发人员面临的最大问题。 以下是原录音的抄录。

由 RedCircle 提供支持

David Vogelpohl:大家好,欢迎来到 WMR 上的 WordPress 社区播客 Press This。 这是您的主持人,David Vogelpohl,我通过我在 WP Engine 的角色来支持 WordPress 社区,我喜欢将最好的社区带给您,每周在新闻上听到这个提醒,您可以在 Twitter @wpdavidv 上找到我,或者您可以在 iTunes、iHeartRadio、Spotify 上订阅按此,或在 wmr.fm 下载最新剧集。 在这一集中,我们将讨论现代工具和自动化测试的重要性,尤其是 WordPress 开发,当然,并加入我们的对话。 我想欢迎 Josh Pollock 先生向我提问。 乔希,欢迎。

乔什·波洛克:谢谢。 谢谢你有我。 你好吗?

DV:好,好。 我很激动。 让你上节目。 我们在录音之前谈论过你是最多的,我相信所有 Pollocks 中最著名的 WordPress Pollock,对吧?

JP:与杰克逊·波洛克相比不太出名,但是是的,所以不是

DV:不像你那么有名。 所以我认为你有杰克逊在那里。

JP:对吧? 是的。 不过我是他作品的粉丝。

DV:啊,这很好学。 不过,对于那些正在听的人,乔希今天要谈一谈。 Josh 来自几个不同的领域,但特别专注于插入式机器。 我们将对此进行一些讨论,但也会围绕他关于为什么现代开发工具和自动化测试对 WordPress 开发非常重要的想法进行讨论。 因此,如果您是一名牛仔或女牛仔编码员,Josh 将稍微谈谈为什么另一条路径可能会更好。 他最喜欢的一些工具以及如何使用您自己的 WordPress 开发项目进行自动化测试。 在我们开始之前,我想提醒大家,我知道你们可能在之前的剧集中听说过这个。 2022 年 4 月 25 日,WP Engine 将举行我们的虚拟解码会议。 喜欢去看看。 了解有关各种主题的 WordPress 开发的更多信息。 您可以访问 WP engine.com 上的活动 forward slash decode dash 2022 好的,乔希,我要问你我问所有客人的第一个问题。 你能简单地告诉我你的 WordPress 起源故事吗? 您第一次使用 WordPress 是什么时候?

JP:是的,我可能是第一次使用 WordPress。 假设 2011 年 2012 年写博客,比如在 wordpress.com 上,然后我喜欢用 Google 搜索如何做某事,他们就像将一些东西粘贴到函数 dot php 中。 所以我不得不喜欢迁移到自托管的 WordPress,而且我认为我真的没有在那个博客上做过很多工作。 我真的被代码部分分心了。 这让我进入了 WordPress 社区,并像主题审查团队一样志愿服务,然后我将在 pods 工作,这是一个类似于自定义字段和自定义帖子类型的插件,并且有一个 UI,我得到了一个在那里担任支持人员。 Scott Kingsley 卡,那里的主要开发人员和其他所有人都非常支持并帮助我学习开发,我从那里真正进入了插件开发。 这很酷。

DV:你是什么时候第一次被你所说的代码分心的,2011 年或 12 年是你尝试创建博客的时候? 是不久之后还是?

JP:是的,是的,所以我一直使用 WordPress 2.7,我认为这是我工作的第一个版本。 我的意思是,我认为我使用的第一个版本,我认为我贡献的第一个版本就像三个点。

DV:所以是的,2011 年这将是在自定义帖子类型之后。 因此,在 WordPress 中将是一个激动人心的时刻。 我确实认为我已经完成了 237 个奇怪的剧集。 你是第一个 wordpress.com 起源故事。 所以我认为你可能会和我这些年来采访过的所有人都有区别,但是你从那里开始的感觉很酷。 在博客圈。 然后很快就进入了开发方面,这真的很有趣。 那年早些时候我提到了插件机,你能告诉我们插件机做什么以及你在那里做什么吗?

JP:是的,所以这是我正在开发的新产品,你知道,我的意思是,这是我的,你知道,这是我的独奏。 我正在构建的东西就像我现在是一名自由开发者一样,就像故事的中间部分是我遇到了一些人,他们在一家围绕它的公司工作了一段时间,他们正在通过豆荚开发一个叫做切割表单的插件。 然后我在 WordPress 领域做了几份工作,现在我是一名自由开发者。 很多时候我都在为 WordPress 网站构建 WordPress 插件。 就像我不是你会去和喜欢的人一样,我需要为我的业务建立一个网站。 就像我会为它构建很酷的功能一样。 其他人会为我们建立一个主题或其他任何东西,并为我自己的项目,我一直挂断我如何启动这个插件? 就像我想拥有块并且我想确保我正在使用 WordPress 脚本,例如用于编译 JavaScript 代码的新工具,包括 React 代码和工作方式与 WordPress 兼容。 马上。 这是 WordPress 的标准。 这就是他喜欢分叉我一遍又一遍地工作的最后一个项目的地方。

DV:这是所有伟大软件的开始,不是吗?

JP:是的。 所以这导致了我现在所说的插件机,它是一种可以做一些事情的工具。 首先,它有助于启动插件,就像它使用依赖项中的所有正确命名约定创建您需要的所有代码一样,以执行诸如在依赖项中使用 PHP 自动加载器的 Composer 或为您的块使用 WordPress 脚本之类的事情。 所有这些不同类型的东西。 这让我有点痴迷于开发中 bug 的移动部分、自动化测试、创建正确的 zip 文件,其中包含您想要的所有正确文件,但不是您不想要的文件不想。 就像您想要安装的测试一样。 所以我正在记录机器,这是一种用于启动插件、向插件添加功能的完整工具,我需要添加一个块和数据菜单页面,然后创建可以进入 WordPress 站点的最终包版本。

DV:并提交插件开发框架。 我想如果我必须的话,就像只用几个词来形容它。 这公平吗?

JP:那太好了。 我要把它写下来。 不,不,这就是我喜欢播客的部分原因,就像你一样你曾经有一个用户界面,你可以点击像我想使用自定义帖子类型,我想使用块,然后当你在你的插件中时,你可以知道,输入快速命令,如插件机,插件, zip grants,你口袋里的一个 zip 文件。

DV:诸如此类的事情。 所以我喜欢它,当然,软件起源于需要和习惯的方式,听到插件机的起源故事很有趣,感谢你仍然坚持它,但有点出来,你重新采用本土方法,就像您从 wordpress.com 开始的旅程一样,对,就像字面上没有代码类型的网站会很快进入更高级的开发。 因此,请帮助我了解我们的听众,甚至了解当您谈论时,引用 WordPress 开发的现代工具这对您意味着什么以及为什么这很重要?

JP:是的。 因此,就我如何批准我正在接近的人而言,我是一个 WordPress 插件开发人员,你将成为 Web 应用程序开发人员,我说的是构建 WordPress 插件、自定义插件为您的网站。 这可能是一个独特的插件,它做了一些不存在的事情,你知道,它以一些独特而有趣的方式为你的业务扩展了 WooCommerce,或者人们正在开发的用于分发开源或销售的插件。 所以当你这样做时,你不知道,就像我开始构建插件时一样,你好,怀疑,它只是一个文件。 你真的不需要任何特别的东西。 但是随着它们的复杂性增加,您开始拥有自动依赖关系,您想要使用 WordPress 脚本打包器,您想要使用 WordPress 组件包,您将使用相同的输入并选择 Gutenberg 所知道的表单控件类型。 当你这样做时,你开始需要一些可以自动安装它的东西,比如 NPM 或 yarn,然后你需要一个可以自动运行构建过程的工具,以创建浏览器安全的 JavaScript、Web 脚本。 然后你开始进入我们所谓的自动化测试,我们正在编写额外的代码来运行我们的代码,以确保它以正确的方式运行。 那里有很多复杂性,我认为这很困难,因为您正在学习这些工具,并且您正在学习如何同时使用它们并同时学习两件事

DV:这很有趣,因为听到你描述它,在你谈到现代到喜欢从,安装包和处理依赖关系,然后运行你的测试套件时,对每一个项目符号都使用自动化这个词。 似乎你知道,如果你还没有完成这些工作,你必须同时了解自动化以及对你正在创建的软件所做的事情。 我可以看到这对很多人来说是一个巨大的挑战。 不过,我很好奇,比如那段旅程,也许人们如何能克服它。 我们要开始第一次休息。 我们马上回来。 是时候插播广告了。 敬请关注。 如需更多信息,请稍后按此。 大家好,欢迎回来在 W EMR 上按此 WordPress 社区播客。 我们正在与 Josh Pollack 讨论现代工具和自动化测试以及 WordPress 开发的重要性。 Josh,就在休息前,你在解释现代工具。 你有点浏览了它的关键组件列表。 在我们开始之前,您一直在强调自动化,并指出人们必须既要学习自动化方法,又要了解工具在做什么。 那对你来说是个挑战吗? 当你开始采用这种类型的开发?

JP:嗯,是的,完全是。 在我是一个书呆子喜欢的人。 我讨厌它的那一部分。 我很喜欢。 但是当我试图写一个功能时,当我的大脑处于这个空间时,我已经和一个客户谈过了,他们需要这个东西看起来像这样然后去这里。 我想喜欢编写 PHP 和 JavaScript 代码。 我不想编写自动化测试设置或配置 NPM,即使我是那些东西的书呆子。 当我在做实际工作的大脑空间时,我不想处理它。 我参与其中,所以这对我来说一直是挑战,因为我对两者都感兴趣,但就像每个人一样,很难同时做到。 所以插件机对我和我以及像我这样的其他人所做的,是我点击几个按钮,然后我把所有的零件设置都设置为自动化。 当我说自动化时,我的意思是我可以拥有一个命令和设置本地开发环境的自述文件,并允许我在浏览器中查看它并运行测试我有 GitHub 操作,每次进行更改时运行不同环境下的测试,使用不同版本的 WordPress,不同的 PHP 版本。 自动检查我的代码是否与所有这些不同的东西交叉兼容。 因为这对 WordPress 来说是一个挑战。 而我,作为一名开发人员,不必考虑那么多,因为只需单击几下按钮即可进行设置,然后您查看自述文件剪切并粘贴此命令即可完成大量工作。 这个人做了很多事情,让你明白为什么

DV:就像有很多额外的步骤,很多额外的东西让你头脑清醒。 使用一种现成的框架来拉近你的距离真是太好了。 但是,就像什么为什么一样,为什么要经历所有这些麻烦来将引用现代工具集成到您的开发过程中。

JP:所以对于某些事情,这基本上是一个要求。 就像如果你想在 WordPress 中使用 React 来实现块之类的东西,为你的插件构建一个很酷的管理页面,拥有一个前端交互元素,你将需要使用正确的 WordPress 工具以一种方式编译不会导致与 WordPress 站点中其他基于反应的组件的兼容性问题。 所以你越来越像你可能想要的那样有效的需求,你可能有一个已经存在一段时间的插件,你需要做一些改变,但你不想打破已经存在的功能。 处理这个问题的最好方法是编写自动化测试来描述它现在的工作方式,如果你做出的改变导致其中一个测试失败,停止备份,你知道,修复那个错误而不是将它发送到你的用户。 这是另一种情况,就像您一样,您需要让客户满意并拥有稳定的产品。

DV:好的,所以这并不是很有趣,因为最近在 WordPress 中对此进行了很多讨论,正如我在 WP Engine 的一位同事 Rob Stinson 指出的那样,WordPress 中的简单事情变得越来越容易,就像块编辑器和困难的事情变得越来越难,比如制作一个插件,你在那里有一种观察,你知道,一种比过去更先进的开发方法,甚至将反应很少融入使用它作为框架。 所以这确实是真的。 听起来虽然好处是你的时间,特别是像自动化测试这样的事情,因为你不得不重新编码你运送的坏了的东西,我猜你也喜欢保留你的工作,如果你是运送,或者你的客户,如果你运送,许多重大变化,并猜测这也是一种好处,就像有金钱上的好处一样。

JP:是的,就像我是那台机器上的人一样。 或者这是插件机背后的笑话。 就像我是瞬间的名字。 我不擅长一遍又一遍地做同样的事情。 完全相同的方式。 对。 这就是我们使用计算机的原因。 就像我们就像,嘿,我会告诉你如何处理他。 我们称之为代码。 然后我们只是一遍又一遍地运行它,相信计算机会做同样的事情。 一遍又一遍,以同样的方式,所以这对我来说是我不想担心如果我所做的改变发生了,所以我可以每次都以完全相同的方式手动测试它,正如我所说的那样那是人为错误,或者我只有一个运行 48 的程序 而且我认为我们使 WordPress 插件和主题开发人员更容易进行自动化测试,而无需像,哦,我很乐意,但我没有时间弄清楚如何设置它。 我越是那些对最终用户来说容易的事情越稳定,对吧? 因为我们不仅希望 UI 更易于使用或更易于学习。 我们不希望这样的人抱怨 WordPress。 你让你的网站运行,然后你更新你的插件。 对。 就像这是每个人作为用户级别都有问题的事情。 这不是我们可以直接为用户解决的问题。 这是我们必须从我们测试的方式构建 WordPress 插件的方式来解决的问题

DV:所以最后期限总是像你的期望一样。 比如你明天什么时候想要这个? 对? 我认为没有人不曾对我说过,哦,我们在六个月内需要它。 没问题,对。 每个人都想要第二天的一切。 因此,团队承受着这种压力。 我只是好奇你如何看待编写测试或测试套件,你知道,在给人们一种爬行,步行跑步,是否有一些关键领域或者你喜欢开始和喜欢,试着写你喜欢的东西感觉是一个完整的测试套件,或者您尝试在某些部分中挑选它,因为人们正在学习喜欢,您如何推荐? 像去完整的测试套件一样解决它? 摘下一大块然后这样学习? 或者你如何看待那部分?

JP:这是一个很好的问题。 我有时会与人们进行这种咨询,我喜欢查看他们的代码,而不仅仅是设置自动化测试,还喜欢与他们一起指导他们应该测试什么。 很多时候,这是阻碍人们前进的原因之一,他们对自己没有任何测试感到内疚,然后他们就无法拥有完整的测试覆盖率。 对。 我认为这是一种奇怪的处理方式,因为它就像,你还没有做任何事情。 当然,你没有事情的结果。 而且您还没有编写测试,您知道,测试但是测试很有用,即使它们没有涵盖所有内容。 我认为人们真正的焦虑是我无法获得完整的测试覆盖率。 如果我只是写几个测试。 就像,是的,但你已经离那更近了一步。 你已经开始了。 您有机会了解 Tesco 的运作方式,例如,我有一个为客户编写的插件,它添加了快捷方式。 就像这就是它所做的一切。 所以我写信给它,它有你知道的,如果你没有登录,它会向你显示关于登录的消息。所以我写了两个测试,它们都只是调用在 make 中呈现短代码的函数确保它不会引发错误。 这些是世界上最详细的测试。 但是当我在那之后第一次提交它们时,我第一次编写测试插件时,我遇到了一大堆错误,只是从运行这些测试开始,就像在生成短代码的过程中一样,我产生了大量的 PHP 错误我能够解决这些问题并让它们消失。 然后这给了我对未来的信心,如果某个短代码的三个或四个不同部分中的一个会中断。 你知道,那会通过测试。

DV:听起来你是在考虑你创建的软件的关键功能,识别这些关键功能,然后编写测试。 围绕这些开始,以隔离您的软件问题可能出现的位置。 这是带来他们的公平方式吗?

JP:我会说是因为,是的,因为那是从两个测试开始说有问题,比如非常好的测试覆盖率。 您希望对每个单独的部分进行一次测试。 的程序。 所以就像一个测试失败了,你就像,好吧,这告诉我我需要在我的代码库中去哪里解决。 也许您会到达那里,也许这是开发新产品插件的一种方式。 但是,如果您有一项测试,您知道,您的简码可以确保您的博客能够将其添加到帖子编辑器中。 确保您的表单可以提交并且没有任何错误。 将来,当它们破裂时,它们涵盖了很多内容,您知道,它们因特定原因而失败。 然后是我喜欢的第二种类型,就像第一阶段一样。 第二阶段是下一次有一个错误正确测试因为那个错误而失败,然后一旦你修复了这个错误就可以通过,因为现在你在测试中有了更多的细节,你有证据证明你修复了这个错误并且你有防止将来再次发生的保护。

DV:我喜欢看到你在使用未来的袋子,因为它们会作为一种方式来增加更多的测试覆盖率,当然还有最需要正确的领域正在打破的东西。 这是一个聪明的方法来产生一个很好的建议。 我想在这里更深入地探讨一下狂野西部编码和 WordPress 的文化。 我们将进行最后一次休息,我们会马上回来的。 是时候插播广告了。 请继续关注更多紧迫的问题。 欢迎大家回来在 WMR 上按此 WordPress 社区播客。 我们正在与 Josh Pollock 讨论为 WordPress 开发人员提供的现代工具。 就在休息之前,我们谈到了 Josh 是如何看待接近你的,这有点像编写你的测试套件,首先关注最关键的功能。 我真的很喜欢你的建议 Josh 关于现在使用某种错误来增强你的测试套件。 我认为这真的很聪明。 你知道,WordPress 有一种牛仔女牛仔编码的文化,如果你愿意狂野西部得到你的鸡巴也叫你看到自动化测试的文化开始扎根是不是像引用这样的概念,事情变得越来越难,比如制作现代工具. 您还说了一个要求,但也提到了自动化测试的概念。 您是否觉得它在 WordPress 中扎根,或者您仍然觉得它就像您知道的那样,五分钟安装和 10 分钟网站?

JP:嗯,这取决于项目,对吧? 就像有问题一样,当您可以插入 machine.com 时,它很棒 就像使用 WordPress 的一个网站现在真的在建立自己。 我没有任何版本控制。 没有客户喜欢这样的自定义代码。 我喜欢修改成Hello Dolly。 对。 这就像现成的东西。 但是想想我以前在一家机构工作过。 他们所有的部署都是自动化的,对吧? 使用拉取请求工作流程将所有内容都检查到版本控制中。 然后当您合并到一个分支时会自动部署该站点。 这变得更容易了,有更多的工具可以做到这一点。 如果您正在构建一个完整的站点,那么您知道,还有更多的主机支持它,并且您知道,有记录的方法可以做到这一点并获得类似的自动化部署。 我认为这是很好的第一步,因为这是标准化该部分的机会。 然后在你知道的那个管道中,开始添加测试。 我认为越来越多的人正在这样做。 而且,你知道,我今天早上早些时候使用 FTP 客户端将文件拖到服务器上,因为有时这是唯一的方法。 嗯,我认为,是的,我认为它正在变得更好,但是,你知道,这对人们来说还不够容易。 我认为不是,因为作曲家不是一个原生概念,也不是新闻集团,这使得它变得更加困难或 NPM。 我认为在这个领域还有很多工作要做。 就像我真的对这种方式非常感兴趣。 如果我有更多的时间,我会认为镇静的问题不是。 适用于 WordPress。 铅不是一个很好的工具。 它适用于整个项目,但就像它不能递归地安装依赖项那样的问题

DV:但是你的测试怎么样? 您是否像这里的 IT 人员一样使用您的测试,因为我觉得这对于许多尝试采用现代开发的人来说是一个很大的障碍,就像,你知道,我可以使用什么测试套件? 我可以使用哪些测试工具? 我只是好奇,例如,如果您对那些听听自动化测试和工具或 WordPress 测试套件或框架的人有任何建议,他们可以考虑

JP:嗯,所以对于 WordPress 开发人员来说,你所做的就像插件一样。 您不只是使用 PHP 单元,它是 WordPress 插件的标准,用于 PHP 测试。 还有一些由 Yoast 开发的工具是开源的,作为其中的一部分,可以更轻松地使用 PHP 单元进行测试,并且这些工具都会在您的机器上自动设置。 然后是 JavaScript 玩笑,就像 React。 我的意思是,这是 WP 脚本的一部分。 这些是我使用的东西,但我也适用于可能进行站点开发的人,您可以使用 go students spectre 或 Checkley 等工具进行自动化测试,您可以通过浏览器扩展程序对测试进行编程。 然后你进入浏览器,你点击记录,然后你做一些事情,比如登录你的网站并添加一个帖子或添加一个块或类似的东西,然后他们可以在你的网站上运行,你知道的,每天一次或每周一次。 这是一种不进行代码自动化测试的方法,你知道,拥有网站的人,他们是你知道的,当你的客户向你发送消息并说,嘿,这个页面坏了时,这真的很重要。 这不是开始与客户互动的好方法。 最好说嘿,我们的自动检查通知最后一次更新破坏了该部分,我们已经修复了它。

DV:我想到了这些年来我所做的所有现代工作流程剧集。 我不认为有人曾经介绍过这个概念。 这真的很聪明。 这太棒了。 乔希,非常感谢你今天加入我们。

JP:不客气。 感谢您的款待。

DV:如果您想了解更多关于 Josh 的工作,也许可以扩展您自己的现代 WordPress 开发者之旅,请查看 pluginmachine.com 感谢大家收听这个 WordPress 社区播客和 WMR。 这位是您的主持人 David Vogelpohl。 我通过我在 WP Engine 的角色来支持 WordPress 社区。 我喜欢每周在 Press This 上为您带来最好的社区。