Upgrade to Pro — share decks privately, control downloads, hide ads and more …

unit tests in ruby

SiweiShen
January 03, 2013

unit tests in ruby

introduced how to write basic unit tests and how to fasten the execution speed.

SiweiShen

January 03, 2013
Tweet

More Decks by SiweiShen

Other Decks in Technology

Transcript

  1. 什 要用 元 ? 为 么 单 测试 Why UT?

    ➲ 1. 把 手 操作 下来, 成自 。 动 记录 变 动 Manual Operations => Automatic ➲ 2. 可以多次运行,是持 集成 的基 。 续 测试 础 The Basic of Continous Integration ➲ 3. 运行方便,极大减 程序 担。 轻 员负 Save developer's life.
  2. 比 对 IRB: > a = 1 > b =

    2 > puts a + b > 3 Unit test: def test_should_show_1_add_2 a = 1; b = 2; assert a+b == 3 end
  3. 中的 现实 问题 Problems we met 某个 目, 始了一年, 运行需要与

    项 开 3 个外部系 配合: 统 An existing app interacting with 3 external systems: ➲ 1. web service system ➲ 2. authentication system ➲ 3. authorization system
  4. 中的 现实 问题 The situation of test cases. 元 的情况:

    单 测试 ➲ 1. 400 test cases. 2. too slow. 20+ minutes. 3. not stable , 5% 的 WEB SERVICE test cases will fail.
  5. 后果 Results ➲ 人 越来越不想运行 元 。 开发 员 单

    测试 Developers don't want to use Unit tests. ➲ 程中,容易走神。( 开发过 20 分 的 ) 钟 时间 Developers often lost their focus during the coding. ➲ 出 率太高。 错 Not stable 直接 致了,系 以 ,想想就 大。 导 统难 维护 头 用 成 人 ,体 十分不好。 户 为测试 员 验
  6. 解决方案 Solutions 目 : 短 元 运行的 。 标 缩

    单 测试 时间 Target :shorten the running time. 手段: 使用 模 象 和方法。 拟对 ➲ 原来: 用一次,需要 调 15 秒。 Before : 15 s ➲ 模 象: 拟对 0.00xx 秒。 Now: 0.000x s 1. Mock : for objects. 2. Stub : for methods.
  7. Mock Object Real object: ( cost 15 seconds) class DeviceResource

    def query(parameters) return json.decode(service(parameters)) end end Mock object: ( 0.000x seconds) class DeviceResource def query(parameters) return “{ status: success, id: 3 }” end end
  8. Stub a method def get_name return “Jim” end get_name #

    => “Jim” require 'rspec-mock' stub(:get_name).and_return (“Kate”) get_name # => “Kate”
  9. Two Mode for Running the Test ➲ 1. the mock

    mode: $ rpsec spec ➲ 2. also supports the real mode: $ rspec spec with_real_webservice=true
  10. The result ➲ 目更好了 项 Project becomes better: 1. 代

    量更高 码质 .higher code quality. 2. 速度更快 开发 faster development & delivery. 3. 更少。用 更 意 错误 户 满 . less bugs.
  11. 结论 Conclusion ➲ 是使用 元 。 总 单 测试 Always

    use unit tests. ➲ 元 :可重 ,速度快, 定。( 让单 测试 复 稳 make unit tests faster, stable and reusable )