SlideShare a Scribd company logo
1 of 21
Download to read offline
如何在既有系统,有效的进行敏捷测试驱动开发




                 Ken Fang
                        g
方俊贤 (Ken Fang)基本资料

              有将近十二年软件开发的经验.任职于 IJI, IBM-Rational,
              Borland 与 Telelogic 期间, 主要是协助客户从需求管理
                              g
              , 架构优化, 自动化测试, 敏捷测试驱动开发与持续集成
              . 客户群主要来自半导体, 电信产业与研究单位

              于 Illinois Institute of Technology, Chicago, USA 获得
              信息科学硕士

              当前居住在深圳, 持续与客户为创造更高质量的软件而
              努力



 Ivar Jacobson International,
008
议题

          •          敏捷测试驱动开发的迷思
                     • 新旧代码区隔
          •          单元测试的迷思
                     • All Pairs
          •          工作迷思
                     • 区分出那些测试用例正在进行开发,测试
          •          开发与测试的迷思
                     • 测试开发同是 家人
                       测试开发同是一家人




 Ivar Jacobson International,               3
008
敏捷测试驱动开发的迷思
                                   –新旧代码区隔




 Ivar Jacobson International,
008
敏捷测试驱动开发的迷思

            只是在既有系统不停的加代码,加测试....
                                              Test
                                       Test
                                Test




                                Code   Code
                                       C d    Code
                                              C d




 Ivar Jacobson International,
008
小毛驴
      我有一只小毛驴,我从来也不骑
      我有 只小毛驴 我从来也不骑

      有一天我心血来潮骑著去赶集
      有    血来  著 赶集

      我手里拿著小皮鞭我心里正得意

      不知怎么哗拉拉拉拉我摔了一身泥




 Ivar Jacobson International,
008
新旧代码区隔

  • 新增功能的代码不应腐败既有系统(Core Behavior)
  • 利用Decorator装饰新增功能;将新旧代码区隔
    利用         装饰新增功能;将新旧代码 隔
  • 利用Adapter作适配调用




                                                      Core
                                Adapter   Decorator
                                                      Behaviour




 Ivar Jacobson International,
008
新旧代码区隔




                                          既有系统:载物


                                新增功能:载人




 Ivar Jacobson International,
008
单元测试的迷思
                                  –All Pairs




 Ivar Jacobson International,
008
单元测试的迷思
      • 单元测试只针对类(Cl
        单元测试只针对类(Class)
                      )
        – 测试效率与覆盖的问题




 Ivar Jacobson International,
008
All Pairs
                      List            Textbox   Checkbox1 (-x)         Checkbox2 (x2)
      0                         1               On               On
      1                         2               Off              Off
      2                         3
      3                         4
      4                         ...
      5                         96
      6                         97
      7                         98
      8                         99
      9

    • 如何找到下列Bug: List=0 & Checkbox1=On
    • 分析:1)Textbox 的值是与 Bug 无关
    •  2)与Bug有关的唯 测试用例是:List=0 & Checkbox1=On
       2)与Bug有关的唯一测试用例是:List=0
 Ivar Jacobson International,
008
结对的排列组合,找到测试用例(场景)

               NIST analysis of medical software device failures
                 – Only three of 109 failure reports indicated that
                        y                      p
                 more than two conditions were required to cause the
                 failure ( a ace 2000)
                  a u e (Wallace 000)

               ALL PAIRS:
                     - Don't test all combinations
                     - Test all-pairs.
                            all pairs




 Ivar Jacobson International,
008
结对的排列组合,找到测试用例(场景)

      分类测试变量的值
                          List           Textbox     Checkbox1 ( x)
                                                               (-x)     Checkbox2 (x2)

      0                          Valid int         On                 On

      Any other                  Invalid int       Off                Off

                                 Alpha




 Ivar Jacobson International,
008
结对的排列组合,找到测试用例(场景)

              Textbox(3)                List(2)         Negative(2)     Square(2)
      Valid integer             0                 On                  Checked
      Valid integer             Other             Off                 Unchecked


      Invalid integer           0                 Off                 Checked
      Invalid integer           Other             On                  Unchecked


      Alpha                     0                 On                  Unchecked
      Alpha                     Other             Off                 Checked


          依 All Pairs, 只需 6 个 试 例
                        需 个测试用例



 Ivar Jacobson International,
008
工作迷思
                                –区分出那些测试用例正在进行开发,测试




 Ivar Jacobson International,
008
工作迷思: 直到测试通过.....




                                我已三天没回家....
                                我已三天没回家




 Ivar Jacobson International,
008
区分出那些测试用例正在进行开发,测试


          持续集成环境
          Name                  Error   Failure   Test
          Test-Donkey           0       0         60
          Test-ERP              0       0         6
          WIP-Donkey            6       3         30
          WIP-ERP               0       0         0
          Total                 6       3         96




 Ivar Jacobson International,
008
开发与测试的迷思
                                –测试开发同是一家人




 Ivar Jacobson International,
008
开发与测试的迷思

          • 开发人员
                     – 测试是测试人员的事
          • 测试人员
                     – 测试是开发人员的事




 Ivar Jacobson International,
008
测试开发同是一家人

          • IJI 客户的故事
             – 测试人员准备测试数据 环境
               测试人员准备测试数据,环境
             – 测试人员审视测试用例
             – 开发人员开发测试代码与自动化测试工具
             – 开发人员执行测试




 Ivar Jacobson International,
008
结论

    A.         新舊代碼區隔
    B.         All Pairs
    C.         區分出那些測試用例正在進行開發,測試
    D.         測試開發同是 家人
               測試開發同是一家人


    • 持续改进
      持续改进...




 Ivar Jacobson International,
008

More Related Content

More from Odd-e

Business caseforagile agiletourbeijing
Business caseforagile agiletourbeijingBusiness caseforagile agiletourbeijing
Business caseforagile agiletourbeijingOdd-e
 
打造真正的软件
打造真正的软件打造真正的软件
打造真正的软件Odd-e
 
培育软件的可测试性
培育软件的可测试性培育软件的可测试性
培育软件的可测试性Odd-e
 
做一个对产品负责的PO
做一个对产品负责的PO做一个对产品负责的PO
做一个对产品负责的POOdd-e
 
庖丁解牛用户故事 (Splitting Your User Story)
庖丁解牛用户故事 (Splitting Your User Story)庖丁解牛用户故事 (Splitting Your User Story)
庖丁解牛用户故事 (Splitting Your User Story)Odd-e
 
Simplicity (简洁的艺术)
Simplicity (简洁的艺术)Simplicity (简洁的艺术)
Simplicity (简洁的艺术)Odd-e
 
鱼与熊掌 - 软件质量 vs 交付速度
鱼与熊掌 - 软件质量 vs 交付速度鱼与熊掌 - 软件质量 vs 交付速度
鱼与熊掌 - 软件质量 vs 交付速度Odd-e
 
Find your mirror
Find your mirror Find your mirror
Find your mirror Odd-e
 
敏捷教练如何运用欣赏式探询(AI)
敏捷教练如何运用欣赏式探询(AI)敏捷教练如何运用欣赏式探询(AI)
敏捷教练如何运用欣赏式探询(AI)Odd-e
 
敏捷 - 领导力的救赎
敏捷 - 领导力的救赎敏捷 - 领导力的救赎
敏捷 - 领导力的救赎Odd-e
 
Taking the business along for a ride
Taking the business along for a rideTaking the business along for a ride
Taking the business along for a rideOdd-e
 
分布式设计团队的敏捷之道
分布式设计团队的敏捷之道分布式设计团队的敏捷之道
分布式设计团队的敏捷之道Odd-e
 
Scrum敏捷实施实例讲解 out_softingtemplate.ppt_
 Scrum敏捷实施实例讲解 out_softingtemplate.ppt_ Scrum敏捷实施实例讲解 out_softingtemplate.ppt_
Scrum敏捷实施实例讲解 out_softingtemplate.ppt_Odd-e
 
Terry yin adding unit-test_to_legacy_code
Terry yin   adding unit-test_to_legacy_codeTerry yin   adding unit-test_to_legacy_code
Terry yin adding unit-test_to_legacy_codeOdd-e
 
张克强 敏捷的过程能力
张克强   敏捷的过程能力张克强   敏捷的过程能力
张克强 敏捷的过程能力Odd-e
 
杨根兴 软件过程改进与敏捷方法
杨根兴   软件过程改进与敏捷方法杨根兴   软件过程改进与敏捷方法
杨根兴 软件过程改进与敏捷方法Odd-e
 
阳陆育 大型软件产品的敏捷案例分享
阳陆育 大型软件产品的敏捷案例分享阳陆育 大型软件产品的敏捷案例分享
阳陆育 大型软件产品的敏捷案例分享Odd-e
 
Mike 关于敏捷的一些误解
Mike   关于敏捷的一些误解Mike   关于敏捷的一些误解
Mike 关于敏捷的一些误解Odd-e
 
Ethan huang 全民qa
Ethan huang   全民qaEthan huang   全民qa
Ethan huang 全民qaOdd-e
 
Li kai roll-out scrum in an intel organization
Li kai   roll-out scrum in an intel organizationLi kai   roll-out scrum in an intel organization
Li kai roll-out scrum in an intel organizationOdd-e
 

More from Odd-e (20)

Business caseforagile agiletourbeijing
Business caseforagile agiletourbeijingBusiness caseforagile agiletourbeijing
Business caseforagile agiletourbeijing
 
打造真正的软件
打造真正的软件打造真正的软件
打造真正的软件
 
培育软件的可测试性
培育软件的可测试性培育软件的可测试性
培育软件的可测试性
 
做一个对产品负责的PO
做一个对产品负责的PO做一个对产品负责的PO
做一个对产品负责的PO
 
庖丁解牛用户故事 (Splitting Your User Story)
庖丁解牛用户故事 (Splitting Your User Story)庖丁解牛用户故事 (Splitting Your User Story)
庖丁解牛用户故事 (Splitting Your User Story)
 
Simplicity (简洁的艺术)
Simplicity (简洁的艺术)Simplicity (简洁的艺术)
Simplicity (简洁的艺术)
 
鱼与熊掌 - 软件质量 vs 交付速度
鱼与熊掌 - 软件质量 vs 交付速度鱼与熊掌 - 软件质量 vs 交付速度
鱼与熊掌 - 软件质量 vs 交付速度
 
Find your mirror
Find your mirror Find your mirror
Find your mirror
 
敏捷教练如何运用欣赏式探询(AI)
敏捷教练如何运用欣赏式探询(AI)敏捷教练如何运用欣赏式探询(AI)
敏捷教练如何运用欣赏式探询(AI)
 
敏捷 - 领导力的救赎
敏捷 - 领导力的救赎敏捷 - 领导力的救赎
敏捷 - 领导力的救赎
 
Taking the business along for a ride
Taking the business along for a rideTaking the business along for a ride
Taking the business along for a ride
 
分布式设计团队的敏捷之道
分布式设计团队的敏捷之道分布式设计团队的敏捷之道
分布式设计团队的敏捷之道
 
Scrum敏捷实施实例讲解 out_softingtemplate.ppt_
 Scrum敏捷实施实例讲解 out_softingtemplate.ppt_ Scrum敏捷实施实例讲解 out_softingtemplate.ppt_
Scrum敏捷实施实例讲解 out_softingtemplate.ppt_
 
Terry yin adding unit-test_to_legacy_code
Terry yin   adding unit-test_to_legacy_codeTerry yin   adding unit-test_to_legacy_code
Terry yin adding unit-test_to_legacy_code
 
张克强 敏捷的过程能力
张克强   敏捷的过程能力张克强   敏捷的过程能力
张克强 敏捷的过程能力
 
杨根兴 软件过程改进与敏捷方法
杨根兴   软件过程改进与敏捷方法杨根兴   软件过程改进与敏捷方法
杨根兴 软件过程改进与敏捷方法
 
阳陆育 大型软件产品的敏捷案例分享
阳陆育 大型软件产品的敏捷案例分享阳陆育 大型软件产品的敏捷案例分享
阳陆育 大型软件产品的敏捷案例分享
 
Mike 关于敏捷的一些误解
Mike   关于敏捷的一些误解Mike   关于敏捷的一些误解
Mike 关于敏捷的一些误解
 
Ethan huang 全民qa
Ethan huang   全民qaEthan huang   全民qa
Ethan huang 全民qa
 
Li kai roll-out scrum in an intel organization
Li kai   roll-out scrum in an intel organizationLi kai   roll-out scrum in an intel organization
Li kai roll-out scrum in an intel organization
 

Legacy tdd simplify-ken fang- iji

  • 2. 方俊贤 (Ken Fang)基本资料 有将近十二年软件开发的经验.任职于 IJI, IBM-Rational, Borland 与 Telelogic 期间, 主要是协助客户从需求管理 g , 架构优化, 自动化测试, 敏捷测试驱动开发与持续集成 . 客户群主要来自半导体, 电信产业与研究单位 于 Illinois Institute of Technology, Chicago, USA 获得 信息科学硕士 当前居住在深圳, 持续与客户为创造更高质量的软件而 努力 Ivar Jacobson International, 008
  • 3. 议题 • 敏捷测试驱动开发的迷思 • 新旧代码区隔 • 单元测试的迷思 • All Pairs • 工作迷思 • 区分出那些测试用例正在进行开发,测试 • 开发与测试的迷思 • 测试开发同是 家人 测试开发同是一家人 Ivar Jacobson International, 3 008
  • 4. 敏捷测试驱动开发的迷思 –新旧代码区隔 Ivar Jacobson International, 008
  • 5. 敏捷测试驱动开发的迷思 只是在既有系统不停的加代码,加测试.... Test Test Test Code Code C d Code C d Ivar Jacobson International, 008
  • 6. 小毛驴 我有一只小毛驴,我从来也不骑 我有 只小毛驴 我从来也不骑 有一天我心血来潮骑著去赶集 有 血来 著 赶集 我手里拿著小皮鞭我心里正得意 不知怎么哗拉拉拉拉我摔了一身泥 Ivar Jacobson International, 008
  • 7. 新旧代码区隔 • 新增功能的代码不应腐败既有系统(Core Behavior) • 利用Decorator装饰新增功能;将新旧代码区隔 利用 装饰新增功能;将新旧代码 隔 • 利用Adapter作适配调用 Core Adapter Decorator Behaviour Ivar Jacobson International, 008
  • 8. 新旧代码区隔 既有系统:载物 新增功能:载人 Ivar Jacobson International, 008
  • 9. 单元测试的迷思 –All Pairs Ivar Jacobson International, 008
  • 10. 单元测试的迷思 • 单元测试只针对类(Cl 单元测试只针对类(Class) ) – 测试效率与覆盖的问题 Ivar Jacobson International, 008
  • 11. All Pairs List Textbox Checkbox1 (-x) Checkbox2 (x2) 0 1 On On 1 2 Off Off 2 3 3 4 4 ... 5 96 6 97 7 98 8 99 9 • 如何找到下列Bug: List=0 & Checkbox1=On • 分析:1)Textbox 的值是与 Bug 无关 • 2)与Bug有关的唯 测试用例是:List=0 & Checkbox1=On 2)与Bug有关的唯一测试用例是:List=0 Ivar Jacobson International, 008
  • 12. 结对的排列组合,找到测试用例(场景) NIST analysis of medical software device failures – Only three of 109 failure reports indicated that y p more than two conditions were required to cause the failure ( a ace 2000) a u e (Wallace 000) ALL PAIRS: - Don't test all combinations - Test all-pairs. all pairs Ivar Jacobson International, 008
  • 13. 结对的排列组合,找到测试用例(场景) 分类测试变量的值 List Textbox Checkbox1 ( x) (-x) Checkbox2 (x2) 0 Valid int On On Any other Invalid int Off Off Alpha Ivar Jacobson International, 008
  • 14. 结对的排列组合,找到测试用例(场景) Textbox(3) List(2) Negative(2) Square(2) Valid integer 0 On Checked Valid integer Other Off Unchecked Invalid integer 0 Off Checked Invalid integer Other On Unchecked Alpha 0 On Unchecked Alpha Other Off Checked 依 All Pairs, 只需 6 个 试 例 需 个测试用例 Ivar Jacobson International, 008
  • 15. 工作迷思 –区分出那些测试用例正在进行开发,测试 Ivar Jacobson International, 008
  • 16. 工作迷思: 直到测试通过..... 我已三天没回家.... 我已三天没回家 Ivar Jacobson International, 008
  • 17. 区分出那些测试用例正在进行开发,测试 持续集成环境 Name Error Failure Test Test-Donkey 0 0 60 Test-ERP 0 0 6 WIP-Donkey 6 3 30 WIP-ERP 0 0 0 Total 6 3 96 Ivar Jacobson International, 008
  • 18. 开发与测试的迷思 –测试开发同是一家人 Ivar Jacobson International, 008
  • 19. 开发与测试的迷思 • 开发人员 – 测试是测试人员的事 • 测试人员 – 测试是开发人员的事 Ivar Jacobson International, 008
  • 20. 测试开发同是一家人 • IJI 客户的故事 – 测试人员准备测试数据 环境 测试人员准备测试数据,环境 – 测试人员审视测试用例 – 开发人员开发测试代码与自动化测试工具 – 开发人员执行测试 Ivar Jacobson International, 008
  • 21. 结论 A. 新舊代碼區隔 B. All Pairs C. 區分出那些測試用例正在進行開發,測試 D. 測試開發同是 家人 測試開發同是一家人 • 持续改进 持续改进... Ivar Jacobson International, 008