软件构造复习笔记-Part5 断言与调试

断言

  • 作用:允许程序在运行时检查自己,测试有关程序逻辑的假设,如前置条件、后置条件、不变量等,可将黑盒测试转换为白盒测试
  • 应用场合
    • 输入/输出参数落在预期范围内
    • 程序运行/结束时文件流的打开和关闭
    • 程序开始(结束)时文件处于开始(结束)
    • 文件流以只读、只写或读写方式打开
    • 输入变量的值不被方法改变
    • 判断指针不是空值
    • 判断数据结构是否是指定长度
    • 判断真值表是否初始化
    • 当一个方法开始执行时(或完成时)容器是空的(或满的)
    • 高度优化的复杂方法的结果与较慢但清晰编写的例程的结果相匹配
  • 注意:
    • 编译时加入-ea选项运行断言,-da关闭断言
    • 条件语句或开关没有涵盖所有可能的情况,最好使用断言来阻止非法事件
    • 可以在预计正常情况下程序不会到达的地方放置断言:assert false
    • 在开发和调试阶段设置断言,在软件发布时禁止断言
    • 断言有代价,需慎用,一般用于验证正确性,处理绝不应该发生的情况
    • 不能作为公共方法的检查,也不能有边界效应

黑盒测试用例的设计

  • 黑盒测试:在没有任何内部实现知识的情况下检查功能,而无需查看源代码
  • 测试用例:围绕规范和要求构建,一般来自软件的外部描述,包括规范,要求和设计参数,主要是功能性的
  • 等价类划分:将程序的输入域划分为可导出测试用例的数据类
    • 若一组对象自反、对称、传递,则为等价类
    • 可产生相似结果的输入集合中的一个可代替整个集合
    • 同理,对输出也可以划分等价类
    • 两个极端:每个分区只有一个测试用例,覆盖所有分区
  • 边界值分析:错误通常隐藏在边界中,如一位偏移、边界值需单独处理等

以注释的形式撰写测试策略

  • 在测试类的顶端写策略
    在这里插入图片描述
  • 在每个测试方法前说明测试用例是如何选择的
    在这里插入图片描述

JUnit 测试用例写法

  • @Before:每个测试方法前执行一次
  • @After:每个测试方法后执行一次
  • @Test:表明测试方法,内含Assert语句
    • @Test(expected=*.class):对错误的测试,expected的属性值是一个异常
    • @Test(timeout=xxx):测试方法在制定的时间之内没有运行完则失败
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值