真名:李国栋 淘宝花名:富 曲 : Fault injection 实现原理与应用.

Slides:



Advertisements
Similar presentations
迪士尼公主裙衫变化记. 《白雪公主和七个小孩人》 《白雪公主和七个小矮人》,是世界电影史上第一部长动 画片,也是迪士尼的第一部。《白雪公主》不仅为迪斯尼 带来了第一尊奥斯卡小人,更是拯救迪斯尼于水火的贵 人 —— 在经济大萧条的 1937 年的美国,《白雪公主》为迪 斯尼赚到了 850 万美元,这约等于现在的数亿美元!
Advertisements

月經異常的原因及警訊 組員: 陳少康、張康樂、許晉愷、何曄、方泠瑩、張 顓麟、蘇梓喬、溫鵬皓、林雅雯.
教務處註冊組 /7 (二) 10 : 00 至 15 : 00 止 ★ 6/8 彙整報名資料後, 6/9 向高中承 辦學校報名 ★ 因校內作業時間緊迫,逾時恕不 受理。 校內報名時間.
說明事項  大陸交換學習近況  大陸姐妹校介紹  申請資格和程序  研究生補助 大陸交換學習近況 2009 年秋首次進行,計有 6 校共 20 位學生來校交換學習。 來校交換生.
Mooctest.net- 慕测平台 南京大学陈振宇团队 刘子聪. 慕测平台 特点 真实编程环境( IDE ) 实时编程 / 测试评分 全程编程行为跟踪 自定义度量评估方式 平台免费、平台开放、接口开放.
年終工作獎金 及考績獎金 法規與實務 苗栗縣政府人事處 副處長 陳 坤 榮 中華民國102年1月25日.
三水区安监局 企业安全用电 2013年4月.
消失的吸管 隊名:吸管應該消失才隊.
助學工作說明會 及 教育訓練.
企业价值收益法评估 ----财务报表调整 主讲人:阮咏华 1.
師資生修讀教育學程 重點提醒 師資培育暨就業輔導中心.
開大運科系第103學年度第二學期 運輸管理實務(大一必修) 課程大綱.
广西师范大学教科院马佳宏 电 话 0773- (O) 高校教师资格认定考试的若干事项 广西师范大学教科院马佳宏 电 话 0773- (O)
文書檔案組Q&A 崇右技術學院 文書檔案組 Q & A 總務處.
公職人員財產信託簡介 第一銀行信託處 編製.
經分表聘用兼任助理流程 完成 新增/修改 經分表 計畫無聘任兼任助理(新增) 紙本送所屬單位審核 計畫聘任兼任助理(新增)
C语言程序设计 李伟光.
未婚懷孕:你想清楚了嗎 瑞芳國中 林碧欣.
國科會經費報銷說明 報告人:陳秀合 分 機: 年11月 12日(一).
教學經驗分享 吳毅成 國立交通大學資訊工程系 2012年4月.
實用技能學程答客問 Q&A 大明高中附設進修學校 教導處 編製.
职 业 礼 仪 讲师:刘巍女士.
畜牧類天然災害查報 及救助作業簡介 臺南市政府農業局畜產科 李東仁 臺南市政府農業局畜產科.
財團法人台北市任兆璋修女林美智老師教育基金會
李建民 教授 北京百川健康科学研究院 脊柱健康技术研究中心
100學年度719班 親師懇談.
社團資料製作 亞東技術學院課外組 岳擎天
道路、管線事故緊急應變處理課程.
三大自然区的内部差异 地理 全日制普通高级中学教科书(选修) 第二册 人民教育出版社地理社会室 编著 人民教育出版社 关于.
財團法人台北市任兆璋修女林美智老師教育基金會
大 綱 國有財產之來源 國有財產之範圍 國有財產之種類 國有公用財產管理 使用原則 國有公用財產管理
花的構造- (資料參考--鄭元春 植物Q&A一書) 花瓣 花萼 雌蕊 雄蕊.
認識股票 認識股票.
年終工作獎金 及考績獎金 法規與實務 苗栗縣政府人事處 副處長 陳 坤 榮 中華民國100年12月20日.
103年度身心障礙福利機構評鑑 日間及住宿機構指標說明 ~會計及財務管理~
屏東縣政府對民間團體補助經費作業要點 & 簡易計畫書撰寫概要與核銷注意事項
--洲仔尾的鹼菜 與櫻桃鴨的結合-- 鴨賞的故事.
戲水安全.
102年度 大專院校校外實習學生團體保險臺灣銀行共同供應契約
外僑扣繳實務講習 1.
職場性騷擾相關法 律責任-以上司對 下屬性騷擾為例
珍惜时间 提高效率 初二1班
授課大綱 第一章 緒 論 第一節 應用文的意義 第二節 應用文的種類 第二章 書 信 第一節 書信的種類 第二節 書信的結構 第三章 便 條
主講人:曲軒 協理 就業情報資訊 日期:2003年5月8日
衛生筷,衛生嗎? 綠的關懷協會 常務理事 董雅坋.
高粱酒香-金門城.
讀報教育 報告者:施子慧 資料來源:徐瑞美、施子慧.
103年度 健康促進學校輔導與網站維護─ 「臺灣健康促進學校之網站特色介紹」 張子超 教授
107年勞動基準法修法重點解析 高雄市政府勞工局.
國立中山大學管理學院 國際人才培育中心 大專人才培訓就業學程.
開課單位作業流程及Q&A 開啟衛生署積分系統首頁 畫面如下頁.
精算假設品質的基本要求 精算假設應提出明確的假設數值,同時應提供實際經驗率資料以作為假設訂定之依據,且精算人員應說明實際經驗率與假設數值間的合理關係。 精算假設若由其他單位提供(例如:利率或投資報酬率假設由投資部門提供),精算人員仍應了解其假設的方法,並就其假設合理性及假設方法提出意見。 精算假設若與前一年相較有所變更時,精算人員應說明假設改變的原因,對於有改變的精算假設數值宜列對照表比較並說明。精算人員應評估假設的改變對財務影響是否顯著,若顯著則應提供量化數值以說明其影響程度。
臺南市 107學年度 國中生志願選填試探與輔導知能研習
1.E化系統 之 專案登錄 核銷作業 2.常見退件原因 3.其他注意事項
第三組 成員 王郁昀 美術 李孟澤 程式 王子榮 企劃 美術 李奕增 企劃 美術 石名辰 企劃 程式 許登竣 美術.
國中志願選填試探與輔導知能研習 『學校適性輔導實務分享』 2015年12月1日(二) 分享者:蔡幸君.
如何检索统计申请与在研项目(科研人员) “科研之友”技术支持小组
新竹縣108學年度第1次國小以上 特殊教育鑑定安置說明會
進修學院與我.
2011年版大學學系探索量表測驗結果說明 輔導室 楊欣翰老師.
中小學教師科博館教學導覽教師研習工作坊 國立自然科學博物館 科學教育組 葉蓉樺博士.
慈惠醫護管理專科學校圖書館 館際合作使用方法.
101學年度繁星推薦校內甄選學生說明會 海山高中輔導處
“上海市教师教育课程资源共享管理平台” 学分银行操作指南
方格紙上畫正方形.
培僑小學 成功父母學堂 常識科專題研習工作坊
104年度自我評鑑 學術單位內部評鑑工作研習會.
國立勤益科技大學 冷凍空調與能源系 實務專題成果展
訪談地點:高雄縣大社鄉便當店 組員:王佩儀 B 王紀璇 B 許乃心 A
教育部彈性薪資說明會 主辦單位:教育部 執行單位:彈性薪資專案辦公室 主 持 人:周麗芳 國立政治大學財政學系教授 101年4月18日.
Presentation transcript:

真名:李国栋 淘宝花名:富 曲 : Fault injection 实现原理与应用

简介 自我简介 – 2010 年 9 月加入淘宝,先后从事自动化测试平台建设、报表引擎设 计、性能测试工具关键技术攻关,目前专注于 java 字节码测试方法 探索与研发。 工作职责 – 代码覆盖率 – Fault injection – 字节码检查 – 字节码测试方法论 – 团队建设

大纲 为何要 fault injection ? 什么是 fault injection ? 最佳实践 小结 实现原理 核心技术点现场演示 展望

为何要 fault injection ? 测试过程中可能遇到的问题:  系统依赖 系统 A 依赖 系统 B ,我希望在系统 B 有故障情形下,测试系统 A 的稳 定性,如何做?  硬件故障 如何模拟因为硬盘坏道或空间满导致的写文件失败的情形?  网络故障 如何模拟网络延迟导致远程调用大量超时的情形?  并发测试 如何验证可能含有线程安全问题的代码?

 暴力模式: 关机、拔网线、拔硬盘  温柔模式: 故意改坏代码,并重新发布,然后恢复 传统解决办法

不好解决的问题  不能精确模拟某个组件出现问题的情形  造成较大范围的故障,可能影响他人工作  服务器在托管机房,无法自由操作  麻烦,不够优雅

什么是 fault injection?  Fault injection— 故障注入 是指人为的向被测软件的代码中某个指定的位 置加入一些指令,以模拟出软件不能正常运行的 情形(或者说状态),这些情形可能包括:抛出 异常、运行缓慢等。人们通常把这种方法作为检 测系统的整体稳定性表现的常用手段。

Fault injection 部署架构

Fault injection 流程 指定故障注入对象 开始测试 登陆 Defensor 执行故障注入

Fault injection 最佳实践一:稳定性验证

需要做的验证: 当 deployTemplate 为空时,上层组件的表现是否符合期望。 现实的麻烦: 但在正常的情况下, deployTemplate 不会为空。 传统做法: 需要准备一些数据,过程中可能还需要手工修改数据库等操作,经 过相当麻烦的过程才能让 deployTemplate 为空。 fault injection : 可以免去一切数据准备过程,可以直接抛出空指针异常。

Fault injection 最佳实践一:稳定性验证

Fault injection 例子一:稳定性验证

Fault injection 最佳实践一:稳定性验证 这时,测试人员可以很容易看到,当系统指定组 件出现问题时,被测功能的表现是否符合预期, 并根据测试结果要求开发改进异常处理逻辑。

Fault injection 最佳实践二:线程安全验证 什么样的类可能含有线程安全问题?  类实例存在并发访问  类中含有成员变量,并且在方法有被改变的可能

Fault injection 最佳实践一:稳定性验证 需要做的验证:  进行并发测试,让程序暴露出问题,或者证明它没有问题。 现实的麻烦:  find bugs 难以证明程序有或者没有问题  要足够快的发起两次或更多的请求需要借助压测工具 传统做法:  需要借助性能压测工具,还要录脚本,准备数据,但最后也无法证 明程序没有问题,因为并发并不能 100% 触发线程安全问题。 fault injection :  可以免去一切数据准备过程,无需借助性能压测工具,可以证明程 序没有问题。

Fault injection 最佳实践二:线程安全验证

开始验证: 使用浏览器在 15 秒内相继向含有故障的页面发起 两个请求即完成了验证工作,根本不需要性能压测。 结论: fault injection 相比传统方法,可以节省至少 80% 的 时间与精力。

小结 如何才能用好 fault injection ,发挥它的最大价值?  对系统主要流程的底层依赖进行故障注入测试,找出问题 或者证明它足够健壮。  结合 find bugs 等静态代码检查工具使用,对检查出可能有 问题的代码进行故障注入。  不盲目注入故障,这样只会增加测试成本,却很难发现 BUG 。

故障注入工具的实现原理 取回远程 JVM 内存中正在运行的 class 字节码 实时的回传到远程 JVM 中,并让其立即生效 修改,生成新的字节码

故障注入工具的实现原理 关键技术点: 1 、生成正确的 JVM 指令并写入到 class 文件中。 2 、如何做到像 eclipse 远程 debug 那样,让修改后的 class 字节码实时生效? 3 、熟识 java class 文件结构,熟悉 jvm 指令,推荐阅读 《 Java 虚拟机规范》

故障注入工具的实现原理 关键技术点 1 : 生成正确的 JVM 指令并写入到 class 文件中,可以 使用下面的插件,可以轻易取得 java 源码对应的 Asm 代码, 然后使用 ASM 框架改写 class 字节码,插件地址: 。

Java 源码: JVM 指令: ASM 代码 :

故障注入工具的实现原理 关键技术点 2 : 如何做到像 eclipse 远程 debug 那样,让修改后的 class 字节码实时生效?  实时生成类转换器并传送到目标服务器上  远程执行类换器,完成类的转换并重新加载

故障注入工具的实现原理 类传换器入口类代码:

故障注入工具的实现原理 MANIFEST.MF 文件内容示例

故障注入工具的实现原理

Fault injection 核心技术点现场演示 现场演示一个动态修改 JVM 中正在运行的类的例子

展望  将 fault injection 用于验证测试用例的有效性 即:一个有效的测试用例在有故障的环境运行,正 确的结果应该验证失败,反之,如果验证通过,说明测试 代码本身有问题。

Q/A

谢谢!