面向初学者的 IS 测试
Jon Calhoun 最近发表了一篇非常详细的解释文章,阐述了为什么“测试不适合初学者”。
我能理解并同意其中的大部分内容,但不同意其主要前提。
健康警告
我写这篇文章是为了表达自己的想法,也是为了弄明白为什么我认为测试分析技能对开发人员很重要。如果我啰嗦,请随意跳过!说实话,我不会评判你,也不会生气。
另外,关于这个话题我可能还有很多想说的,只是还没来得及写下来——所以,我可能还会再发几篇帖子。你们就等着瞧吧。
专业测试人员的偏见
首先,请理解我的观点带有偏见。自 2012 年以来,我一直从事测试工作,而非开发工作。在此之前,我一直是一名业余开发者,但从未从事过专业开发工作。
我拒绝接受你的现实,并用我自己的现实取而代之。
我真心相信,学习一些测试分析师的技能可以让即使是新手开发人员也变得更优秀。但是该怎么做呢?
好的,我希望你能同意我的观点:
- 及早发现漏洞可以节省时间和精力。
- 设计或需求中的缺陷可能会造成非常严重的后果。
- 从失败中学习是好事,也很重要,而且,什么时候第一次就能成功呢?
我完全同意Jon的观点,如果你在第一天就试图学习断言和单元测试的工作原理,而没有先学习概念和语法,那你肯定会失败。在这种情况下,“测试不适合初学者”这句话确实没错。
但测试分析如何能帮助解决这些问题呢?
从根本上讲,测试分析并非编写测试用例,而是学习、探索和提出问题。
什么样的问题?我不会再详细讨论这个问题,因为我已经发帖说过。
我的前提是:
- 你对要解决的问题(需求)了解得越透彻,就越容易将其分解成更小的问题并逐一解决。
- 早期投入时间思考是值得的,而且以后会为你节省时间。
但是,对于早期开发、原型设计以及学习如何开发,又该如何进行呢?
当然,这并不意味着你不应该尝试和学习!需要说明的是,当我提到“新手开发者”时,我指的并非你开发之旅的“第0天”。
无论如何,这仍然是探索的一部分,而探索非常重要!
当你开始一份工作,或者参与开源项目时,你就不再是单打独斗了。这时,跳出代码本身去思考问题就显得尤为重要。
你怎么知道已经完成/正在运行?
在早期学习阶段,无需使用正式的测试驱动开发(TDD)或行为驱动开发(BDD)。相反,花时间了解哪些功能是必须实现的,即使是对于演示或学习项目来说,也是很有帮助的。
它很有用,因为它能帮你完成任务。它很有用,因为它能帮你把大问题分解成小问题。
此外,在团队合作中,它的作用会更加突出,因为你可能只负责部分功能。你需要清楚地了解“你的部分”在哪里结束,以及“其他人的部分”在哪里开始。
将其中一些内容以某种测试用例或预期行为的形式表达出来会很有用,这样你就可以测试你的代码,看看它是否按预期运行,或者是否需要继续改进!
为什么仅仅编写“可运行”的代码是不够的
猜猜看——一旦你成为一名开发人员,或者成为敏捷团队中的测试人员,仅仅编写出能运行的代码是不够的。
首先,你必须记住编写代码的背景。通常情况下,这是为了解决某种业务需求,假设你的目的是赚钱(或者为他人赚钱)。或者至少,你是在解决一个问题。
通常,需要解决的问题其实是商业流程的一部分,而这个问题原本完全可以不用技术就能解决,或者历史上只需使用模拟设备就能解决。想想从商店收银机和纸质账簿,到邮购到现代电子商务的转变。
这就需要运用一些测试中常用的基本分析技巧了:
- 记住要多问“为什么?”。如果你理解了问题,就能找到更好的解决方案。
- 如果你足够幸运,能够直接联系到你的客户,那就保持沟通。尽量“使用同一种语言”,这不一定是代码,而是模型、思维导图、UML图、流程图、白板、对话等等。如果实在不行,那就只能写书面声明了。
- 记住,你是在研究如何解决某个问题,而不是为了开发软件而开发软件。
够了!让我开始写代码吧。
好了,我说完了。我真心希望这篇文章对你有用,但说实话,我写这篇文章主要是为了表达自己的观点。
欢迎分享您的观点和经验,发表评论、撰写帖子、分享内容。我很乐意向您学习,所以请随时与我交流!
文章来源:https://dev.to/dowenb/testing-is-for-beginners-44da