像建筑师一样进行测试
大多数开发人员都认为测试策略是开发流程的最后阶段,通常由开发人员或 QA 手动完成。但并非所有人都能看出这里存在问题,因此,让我们与建筑师一起,观察他们是如何建造一栋建筑的。
像软件开发人员一样建造建筑物
你相信建筑师建好一整栋楼,然后在建筑工人完工后袖手旁观,观察其稳定性吗?或者,建造完工后,让其空置几个月,让居民进行测试。在此期间,建筑师可以观察所有因素,例如稳定性、基本可用性、材料质量等等。几个月后,他/她将自己的建筑介绍给真正的住户,让他们发现所有故障、问题、错位的门、断电等等。更不用说他们可能发现的更严重的问题,例如墙壁太薄、地板无法承受书架的重量等等。
一体化
嗯,这些在建筑领域都不会发生,但在软件开发领域却屡见不鲜。我见过很多软件开发,在开发周期结束后才进行首次测试。建筑师不会这样做。他们有公式和规则,这使得他们在开始建造任何建筑之前就对其进行测试。建筑是由许多部件、混凝土块等组成的。所有这些部件组合在一起,相互作用,改变整个建筑的行为。建筑师在实际组装两个元素之前,就已经确切地知道它们之间的力和动量。
这可以与软件开发中的集成测试进行比较。你有一堆组件,它们应该组合在一起形成一个建筑,每个组件可能具有不同的属性,但重要的是,一个组件的输出是另一个组件的输入,它们应该协调一致。
单元
建筑是由单个元素构成的。每个元素都有其自身的属性。建筑师事先知道可以使用哪些材料,每个元素的预计重量是多少,以及建筑内部每个元素的承载力和强度是多少。这与软件开发中的单元测试非常相似。单元测试确保建筑的每个部分都能完成其设计任务。它们是建筑学中简单的静态公式,确保每个元素的行为始终保持一致。如果某个元素存在缺陷,集成测试应该会指出问题所在,但单元测试能够准确地指出哪个元素存在缺陷。
功能
建筑师不需要真人进入建筑并开始使用,就能发现他/她把电源插在了无法触及的地方,把门开到哪儿都去不了,把窗户打不开。他们对所有东西都有一套标准,包括电力、门的位置、灯光等等。当标准无法提供帮助时,他们可以利用常识。软件开发人员可以在软件投入实际使用之前,制作一套功能测试,与实际数据库配合使用,模拟用户旅程并预测用户的常见路径。
个人笔记
鏂囩珷鏉ユ簮锛�https://dev.to/damnjan/test-like-an-architect-25bo我每天都饱受折磨,因为我接触的项目没有包含任何测试。这些代码大多是匆忙完成的,而且第一次就进行了生产测试。此外,测试的泄露给公司带来了巨额的金钱和时间成本,因为他们不得不支付人工质量保证的费用。我仍然相信,我们可以从那些迂腐的架构师身上学到一些东西,不是照搬复制粘贴,而是从中学习一些纪律。