我单独拎出几个觉得很重要的点,作为笔记。
Test Early. Test Ofen. Test Automatically.
软件质量保证是一个非常重要的事情,其中测试就是主要手段。测试包括手动测试和自动化测试。
手动测试,是指人工操作软件,检查软件的功能是否正常。这种测试效率低,容易出错,可控性相对较低。但是很多场景还是 非常有必要的,比如变动非常快的UI界面,或者一些复杂的交互逻辑。这种场景使用自动化测试,那么测试覆盖和维护的成本 都会非常高。
自动化测试,就是机器来跑,现在的工作中,主要在这么几个场景下,配合CI/CD使用:
单元测试和集成测试的区别,单元测试是对一个模块的测试,集成测试是对多个模块的测试,主要在于一个颗粒度的不同。 e2e 测试是端到端测试,是对整个系统的测试,主要是测试系统的功能是否正常,是以用户视角来看的,一般就是模拟用户的操作, 来调用API,甚至有些场景还会模拟用户的行为,比如点击,输入等。
不仅要测试,要早测试,要多测试,而且要自动化测试(当然并不是说不要手动测试)!
有问题就要修复,越等到后面修复的成本越高。
不要温水煮青蛙,一旦习惯了破窗,就会变成习惯,最后就会变成了一种文化。
正交性是指,系统中的各个部分之间是独立的,互不影响。这样的系统更容易维护,更容易扩展。我们常说的解耦,其实就是 为了提高正交性。
想象一下,如果你在驾驶一辆新的汽车,汽车没有正交性。转动方向盘的时候,可能会提升车速,换挡的时候,方向盘会打转, 刹车的时候,可能会加速。这样的汽车,你敢开吗?
软件也是一样的。UNIX文化常说的 KISS 和 DRY,也是为了提高正交性。
能自动化的,都自动化!
首先要有一个好的代码,如果代码本身命名清晰,逻辑清晰,其实是不需要注释的。如果代码比较复杂,或者有一些历史逻辑或者 特殊处理,那么则需要配备对应的注释和文档。