白盒测试

白盒测试

写在最初

  • 你设计的测试用例是好的测试用例吗?

  • 作为测试我们怎么确保经由我们测试上线的项目,是经过充分测试的项目?

为什么我们要做白盒测试

a、测试清楚、透彻

  • 完全了解开发实现逻辑,对齐三方思路:产品、开发、测试

  • 测试场景更完整:代码分支尽可能穷尽、清晰完整的等价类划分、异常场景分析,可覆盖开发设计方案不详尽的部分

  • 测试手段更多元化:mock(依靠外界的功能可以本地代码mock)、复杂方法代码测试、debug方式等

  • 前后端分离测试:前端可以通过map local方式mock接口响应来测试,后端通过本地启动服务测试,不需要频繁构造数据,bug及其归属也更清晰

b、定位问题发生的原因,减少开发修改bug的时间,更精准的功能回归,提高效率

c、确保测试内容和上线内容一致(code review)

d、减少非必要的功能回归,在进行白盒测试期间就可以知道代码改动点和影响范围

e、测试时间前移:在联调期间介入后端测试,问题早发现早解决,降低风险

白盒测试不只是测试代码

身为测试工程师,重要的是测试代码实现是否满足需求,所以在进行白盒测试前,我们依然需要写功能用例,然后在进行白盒测试时带着我们的功能用例去进行测试,同时考虑代码实现合理性和功能问题;切记不要太沉入到开发的代码中而忘记我们本来的功能用例

难点:

  • 需要通读后端代码,有一定学习成本,上手慢
  • 在联调期间介入后端测试,通过接口串联业务流程,需要熟悉需求的业务流程,需要抽象思维

白盒测试与单元测试

单元测试特点

  • 开发代码与需求不符或遗漏了功能,单元测试的时候就不会去设计对应的测试用例,这样也就会造成测试盲区。

  • 并不是所有的代码都要进行单元测试,通常只有底层模块或者核心模块的测试中才会采用单元测试。全部代码都单元测试的话,单元测试的代码量太大。
  • 紧密耦合的代码难以隔离。
  • 桩代码、mock代码量大,占用开发时间。

  • 代码量大,代码本身的可测试性较差,通常代码的可测试性和代码规模成正比。

  • 代码覆盖率越往后越难提高。

白盒测试与单元测试的区别

  • 白盒测试由测试执行,单元测试由开发执行,执行人不同。

  • 开发做单元测试是针对代码的测试,测试做白盒测试是做需求+代码的测试。

  • 如果开发的代码与需求不符,或者遗漏了某些功能,开发就不会去设计对应的测试用例,单元测试就不能发现此类问题,造成测试盲区。而测试主导的白盒测试可以避免此问题。

代码产生错误的常见原因

1、条件分支:缺少某个分支、分支分类错误、分支处理错误

2、循环处理:每次循环处理、循环次数、停止循环处理

3、函数调用:参数、返回值、调用时异常

4、正常输入的处理

5、特殊边界输入的处理

6、非法、异常输入的处理

7、数据对象的处理:copy对象,对象转换

怎么做白盒测试

静态测试

简单的代码,可以直接通过静态阅读代码了解实现逻辑。

动态测试

还是建议本地跑一下代码测试,虽然代码可能看着没问题,但是谁也保不准会看漏掉,代码只有跑一下才知道有没有问题

开发基础知识准备

  • 工具

  • 框架

    • Spring Boot

      • 知道工程本地启动入口,以及怎么访问本地接口

      • 了解MVC概念,知道controller层、service层、mapper层

      • 知道项目配置文件application.properties/ application.yml存放位置

      • 熟悉常用注解

    • Spring Cloud

      • 了解微服务概念,知道Feign接口调用方式

    • MyBatis

      • 知道JAVA类和mapper.xml的映射关系

      • 知道MyBatis常用语法

  • 知识

    环境搭建

    • Maven本地配置及环境搭建:下载maven最新版本,配置环境变量

    • IDEA设置maven环境:设置maven home path 和settings file上面配置maven和settings.xml

    img

    • Git环境及gitlab的ssh 公钥配置

      • 下载git,配置环境变量

      • 配置ssh公钥

      • Apollo环境配置(看公司环境是否使用Apollo)

        • 公司的项目配置都放在apollo里,本地启动各个工程时,本地需要配置默认访问Apollo的测试环境配置

        • 在 /opt/settings 新建文件 server.properties,内容如下(只访问测试环境)

      env=test
      • Kafka

        • 可以本地使用Spring boot写producer 和 consumer,进行生产和消费测试

      测试步骤

      项目提测要求

      1、改动工程 + 提测分支

      2、改动点罗列

      按项目进行差异性代码Diff:提测分支和部署分支比较,知道代码改动和影响范围

      操作:工程 -> Git ->Compare with Branch ,选择分支:origin/master

      测试分类

      • 接口(新增/修改)

        • 事务问题:数据库新增、更新
        • 性能问题:数据库查询、本地缓存和redis缓存

      • mq消费

      • 定时任务

posted @ 2022-05-05 20:49  huiyii  阅读(232)  评论(0编辑  收藏  举报