zoukankan      html  css  js  c++  java
  • 测试

    测试分类

    • 单元测试 (深度 █) (广度 ▂)
    • 集成测试 (深度 ▆) (广度 ▃)
    • 皮下/端到端测试 (深度 ▃) (广度 ▆)
    • UI测试 (深度 ▂) (广度 █))

    单元测试

    单元在每个编程语言定义不一样, 可是是一个函数, 一个模块, 一个包或者一个类, 甚至一个对象.
    单元测试的独立性很重要, 他们不依赖其他单元, 假设依赖也需要mock另一个单元

    它具有很好的深度,但是对整个应用来说它不具备很好的覆盖面。

    集成测试

    它没有单元测试那么细致,但是具有相对较好的测试覆盖面。例如它可以测试功能的组合,以及像数据库或文件系统这样的外部资源等。

    皮下/端到端测试

    这种测试作用于UI层的下面一层,这也意味着它对整个应用来说有很好的覆盖率,但是深度欠佳。那一个MVC结构的应用来说,它就是针对刚好在Controller下面一层的测试,对于Web service来说,它就是对节点下面那层的测试。

    UI测试

    它的测试覆盖面很广,直接从UI层面进行测试,但是深度欠佳。

    黑盒测试

    黑盒测试一般也被称为功能测试,黑盒测试要求测试人员将程序看作一个整体,不考虑其内部结构和特性,只是按照期望验证程序是否能正常工作。黑盒测试更接近用户使用的真实场景。

    黑盒测试还包含一些其他的测试方式,由于测试往往是不可穷举性的,因此如何如何设计测试用例保证测试覆盖尽可能多的场景

    • 常用的测试方法
    • 等价类划分, 在已有输入规则的情况下,确定合法输入与非法输入区间
    • 有效等价类: 登陆密码6位数字
    • 无效等价类: 位数>6,位数<6,全角数字,字母、特殊字符等……
    • 边界值分析, 根据输入输出范围的边界值进行测试
    • 边界值:6 ~ 12
    • 有效等价类: 位数[6-12]
    • 无效等价类:位数<6 位数>12
    • 错误推测
    • 异常分析

    白盒测试

    白盒测试是基于代码本身的测试,一般指对代码逻辑结构的测试。白盒测试是在了解代码结构的前提下进行的测试,目的是遍历尽可能多的可执行路径,得出测试数据。白盒测试方法比较多,主要是逻辑覆盖,即检查代码的每一行、每一次判断结果。

    逻辑覆盖方式从发现错误能力上排序主要有以下几种:

    1. 语句覆盖 (让程序执行到每一行语句)
    2. 判定覆盖 (让每一个判断语句满足真假)
    3. 条件覆盖 (让每一个判断语句里面的每一个条件都取到真假值)
    4. 判定/条件覆盖 (同时满足2和3)
    5. 条件组合覆盖 (判断语句中条件的每种组合至少出现一次)
    6. 路径覆盖 (覆盖程序每一条执行路径)

    前端单元测试

    测试环境

    JSDOM
    优点: 速度快, 不需要浏览器启动
    缺点: 无法测试如seesion或cookie等相关操作

    PhantomJs

    基于PhantomJs等无头浏览器

    优点: 速度相对较快, 并且具有真实的DOM环境
    缺点: 同样不在真实浏览器中运行,难以调试,并且项目issue非常多,puppeteer发布后作者宣布不再维护

    Karma
    优点: 配置简单,能在真实的浏览器中运行测试,并且karma能将测试代码在多个浏览器中运行,同时方便调试
    缺点: 唯一的缺点就是相对前两者运行稍慢,但是在单元测试可接受范围内

    测试工具

    • 测试平台
    • karma
    • 测试框架
    • mocha
    • jest (无法和Karma进行集成)
    • 测试辅助工具
    • Enzyme Airbnb公司提供的React 测试工具,提供了Shallow Rendering(浅渲染) | Full Rendering (全渲染)| Static Rendering (静态渲染)几种方式来渲染方式来测试
    • 断言库 – Chai
    • 测试替身 - Sinon、testDouble等工具提供了如测试桩、拦截模拟请求、”时间旅行“等功能,主要用于解决”函数不纯”(比如测试回调是否被正确调用,XHR是否正确发起请求,时间延迟后函数行为是否正确)的测试问题。
    • 测试覆盖率工具
    • istanbul
    • istanbul-instrumenter-loader

    脚注

  • 相关阅读:
    下面这段java的源代码的意思
    Swing高级JInternalFrameTest内部窗体
    (转)为什么水平滚动条显示不了
    创建主窗体(转)
    javax.swing.JOptionPane.showMessageDialog() 方法
    Java图形界面设计
    java 做项目时遇到的一些问题
    selectmethod=cursor的含义及其使用
    java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver://localhost:1433;
    10.24
  • 原文地址:https://www.cnblogs.com/xueyoucd/p/10115134.html
Copyright © 2011-2022 走看看