做测试比写代码难
测试
测试工作比较考验全面思考的能力
常见的分类
白盒:清楚内部的东西以及内部是如何运作的
黑盒:不考虑程序内部结构和特性通过输入输出测试
- 单元测试:白盒测试 主要对基本功能(单元模块)进行测试,只测某个小零件,离问题最近,所以解决问题的成本低;
- 功能测试:黑盒测试 每个零件都能工作,但不能说明组装起来也能正常工作;
- 集成测试:模块和模块(或系统与系统)间的测试,例如“订单”和“支付”模块之间的测试
- 难点在于 如何把众多系统组织搭建起来,以及如何定位测试中遇到的问题,这些都需要很好的运维工具
- 非功能测试:用户不关心的,但开发需要关心的。如:性能测试、安全测试、稳定性测试等等;
- 回归测试:把以前做过的测试及返国的错再测一遍(往往是自动化测试)
对于开发来说
-
测试要自己做,绝不能让用户成了你的测试
-
写完代码后先自测;绝对不要因为赶进度而不自测,如果被人发现基本错误,那就尴尬了
-
-
除了基本输入外,还要努力构想更多的边界条件
-
思考函数输入值的有效范围
-
如A方法的入参范围为[-10,10],那么还要测测-13 14等等
-
-
小心可能对不可变量造成影响的入参
-
即不能让减少或增加的两方增减量不同,如 A给B转账,A-10元,B+10元,不变量就是这两个数字加起来=0
-
-
-
测似接口的语义,而不是当前实现的具体行为
-
工作中看别人代码时同理,应注重语义而不是具体行为
学习别人代码实现、编程风格时,与之相反
-
-
对重要模块,编写时就要做到基本的性能测试
-
桥的主要功能是承重,所以搭桥时就要考虑使用的材料能承受多少力
-
-
对程序交付以后出现的问题和BUG,对齐的测试程序也要保留或提交到代码库,保证回归测试可以自动运行这个测试