legacy tdd simplify-ken fang- iji
DESCRIPTION
TRANSCRIPT
如何在既有系统,有效的进行敏捷测试驱动开发
Ken Fangg
方俊贤 (Ken Fang)基本资料
有将近十二年软件开发的经验.任职于 IJI, IBM-Rational, Borland 与 Telelogic 期间, 主要是协助客户从需求管理与 g 期间, 主要是协助客户从需求管理, 架构优化, 自动化测试, 敏捷测试驱动开发与持续集成. 客户群主要来自半导体, 电信产业与研究单位
于 Illinois Institute of Technology, Chicago, USA 获得于 Illinois Institute of Technology, Chicago, USA 获得信息科学硕士
当前居住在深圳, 持续与客户为创造更高质量的软件而努力努力
Ivar Jacobson International,008
议题
• 敏捷测试驱动开发的迷思
• 新旧代码区隔新旧代码区隔
• 单元测试的迷思
• All PairsAll Pairs• 工作迷思
• 区分出那些测试用例正在进行开发,测试区分出那些测试用例正在进行开发,测试
• 开发与测试的迷思
• 测试开发同是一家人• 测试开发同是 家人
Ivar Jacobson International,008
3
敏捷测试驱动开发的迷思敏捷测试驱动开发的迷思
–新旧代码区隔
Ivar Jacobson International,008
敏捷测试驱动开发的迷思
Test
只是在既有系统不停的加代码,加测试....
TestTest Test
C d C dCode Code Code
Ivar Jacobson International,008
小毛驴
我有 只小毛驴 我从来也不骑我有一只小毛驴,我从来也不骑
有 血来 著 赶集有一天我心血来潮骑著去赶集
我手里拿著小皮鞭我心里正得意
不知怎么哗拉拉拉拉我摔了一身泥
Ivar Jacobson International,008
新旧代码区隔
• 新增功能的代码不应腐败既有系统(Core Behavior)• 利用Decorator装饰新增功能;将新旧代码区隔利用 装饰新增功能;将新旧代码 隔
• 利用Adapter作适配调用
Adapter Decorator CoreBehaviour
Ivar Jacobson International,008
新旧代码区隔
既有系统:载物
新增功能:载人
Ivar Jacobson International,008
单元测试的迷思单元测试的迷思
–All Pairs
Ivar Jacobson International,008
单元测试的迷思
单元测试只针对类(Cl )• 单元测试只针对类(Class)– 测试效率与覆盖的问题
Ivar Jacobson International,008
All PairsList Textbox Checkbox1 (-x) Checkbox2 (x2)
0 1 On On1 2 Off Off1 2 Off Off2 33 44 ...5 966 977 988 998 999
• 如何找到下列Bug: List=0 & Checkbox1=On• 如何找到下列Bug: List=0 & Checkbox1=On• 分析:1)Textbox 的值是与 Bug 无关
• 2)与Bug有关的唯 测试用例是:List=0 & Checkbox1=On
Ivar Jacobson International,008
• 2)与Bug有关的唯一测试用例是:List=0 & Checkbox1=On
结对的排列组合,找到测试用例(场景)
NIST analysis of medical software device failures– Only three of 109 failure reports indicated thaty pmore than two conditions were required to cause thefailure (Wallace 2000)a u e ( a ace 000)
ALL PAIRS:ALL PAIRS:- Don't test all combinations
Test all pairs- Test all-pairs.
Ivar Jacobson International,008
结对的排列组合,找到测试用例(场景)
List Textbox Checkbox1 ( x) Checkbox2 (x2)
分类测试变量的值
List Textbox Checkbox1 (-x) Checkbox2 (x2)
0 Valid int On On
Any other Invalid int Off Off
AlphaAlpha
Ivar Jacobson International,008
结对的排列组合,找到测试用例(场景)
Textbox(3) List(2) Negative(2) Square(2)Valid integer 0 On CheckedValid integer 0 On CheckedValid integer Other Off Unchecked
Invalid integer 0 Off CheckedInvalid integer Other On Unchecked
Alpha 0 On UncheckedAlpha 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 PairsC. 區分出那些測試用例正在進行開發,測試
D. 測試開發同是一家人測試開發同是 家人
• 持续改进持续改进...
Ivar Jacobson International,008