如果你需要走30公里的距离,你可以步行6个小时。或者你可以学习如何驾驶汽车,在30分钟内到达那里。
这就是测试有效教练Shai Reznik的艰难经历。他努力工作,试图在朝九晚五的工作和发展创业公司之间取得平衡,以至于他得了恐慌症。最后,他决定把可以自动化的东西自动化,包括测试,是保持清醒的唯一方法。
在本期播客中,Darko和Shai谈论了Shai的职业道路,从全职开发者到将他的创业公司发展为顾问,为什么编写测试可以节省开发者的时间,以及如何以测试的方式编写测试。
目录。
你也可以在以下网站获得Semaphore Uncut 苹果播客, Spotify,谷歌播客,Stitcher等。
喜欢这一集吗?请务必在您选择的播客播放器上留下⭐️⭐️⭐️的评论,并与您的朋友分享。
简介
Darko Fabijan (00:02):
大家好,欢迎来到Semaphore Uncut,这是一个针对开发者的播客,关于构建伟大的产品。今天,我很高兴地欢迎Shai Reznik。萨伊,非常感谢你加入我们。请继续介绍自己。
Shai Reznik (00:16):
好的,我是Shai Reznik,我帮助商业公司节省时间和金钱,在不停止开发的情况下,将具有成本效益的测试整合到他们的工作流程中。为此,我使用培训计划、课程、辅导和咨询。
Shai是如何开始从事商业咨询的
Darko Fabijan(00:42)。
很好。这也是超级重要的。从另一个方面来说,我们也在努力帮助公司做同样的事情,用工具和CI/CD实践支持他们。
我很想知道,你是如何发现这是一个你想关注的重要事情的?你的职业生涯是如何引导你做你现在所做的事情的?
萨伊-雷兹尼克(01:07)。
好的,真棒。所以我有一个网站叫HiRez.io,这个网站将得到一个更新的版本,里面有所有的细节。目前它是一个学习页面,如果你有兴趣,你可以在那里找到我。
那么我的背景故事,我是如何进入这个话题的呢?
我开始是一个普通的开发人员,从事着朝九晚五的工作,我了解到这个东西叫做测试。但早在2006年,我对自己说:"好吧,是的,它看起来很有趣,但我现在没有时间,我需要开发东西,我还需要学习框架和东西。因此,我将在某个时候去做这件事"。
几年后,我在一家公司工作,他们那里有疯狂的最后期限,他们不断给我越来越多的测试,因为他们指望我快速交付。
Shai Reznik (02:08):
与此同时,我和几个朋友开始在一个副业上工作,我们想成为一个创业公司,为其筹集资金。所以我当时正在工作,我当时还没有孩子,也没有结婚。
所以我对我的女朋友(现在是我的妻子)说,'"嘿,让我现在投资所有这些时间。这样我们就会有钱,我们就会成功。然后我们就可以出去玩,去吃饭和类似的东西。"
所以我把所有的时间都花在了开发上,试图提高自己作为一个开发者的水平,并试图满足所有的最后期限,包括日常工作和下班后的创业工作。所以我疯狂地工作。
Shai Reznik (02:56):
而我意识到的是,我是在做朝九晚五的工作。我在做一个大的功能,有工作流程、树和所有这些,用户界面上的复杂性。
我到了一个地步,每当我引入一个变化,我就会产生许多bug。每当我试图修复一个错误时,我又创造了四个错误。他们不停地问我估计,"你能在多长时间内完成这个功能?"我一直说,"哦,两个星期或类似的东西。"
然后这个冲刺和冲刺结束了。我说:"你完成了吗?""没有,我被困在了修复错误的地方。"然后我们有投资者想投资我们的创业公司,但他们想看看产品,第一个版本。我在那个版本中出现了bug。
Shai是如何开始写测试的
Shai Reznik (03:43):
我试图处理所有的bug,试图弄清楚我到底在做什么。而它一直在推迟,两个冲刺,三个冲刺。最后我精疲力竭,沮丧不已,基本上没有了答案。
由于所有这些压力,它达到了一个点。我开始吃得不好,不运动。我到了一个地方,我真的走到楼梯上,感到头晕,坐下来,几乎昏倒。
就像,我不知道我出了什么问题。所以我去了医院,他们做了一堆检查,没有发现任何问题。医生说,"嘿,你可能有恐慌症发作或什么的。"
我说,"恐慌症?"我不知道什么是恐慌症。所以我看了一下,这就是我的情况。我有呼吸困难和所有这些东西,因为所有这些压力。所以我很疲惫,非常紧张,压力很大。
Shai Reznik (04:44):
我记得我在其中一个弹簧之后说,"我不知道该怎么办。我没有任何解决方案。" 所以,我是一个灵活的家伙,早在灵活的Flash开发之类的日子。
而其中一个Java开发者看着我,在回顾后问我:"你为什么不写测试?我说,首先,我不知道怎么做。其次,这看起来是在浪费时间。如果我没有时间完成功能,我怎么会有时间写测试?
他说,"是的,但是......" 这给了我一个很好的比喻。
Shai Reznik (05:26):
这就像你说的,"好吧,你需要走六个小时才能到达目的地。对吗?这需要六个小时,或者你可以学习如何开车,然后在30分钟内到达那里。" 但你不想学习如何开车。你宁愿一路走下去,也许会越来越长,越来越长,这样。
你需要步行六个小时才能到达目的地。或者你可以学习如何开车,然后在30分钟内到达那里。但是你不想学习如何开车。
-萨伊-雷兹尼克
所以我说,"好吧,这有道理。你认为我写一个简单的测试需要多少时间?" 他说:"好的,如果你刚开始也许两天就能写一个简单的单元测试,只是检查一个纯函数。"
有一件事,我去找我的经理,问他们:"我认为这是一条出路。我没有看到其他的出路。我需要停下来,花两天时间来解决这个问题。" 他说,"好的。"幸运的是。
萨伊-雷兹尼克(06:16)。
于是我疯狂地翻阅电脑,试图了解。于是我把flex单元插件安装到flex builder,即编辑器上。然后我写了我的第一个测试。
我记得在flex中,每次编译时你都要等待两分钟,只是为了检查它是否已经编译好了,然后你就到浏览器中检查所有的东西。所以我运行了这个测试,它花了一毫秒。我不知道。好像是一秒钟,然后给了我一个 "嘿,这段代码可以用 "的绿条。
我 "啊!"那是一个 "啊-哈 "的时刻,一个顿悟的时刻,尤里卡时刻。我跑到另一个房间大叫:"嘿,成功了,只用了一秒钟。"我非常高兴和高兴。我有很多动力去深入研究,研究它,学习它。
萨伊-雷兹尼克(07:10)。
我学得越多,看到的就越多,我记得第一次它真的抓住了一个错误。不是在我目前工作的代码中,而是在另一个代码中,因为我在某个地方改变了一些共享代码,突然间另一个测试就坏了。
我当时想,"什么?"我没有意识到这样的影响:"嘿,它只是阻止了我推送更多的bug,以及来自QA或用户的投诉,而我不必通过这种工作流程来浪费时间和停止我正在做的事情来尝试和修复紧急情况。它只是在一个按钮的点击中为我节省了所有这些时间,我立刻就迷上了。
我走得越深,我就走得越快。因此,这就是我被引入测试的原因,也是我开始爱上测试的原因。
写代码时最常见的错误
Shai Reznik (08:04):
所以在那之后我完成了功能的工作,我开始实施和学习TDD或测试驱动开发等技术。幸运的是,我们用创业公司筹集了资金。我辞去了工作,作为技术负责人和联合创始人去了这家创业公司。
但我现在作为一个经理犯了同样的错误。我说,"让我们快速前进,之后我们再写测试。对吗?"当我们到达第一个或第二个里程碑时,我们会写测试,然后我们会担心测试的问题。
而我们达到了第一个里程碑之类的。但是,我们又一次走向了同样的流沙。因为你走到了一个点上,你想走得更快,但你走得越快,你创造的bug就越多,你在流沙中沉得越低。对吗?
你走得越快,你创造的虫子就越多,你在流沙中陷得越低。
-萨伊-雷兹尼克
萨伊-雷兹尼克(08:59)。
所以我们去了这个地方,我非常喜欢测试,但我没有在我自己的创业公司中实施它。所以我告诉我的联合创始人,"嘿,我以前来过这里,我们需要添加测试,好的。这将有助于我们。"
他和我争论起来,因为他不明白为什么我需要两个星期的时间来研究一些不能立即带来价值的无形的东西。但幸运的是,我成功地说服了他,我们开始进行测试,我们可以更快地成长。
实际上,从技术上讲,这是很成功的。我们有一个伟大的产品,但我们学到了艰难的方式,精益创业的重要性,因为我们没有做大量的市场研究或用户访谈和类似的东西。所以我们花了很多钱和时间来打造错误的产品。
萨伊向咨询业的转型
Shai Reznik (09:59):
所以后来我们不得不关闭了这个创业公司。我先是加入了一个正常的日常工作团队,成为一名开发人员。然后我开始做顾问,试图从我的创业、管理和开发人员的经验中吸取所有的教训,并试图将其全部合并以帮助公司迁移。
所以我开始与JavaScript打交道。我在创业时做了从Flash到JavaScript的过渡,我开始帮助公司从Flash转移到JavaScript。
当时在2012年,热门的框架是AngularJS。所以我开始做这方面的讲座,帮助公司将他们的代码从其他技术迁移到Angular。然后我在以色列成立了一个名为JavaScript Israel的JavaScript开发者团体,它现在是这里最大的Java社区团体,有很多优秀的人在互相帮助。
开发者讲座中的Standup和即兴表演
Shai Reznik(11:01)。
但是一开始,我并不认识任何人。我只是想问问题,但没有一个友好的小组来做这件事。所以我创建了它,然后开始自己做讲座,因为我不认识任何人。所以我开始只是分享我的知识和我的旅程等等。
随着时间的推移,我收到了出国演讲的邀请,我也开始向会议投稿。我开始在世界最大的Angular会议上发言,例如,NG-Conf和Angular Connect等等。
我的爱好,不管怎样,总是在做喜剧,比如即兴表演和站立表演。所以我开始想,也许我可以把教学和即兴表演以及喜剧这两件事结合起来,使你们将学到的东西更有趣,更有娱乐性。所以我开始在讲座中,在大型会议上这样做。
Shai Reznik (11:55):
有时它是一排。有时是一场舞台剧。有时是一首说唱歌曲。每一次都是不同的东西。所以人们开始知道我是一个疯狂的Angular人,他以一种奇怪的方式授课,但这种方式能让你更好地记住这些东西。
所以我接受了所有这些,这就是我决定开始做关于Angular的在线课程。当我这样做的时候,我开始看到人们一直在问同样的事情。他们想要关于测试的材料,因为他们一直在为测试而奋斗。我说,"哦,测试,这是一个与我的心很接近的主题。"
我选择Angular的原因是它是第一个强调测试是第一等公民的JavaScript框架。所以我开始创作更多关于测试的内容,然后我决定全面进军测试领域。
我选择Angular的原因是,它是第一个强调测试是第一等公民的JavaScript框架。
-Shai Reznik
如何在信心和效率之间找到平衡点
Shai Reznik(12:51)。
当我这样做的时候,我意识到,我们学习测试的方式和实际执行的策略已经有20年的历史了,到现在甚至更久,都没有产生想要的结果。特别是当公司成长的时候。起初,我觉得这只是关于信心,对吗?我们希望有信心来运送我们的代码。
但后来当我开始实施不同的策略时,我发现这不仅仅是信心的问题,也是效率的问题。我可以拥有世界上最大的端到端测试套件,但它需要5个小时来运行。因此,我将获得他们所需要的所有信心,但我将无法加快行动,因为我每次都需要等待五个小时。而且成本很高,诸如此类。
所以我开始思考,如何才能在信心和效率之间找到平衡?
Shai Reznik(13:45)。
我怎样才能在那里找到代表它们之间最佳状态的指标?
而我想到的唯一一个词就是成本效益。与其他测试策略相比,使用这种测试策略的成本效益如何,或者与这种工具相比,使用这种工具的成本效益如何。并实际做实验和测量。
例如,在Angular中,通常的智慧是为穹顶编写桌面,编译组件并实际渲染它们,在穹顶上测试东西。但从经验和实验中,我们看到这是不有效的。当你达到一定数量的测试时,你的测试套件就会变成6分钟、10分钟、20分钟,诸如此类。
使用类测试
所以一个更好的策略是使用类测试,它只是将组件的类实例化。因为在Angular中,它与模板是分开的,在React中不是。然后你可以只写方法的测试。你失去了一点信心,但你获得了更多的效率,这样你就得到了最佳的,这只是关于Angular的一个非常具体的例子。
Shai Reznik(14:54)。
但是我开始把这个逻辑应用到其他的测试策略上,这不是Angular特有的。比如说,端到端测试,好吗?现在在QA和开发社区有一个左移,开发人员被期望写更多的测试,这是好的。
但是,如果你只是向开发人员抛出 "嘿,为你的功能写一堆端到端的测试",你最终会得到一个5小时的测试。开发人员没有把时间花在建设或开发功能上,而是把时间浪费在测试后的奔波和试图修复它们上,这是更有成本效益的方式。试图找出这个失败的根本原因,把时间浪费在对业务没有贡献的任务上。
以最有效的测试方式编写测试
Shai Reznik (15:47):
因此,我开始尝试找出在端到端方面,什么是对开发人员更好的测试策略。不只是说,"哦,你需要写端到端的测试",因为这在一般情况下是模糊的。
但是有更好的策略,例如,烟雾测试,就是只写关键路径的测试,而不是只写每个功能的测试,这样你就能得到最大的信心和最有效的效率,最有效的测试方式。
这就是我想出的成本效益指标的名字。成本效益太笼统了。所以我把它叫做测试有效。
然后我开始把我所做的一切放在这个术语下,测试有效的发展,因为我专注于开发人员。虽然很多QA自动化人员和开发人员也来参加我的课程,想学习如何编写测试。因此,这是另一个我不认为我正在处理的市场,但显然我正在处理。
如何优化腐烂的测试套件
Darko Fabijan(17:09)。
如果你有一个客户或公司接近你,他们已经有了你所描述的非常倒置的测试许可。多年来,他们已经收集了这么多,非常昂贵的端到端测试,验收测试,集成测试。无论人们如何称呼它们,无论它们在那里实际做什么。但是用你的术语来说,他们不仅仅是测试有效,他们也不符合成本效益。
Shai Reznik(17:43)。
对。
Darko Fabijan (17:44):
从这一点来看,你是否建议他们重新加工他们的测试服的一部分,或者只是接受一种新的做法,继续前进,然后随着时间的推移最终解决那个腐烂的测试服?
Shai Reznik (18:02):
所以每个顾问都会说,"这取决于",对吗?取决于公司和规模等等,但首先要从分析开始。
例如,它需要多少时间?每次运行这个测试,公司要花多少钱?是开发人员需要运行,还是只在CI中运行?是由开发人员编写还是由QA自动化负责?
这些问题的答案将影响公司应该做什么的结论。但理想的情况是,我认为从某种意义上说,最有效的测试方式是让开发人员专注于编写我称之为多行动测试和单行动测试的组合,但要采用最有效的测试策略。而我将解释一下,好吗?什么是单选,多行动?为什么我不说集成测试,单元测试之类的。
理想的情况是,让开发人员专注于编写多行动测试和单行动测试的组合,但以最有效的测试策略。
-Shai Reznik
Shai Reznik (19:01):
我对集成和单元测试这两个术语有意见。虽然这是常见的方式,也是常见的智慧,但我觉得这都是过多的。
例如,如果你读了鹅书,成长的对象或在指导测试的书中,你会看到集成测试被称为外部集成测试,东西你测试你的代码与你不拥有的代码。
但是,如果你在维基百科中查找集成测试,它说它是在集成中写东西,比如几个东西在一起。
Shai Reznik (19:34):
还有单元测试,比如说,即使你去看博客或者读Martin Fowler关于这个的定义,你也会看到单元测试的孤独主义或模拟主义和类主义的方法,基本上一个意味着孤立的测试,另一个意味着集成测试。比如把几个类整合在一起作为一个单元。
Shai Reznik (19:58):
同样,这是一种态度类型的东西和方法,但它使这个词变得复杂。所以我开始看它,并试图用不同的角度从测试有效的镜头来思考这些术语,并试图用第一原则来思考,从Elon Musk那里获得灵感,并不是说我和这个外星人那么接近,但我从很多事情中获得灵感。
我从第一原则的思考中获得灵感,并试图划分单元测试。什么是单元测试,测试的所有维度是什么,以便解构它们并以不同的方式重建它们,以便找到处理某种情况的最有效的测试方式。
测试的几个维度
因此,举例来说,我意识到测试有几个维度。其中一个是边界,也就是我刚才说的,孤立的与综合的。
Shai Reznik(20:55)。
另一个是行动范围。比如说,我在测试中只测试一个动作吗?例如,调用一个方法或点击一个按钮,还是测试多个动作?填写表格,点击一个按钮,进入这个页面......
所以这是一个多动作测试。有时人们把这些混在一起,甚至不知道这是否是正确的方法。那么什么是更有成本效益的呢?在哪种情况下是单一行动还是多重行动?这些都是我所处理的问题,与项目的规模相比,什么是更好的方法。
而另一个层面,例如,在测试中的主题。就像我提到的,穹顶或类,我应该实例化这个还是那个?我应该为这个方法写这个吗?主题是什么,那个维度是什么?
Shai Reznik(21:41)。
因此,例如,在单元集成方面,我开始看到你可以有一个单一的行动测试,应该只测试一件事,但它可以是孤立的或集成的,每种方法的好处或缺点是什么?
我意识到,这与我们正在测试的应用程序的规模有很大关系。被测试的应用程序。例如,我们是在处理我们正在测试的库还是共享组件库?这将是一套完全不同的测试,相比之下,胶水代码的单体,我称之为,将他们所有的可重用组件或可重用模块绑在一起,这将是一种不同的测试类型。那么在这种方式下,什么是更有效的测试呢?
小房间的比喻
Shai Reznik(22:30)。
所以我想出了更好的术语。例如,一个小的应用程序或一个微服务或一些东西,你可以想象成一个小房间,一个公寓商店的房间或一些东西,只是一个房间。
如果你把你所有的模块放在那里,类或文件,作为盒子,你可以看到所有的盒子。如果你想测试它们,你想以单一的行动、综合的方式测试它们。这样你就能得到最大的测试效果,因为你从这种类型的测试中得到最大的效率和最大的信心,因为你不是在隔离。
所以你会得到真正的价值和所有这些东西。很好。所以这就是用盒子来比喻小房间。但是,如果你有一个体育场,而且你有很多箱子离你很远,那会怎么样?这就是巨石,好吧,例子,对吗?就像一个体育场。所以我想了想,我怎么能找到一个测试的隐喻。
手电筒测试和激光测试
萨伊-雷兹尼克(23:27)。
然后我又想到了光。如果我需要对小房间里的这些盒子进行照明,我可以用手电筒,一次打到所有的盒子上。而这将是一体化的方式。
而如果我在一个体育场里,手电筒就不能帮助我,也不能一起达到所有的东西。所以我不得不改变策略,用激光笔对准远处的一个箱子。所以我现在想到了这个名字,好吧,手电筒测试和激光测试。所以根据应用程序的大小,我可以使用不同的策略,并且会知道它们的含义。
因此,例如,激光测试总是孤立的,总是,总是孤立的。它们不是部分集成的,这意味着你模拟或伪造一些依赖关系,而让其他依赖关系保持原样。你总是伪造你能伪造的一切。除了,如果它是一个超级纯粹的外部依赖性或其他东西。
Shai Reznik (24:22):
你要把集成的东西一直集成到EdgeX层或通信层或远程层。而在端到端方面,我开始关注策略烟雾测试,在那里你只测试关键路径。
所以,你需要所有这些背景来理解,因为这是一个复杂的主题。这不是,"嘿,对了,我看到博客文章或推特或什么的。那是说,用一句话来说,你应该主要写集成测试"。
很好。好的。现在,当我的测试套件需要五个小时时,看我怎么处理这句话。好吧,这是一个比较复杂的话题,但由于某些原因,我对这个话题超级热衷。所以我真的很喜欢做研究之类的。
所以回答你刚才的问题,理想的情况是开发人员根据情况,要么写烟雾和激光测试,要么写烟雾和手电筒测试。有时候,在monorepo应用程序和库之间会有变化,对吗?
如何节省开发人员的时间,并以最经济的方式使用它
Shai Reznik (25:21):
但是开发者应该写一个烟雾测试。如果你正在遭受一个很长的测试套件,开发人员需要维护,我会说,尝试识别整个应用程序或产品的每个关键路径和每个根功能,并尽量减少......
例如,如果开发人员正在维护它们,就尽量减少这些,只需从你的测试套件中提取烟雾测试,让开发人员维护债务。如果你有一个QA团队,让他们担心端到端的测试,完整的测试套件,因为这是他们的工作......不,不是24/7,希望如此,但九到五的工作,对吗?
开发人员只需要对最重要的路径进行快速反馈,以测试所有的东西在他们的端到端中都配置正确或组装正确。他们希望关注更多的手电筒或激光测试或单一动作测试,因为他们驱动它。他们的设计也是为了更好的代码设计。而从开发的角度来说,这是最好的情况。
Shai Reznik (26:26):
在QA方面,我读过QA的书和其他东西,但我从来没有做过QA开发者或QA自动化或手动QA。这也许是未来的一个话题,但你有其他的方法论来维护这个。
但是,如果我们从开发的角度来谈,开发人员通常在一个公司的成本最高。他们是一个公司中最昂贵的员工。因此,我们要确保他们的时间是最具成本效益的时间。也许还需要将完整的端到端套件分开,只在烟雾测试完成后运行。
这样一来,你就可以节省五个小时的时间。这是一个来自QA的实践。这不是我发明的,但我至少会在完整的端到端套件之前运行烟雾测试。因此,在一般的用例中,我会这样做,但我说,这取决于具体的条件。
如何在受管制的行业做测试
Darko Fabijan (27:50):
正如你所说,这不是一个简单的话题。有这么多的变量。团队的规模,应用程序的性质,甚至可能是行业。它是一个受监管的行业,所有的东西都必须符合要求等等?或者是更多的自由就好了?
Shai Reznik(28:17)。
是的。在保险、税务和银行以及所有管理方面的东西,你不希望有任何纰漏,在缝隙之间。
达科-法比扬(28:25)。
是的。是的。
Shai Reznik (28:25):
你想确保你完全覆盖,但有时你有这些设置或其他地方,你想确定最关键的东西,并确保你尽可能地覆盖它们。
但是其他不那么关键的东西,你想用最有成本效益或测试有效的策略,你可以做的,不要在这上面浪费不必要的时间。
如何开始与客户合作
Darko Fabijan(28:49)。
那你能不能给我们介绍一下你的服务,以及你什么时候来,通常?当你与公司交谈时,也许你与客户的一些典型关系是什么?
萨伊-雷兹尼克(29:04)。
当然,当我开始的时候,我开始关注个人开发者,并试图培训和提供必要的知识,以便从零知识到我可以放心地写我的测试,甚至以TDD的方式,以测试驱动的方式,我在代码之前写测试,以这种方式驱动我的共同设计。所以这就是我开始的地方。
因此,我从课程开始,试图记录我的知识,并以视频的形式来扩展它。当我开始这样做的时候,有一些公司希望我帮助他们培训整个团队,因为他们意识到,更强大的是链条中最薄弱的环节。如果你不培训整个团队,你会得到一些写测试的人和一些不写测试的人。
而第一组人追着第二组人跑,试图为他们解决他们的测试。因此,这也是没有效率的。
Shai Reznik (29:56):
所以你想让每个人都加入进来,这需要一种思维,因为现在你进入了一个首先是商业心理学的世界。
因为现在我们需要说服那些不懂技术的经理们在整个团队转型中投入时间,这并不容易。还有,如何帮助公司或团队不要在几个月内停止他们正在做的事情。而只是在所有的东西上添加测试,但实际上是将其融入他们的日常工作。
所以我开始这样做。我开始与小公司的团队领导合作,如C级之类的。帮助他们,指导他们如何开始,如何衡量他们目前所拥有的,如何设定他们想要的目标,什么类型的改进和百分比?
萨伊-雷兹尼克(30:45)。
而这部分是超级重要的,因为这样他们可以预测为公司节省的时间或金钱。
例如,如果我们在每个冲刺阶段将错误与功能的比率平均提高20%,那么你就可以显示它为公司节省了多少钱。这样,你就在像我们这样用测试和代码说话的技术书呆子和用数字、金钱和成本效益说话的业务人员之间架起了一座桥梁,这是就业务而言的,而不是就代码和时间的节省。
所以我开始这样做,我们认为这是一个较长的时间框架,但它会帮助他们不停止开发。
Shai Reznik(31:30)。
所以目前,我所提供的是一个培训项目,你可以作为个人参加。所以我们有开发人员自己购买,你也可以作为一个团队参加。
所以我说过,团队领导或CTO之类的,为整个团队转型购买。你可以拥有这些,培训加上辅导和咨询,因为我一直在做咨询,以保持对代码的忠诚,保持对代码的忠诚,不只是做教育者,但实际上仍然是一个开发者。但是,我主要是在基础设施和转向更好的架构和测试方面工作。
Shai Reznik (32:11):
所以我在做咨询。现在我正在扩大规模,因为我没有很多时间做咨询工作了,因为我有一个业务要管理,还有所有这些东西,但我仍然做教练,现在我开始培训其他教练和其他人来帮助我做这些。
所以这就是目前获得我服务的三种方式。在未来,我有未来的认证计划,所有这些很酷的东西,但是是的,它在工作中。所以,是的,这就是服务部分。
Darko Fabijan (32:42):
在开始的时候,你提到了你的网站,但是有什么方法可以联系到你,而且,你有一些会议讲座。所以我想对于这些,YouTube和只是,谷歌搜索你的名字或搜索你的名字是最好的方式,但有什么方式可以联系到你?
萨伊-雷兹尼克(33:01)。
目前的网络版本很快就会改变,因为首先,我专门从Angular测试开始。所以我们有一个Angular大师班,为那些想学习如何更有效地进行测试的Angular开发者提供服务。
但我们开始看到,他们所教的大部分内容都不是针对Angular的。例如,我有一个团队,我帮助他们的unity代码,用C#。很多同样的原则也适用于此。我们还有端到端或烟雾测试课程和Cypress课程,这些都与特定的框架这个和那个无关,或者它们可以应用于任何公司。
Shai Reznik(33:41)。
所以目前我们会看到Angular测试的大师班,但是是的,你可以在YouTube上看到,我所有其他的测试讲座和我所有疯狂的NG-Conf讲座,我之前提到过。
一旦新的网站建立起来,你可以通过那里到达。但你也可以随时在Twitter或我的电子邮件shai@hirez.io 上联系我。所以这是目前联系我的最好方式。
如果你住在以色列,你可以在街上跟着我,如果你在街上遇到我,你会吓死我的。所以在Twitter上关注我,而不是在街上。
达科-法比扬(34:21)。
很好,很好,很好。嗯,谢谢你,萨伊。你通过你的职业生涯学到了许多艰苦的教训,是的,我真的很高兴它让你着迷。你所发现的最大的痛点,你一直在解决它,并帮助其他人解决它。所以,是的,这真的很好。
萨伊-雷兹尼克(34:38)。
是的。是的。谢谢你。你提醒了我这个故事,我总是觉得我不希望其他人陷入我所陷入的恐慌模式。恐慌发作,去医院和所有这些东西。我真的,真的,真的想让其他人避免这种情况。
所以这就是让我保持清醒并试图找到更好的方法的原因。我没有提到我创建的开源工具和所有这些东西,但这是另一集的内容,也许......
Darko Fabijan (35:03):
是的,当然了。是的,我完全能体会到这一点。特别是作为一个年轻的开发者。当你的测试服是绿色的,或者只有几样东西是红色的时候,你就会有一种安心的感觉。完全不同的是,当你不知道你要去哪里时,就像你在一个思想领域工作,你不知道什么会爆炸。
萨伊-雷兹尼克(35:25)。
正是如此。
达科-法比扬(35:27)。
再次,非常感谢你。这非常有趣,我想对我们的很多听众来说非常有用。祝你好运。谢谢你。
萨伊-雷兹尼克(35:34)。
非常感谢你邀请我。
The postShai Reznik: How to write Tests the Most Test Effective Wayappeared first onSemaphore.