zoukankan      html  css  js  c++  java
  • 单元測试中 Right-BICEP 和 CORRECT

    My Blog:http://www.outflush.com/


    在单元測试中,有6个总结出的值得測试的方面,这6个方面统称为 Right-BICEP。通过这6个方面的指导。能够较全然的測试出代码中的bug。本文就是简单的介绍 Right-BICEP 究竟指的哪6个方面,以及当中边界測试中的 CORRECT 助记短语。


    • Right – Are the results right? 结果是否正确?
    • B – are all the boundary conditions correct? 全部边界条件都是正确的么?
    • I – can you check the inverse relationships? 能否检查一下反向关联?
    • C – can you cross-check results using other means? 能够使用其它手段交叉检查一下结果?
    • E – can you force error conditions to happen? 能否够强制错误条件产生?
    • P – are performance characteristics within bounds?

      是否满足性能要求?


    Right Result

    对于測试而言,最首要的任务就是查看所期望的结果是否正确。


    Boundary Conditions 边界条件

    代码中的bug大多出如今边界条件附近。

    一些须要考虑的边界条件:

    • 全然伪造或者不一致的输入数据
    • 格式错误的数据
    • 空值或不完整的值
    • 一些与意料中的合理值相去甚远的值
    • 要求一个无反复值的序列,可是传入一个有反复值的序列
    • 要求一个有序许刘。可是传入一个无需序列
    • 事件到达的次序是错误的。或碰巧和期望的次序不一致

    边界条件助记短语 CORRECT

    • Conformance(一致性):值是否和预期一致。能够理解为当输入并非预期的标准数据时,被測试方法能否够正确输出预期结果(或抛出异常)。
    • Ordering(顺序性):值是否像应该的那样是无序或有序的。
    • Range(区间性):值是否位于合理的最小值和最大值之间。
    • Reference(依赖性):代码是否引用了一些不在代码本身控制范围之内的外部资源,当这些外部资源存在或不存在、满足或不满足时,代码能否够产生对应的预期结果。
    • Existence(存在性):值是否存在(是否为null、0、在一个集合中)。測试方法能否够处理值不存在的情况。

    • Cardinatity(基数性):是否恰好有足够的值。这里的基数指的是计数。測试方法能否够正确计数,并检查最后的计数值。
    • Time(相对或绝对时间性):全部事情的发生是否是有序的、是否在正确的时刻、是否恰好及时。与时间相关问题有:相对时间(时间上的顺序)、绝对时间(消耗的时间和钟表上的时间)、并发问题。

      比如:方法调用的时间顺序、代码超时、不同的本地时间、多线程同步等。

    • 注意:在考虑边界条件时,须要同一时候考虑方法的传入參数以及其内部数据。


    Inverse Relationships 检查反向关联

    即使用反向的逻辑关系验证某些方法。

    比方检查一个计算平方根的函数。能够通过对其结果进行平方来检查。可是要注意的是,应该使用不同与被測试方法的原理来编写反向測试,由于假设原理错误可能会使得測试与被測试方法都包括bug。


    Cross-Check 使用其它手段交叉检查结果

    通过其它经过验证的途径来測试当前被測试方法的结果是否正确

    比如被測试方法存在多个备用算法,这时选择被測试方法没有使用的,而且已经经过验证的算法在測试方法中使用。最后比較測试算法和被測试方法的结果是否一致。

    另外也能够通过一些数据从側面验证被測试方法结果是否正确。比如图书馆中借出的书籍数和在库的书籍数的总和是不变的,这时便能够使用交叉检查,即使用一种数量检查还有一种数量。


    Force Error 强制产生错误

    通过强制引发一些现实中的错误来測试代码是怎样处理这些错误,这些现实错误可能是:内存耗光、硬盘用满、时钟错误、断网等。


    Performance 性能特性

    即測试在数据量逐渐添加的时候。性能曲线能否达到预期(稳定)。


    參考资料:《单元測试之道Java版:使用JUnit》

查看全文
  • 相关阅读:
    mouse_event模拟鼠标滚轮
    润乾报表配置技术路线
    建筑 物件 开心背单词 读句子,单词,字母,看图例, 翻译,看动画
    文字过渡动画,曲线过渡动画,,使用这个插件assign shape keys
    运动锻炼 开心背单词 读句子,单词,字母,看图例, 翻译,看动画,学英语,轻松背单词,简单背单词
    blender293 内置插件 精度绘画控件,PDT学习003,pdt tangents 切线
    日常用品 背单词 读句子 看图片 读单词 读字母 翻译, 看动画 学英语
    blender293 内置插件 精度绘画控件,PDT学习 precision drawing tools
    乔布斯 背单词 02 读句子 单词 字母 翻译,看动画 学英语 名言 我菜顾我在,我菜故我在,blender加python
    狐狸 和 乌鸦 英语 朗读句子 背单词
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10579519.html
  • Copyright © 2011-2022 走看看