前后端分离测试
为什么要做前后端分离测试
-
无法清晰知道开发的实现逻辑,以需求规格为标准开展测试,测试不充分,受限于需求规格的高度(经常有一句话需求)
-
开发偷偷上代码或者修改后给出的影响面不足导致测试范围不足
-
前后端联调时,测试无法开始功能测试
-
前端修改逻辑,需要造数据去验收,有可能造数据的时间远远大于测试时间
-
前端页面一些异常情况功能测试难覆盖,如:接口超时,504,接口响应某些字段缺失
-
...
后端测试/白盒测试
后端测试/白盒测试可以实现精准测试,一句话概括就是:测试用例和代码之间的追溯
提高效率,提高覆盖度,明确问题归属方。测试场景充分
提效:
-
测试时间前移:在联调期间介入后端测试,早发现早解决
-
发现后端bug可以定位原因,减少开发修改bug的时间(一个Bug开发修改很多次都没改好,因为开发不知道具体什么原因导致的)
-
知道代码改动点和影响范围,减少解决bug后非必要的功能回归,精准回归
提高覆盖度:
-
后端可以覆盖到设计中不详尽的部分,如 各场景下的sql、sql是否使用索引
-
确认所有代码都是测试过的
其他场景测试更充分:
-
性能问题(SQL索引,深分页问题)
-
定时任务
-
MQ消费
-
多线程问题
-
锁问题
-
...
白盒测试和单元测试
单元测试特点
-
开发代码与需求不符或遗漏了功能,单元测试的时候就不会去设计对应的测试用例,这样也就会造成测试盲区。
-
紧密耦合的代码难以隔离。
-
桩代码、mock代码量大,占用开发时间。
-
代码量大,代码本身的可测试性较差,通常代码的可测试性和代码规模成正比。
-
代码覆盖率越往后越难提高。
白盒测试与单元测试的区别
-
白盒测试由测试执行,单元测试由开发执行,执行人不同。
-
开发做单元测试是针对代码的测试,测试做白盒测试是做需求+代码的测试。
-
如果开发的代码与需求不符,或者遗漏了某些功能,开发就不会去设计对应的测试用例,单元测试就不能发现此类问题,造成测试盲区。而测试主导的白盒测试可以避免此问题。
前端测试
熟悉业务逻辑后,
-
通过抓包工具mock接口返回值测试前端页面的业务逻辑,
-
通过抓包工具Mock接口的异常情况,超时。504等
抓包工具如:charles的breakpoint ,map local,map remote功能
怎么做白盒测试
静态测试
简单的代码,可以直接通过静态阅读代码了解实现逻辑。
动态测试
本地跑一下代码测试,虽然代码可能看着没问题,但是谁也保不准会看漏掉,代码只有跑一下才知道有没有问题
开发基础知识准备
1、charles熟练使用
2、JAVA基础
3、springboot、springcloud、Mybatis等开发基础
4、mq了解
5、postman
6、redis
7、git
8、maven
难点
1、在联调期间介入后端测试,通过接口串联业务流程,需要熟悉需求的业务流程,
测试代码实现是否满足需求,所以在进行白盒测试前,我们依然需要写功能用例,然后在进行白盒测试时带着我们的功能用例去进行测试,同时考虑代码实现合理性和功能问题;切记不要太沉入到开发的代码中而忘记我们本来的功能用例。
2、后端业务代码量大,通读代码需要时间
3、敏捷迭代,前后端分离项目适用