【软件构造复习3】测试、异常、并发

(一)Junit单元测试

  1. 分类
    白盒测试:对程序内部代码 结构的测试
    黑盒测试:对程序外部表现出来的行 为的测试
    2. 提倡测试优先编程的思想
    写规约 ~> 写测试用例 ~>写代码
  2. 测试策略
    (1)等价类划分
    (2)笛卡尔积全覆盖 / 每个等价类至少覆盖一次
    (3)边界值分析
  3. 测试用例
    @Test
    assertEquals(expected,actual)
    5练习
    例1整数乘法
    (1)正负角度划分:正负,正正,负负,负正
    (2)边界值分析:0,-1,1,很大的数
    例reverseEnd方法
    For example: reverseEnd(“Hello, world”, 5) returns “Hellodlrow ,”
    (1)等价类划分:start0 ,0<start<text.length,starttext.length(等价类划分满足规约)
    (二)异常
  4. error、checked异常、unchecked异常
  5. checked异常处理
    (1)声明(throws)、抛出(throw)、捕获(try…catch)、处理
  6. 自定义异常类
    (三)并发
  7. 进程和线程
  8. 多线程方法
    (1)sleep():线程进入休眠,不会释放锁
    (2)wait():线程释放锁进入等待列表,直到获得锁再次参与竞争
    (3)interrupt():向线程请求中断,线程设置中断状态。如果程序在sleep、wait中会抛出中断异常;如果程序正常执行则无影响
    (4)interrupted():检查中断状态,并设置为false—类方法
    (5)isinterrrupted():检查中断状态,不改变状态
    (6)join():让当前线程保持执行,直到其执行结束
    (7)notify():唤醒某个等待列表的线程
    (8)notifyAll():唤醒所有等待列表的线程
  9. 关于引发线程安全的原因:
    变量在外部多引用下读写数据产生竞争交错
    上述的数据:heap上的数据,(1)rep中的变量(基本类型(数组不安全)+对象类型(mutable类型不安全))(2)局部变量(若局部变量每次引用都会创建新的对象,则不存在问题;否则,注意对象类型依旧在堆上创建,可能存在风险)
    4 线程安全策略
    (1)限制共享:线程之间不共享数据
    (2)只共享immutable类型:使用不可变数据类型的不可变引用(final)
    (3)使用线程安全的mutable类型:synchronized包装类,
    注意1:不要绕过包装器,被包装对象使用匿名类
    注意2:保证了集合类中的每个方法是原子操作,但各种方法间的交错难以避免
     
    (4)锁与同步技术
    1.  根据线程安全的原则找出不满足线程安全的部分
  10. 将并行变成部分串行,上锁
    注意1:锁的粒度越大,越安全,但效率越低
    注意2:存在竞争的线程使用同一把锁
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值