高度成功的程序员必备的7个习惯
我的一位女性朋友想要减肥,一段时间之后她说“运动是很难的”。好吧,其实运动并不是很难,而是很乏味,又很容易避免。锻炼本身很简单,但经常做才是难点。事实证明,软件测试在很多方面与运动类似——它很乏味,容易跳过,容易产生“暴饮暴食”行为,而且最好是持续小量地进行。当然,在生产高质量软件方面,它也是非常有价值的,也是非常有效的。
当我们进入2021年,发现我们是否能成功地遵守新年决议时,让我们更主动地养成软件测试的习惯吧?我最近参加了一个关于这个问题的网络研讨会,我们发现其中的很多乐趣,如果你错过了它,这篇文章应该能提供最重要的收获。
定期进行的运动效果最好,即使量很轻微。每天10分钟的运动就比每周一次的2小时运动要好。那如果你想一次做完呢?想象一下,如果你的目标是每周锻炼两次,每次30分钟,那么全年共约50小时。你会等到12月的最后一周,连续5天每天去健身房锻炼10小时吗?这听起来很可笑,但奇怪的是,这就是全国乃至全世界的组织中软件开发人员和测试人员所采取的方法。
没有维护的测试套件会变得嘈杂而无用,最终变得更加没有维护好。静态分析作为测试工具被错误地部署,提供了一个相当糟糕的噪声值比,最终将大部分被忽略。其他核心实践也是如此,它们应该是你常规代码练习习惯的一部分。无论你在开发什么样的代码,无论是企业IT、嵌入式、物联网、医疗、汽车还是航空航天,这些有助于提高我们的软件安全、质量和可靠性的习惯都很重要。这些习惯性部署的最佳实践,已经在所有行业的成功开发者中反复证明了自己。
1. 同行评审
让第二组或第三组旁人视角查看你的代码,可以有效地帮助发现严重的问题,在它们到达用户手中之前。为了让这种做法成为你的日常工作的一部分,请确保你不要做得太过火。不要试图审查整个代码库,只审查与一个功能或修复相关的变化。依靠静态分析来完成风格、最佳实践和合规执行等繁琐的工作。
2. 静态代码分析
获取一个良好的预防规则集,你可以直接与过去的问题和未来想要避免的问题联系起来。不要只在QA中运行,确保它在开发人员的桌面上,在那里他们可以得到早期通知并可以修复问题。任何合规性问题,比如功能安全,都应该是你静态分析配置的一部分。
3. 编写单元测试
边走边写单元测试——每个文件写一个单元测试,或者每个变化写一个单元测试。一边写代码一边写单元测试会更快,因为你已经知道代码应该做什么。让它们变得健壮,这样如果转移到另一台机器上或在另一天运行,它们就不会崩溃。
4. 执行和维护单元测试
你运行测试的频率越低,噪音(干扰因素)就越大——这是热力学第二定律在起作用。每次释放时,要真正努力慢慢地修剪噪音。没有人有时间一次做完,所以这次释放要比上次好一点就可以了。
5. 提高代码覆盖率
除了创建新的单元测试,还要通过测量你的覆盖率来确保你测试的代码量在增加。努力让这个数字逐步上升——也许这个版本只是比上一个版本好5%。让这个数字上升的方法是利用先进的测试技术,如服务虚拟化,使你能够测试复杂的系统。
6. 测量
你不能管理你没有测量的东西。你怎么知道事情是在变好还是在变坏?从你的开发活动中收集数据,比如检查、发现的bug、静态分析违规、覆盖率等。在第一关,只需收集它。在几次发布之后,你就能看到这些数据是上升还是下降了。
7. 执行事后总结
在发布之后,花点时间来回顾一下它的情况。90天后,你对最初的质量有一个很好的了解,可以做出一些评估。哪些地方出了问题?以后如何避免这样的事情发生?利用静态分析,针对具体问题进行预防。
当改进你的软件测试实践时,请记住坚持最初的决定是多么困难。我们都需要改进,但不要贪多嚼不烂。弄清楚从哪里开始,一次只解决一件事。少即是多——建立小而一致的习惯,以获得最大的影响。