市場で勝ち続けるための品質とテストの技術②

165 Views

March 02, 17

スライド概要

profile-image

2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp

シェア

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

市場で勝ち続けるための 品質とテストの技術 2017年2月16日 伊藤 宏幸 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .

2.

自己紹介 伊藤 宏幸  黒帯(アジャイル開発プロセス)  アジャイルコーチ  自動化コーチ Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 1

3.

テスト自動化は製品開発の必須要素 DevOpsの考え方の普及 ↓ • さらなる「Time to Market」の短縮要望 • 市場に耐えうる品質の製品を リリースし続ける必要性 ↓ テスト自動化! Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 2

4.

一方で テスト自動化自体が難しい • やり方が分からない • たくさんの種類や方法があって、 どれをやれば良いのかが分からない • メリットが分からない (エンジニア/マネージャーとして) • 工数が余計にかかるのでは?という疑念 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 3

5.

自動化コーチ:我々の役割 テスト自動化 (特にユニットテスト)を、 サービスが自発的に 実施・推進できるようにすること 前述の疑問に対して1つ1つ回答し、 かつ施策をドライブすることが役割 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 4

6.

当セッションのテーマ テスト自動化を自ら開始・推進し、 組織文化の改善にまで 取り組んでいる チームの事例とポイントの紹介 + ポストDevOps時代の働き方 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 5

7.

アジェンダ 1. テスト自動化の始め方 2. 落とし穴とその回避方法 3. テスト自動化のためのステークホルダーマネジメント 4. 結論 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 6

8.

1. テスト自動化の始め方 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .

9.

我々の基本方針 原則、ユニットテストから始める • 「単体テスト」と同義 • ISTQBの定義に従い、 以下「ユニットテスト」と呼称 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 8

10.

理由1:テストの種類 要件定義 受入テスト 総合テスト 基本設計 詳細設計 開発 結合テスト ユニットテスト ココから 導入が簡単かつ すぐに効果を出せるため Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 9

11.

理由2:テスト自動化のピラミッド 手動テスト GUIテスト 受入テスト ココから 一番ROIが高いため (API層) ユニットテスト Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 10

12.

よくやる過ち • 座学 • ワークショップ • 実際にテスト自動化・TDD・ペアプロを 実践している現場の見学 ほとんど役に立たない! ハンズオンなどで実際に手を動かして、 その価値を「体感」させない限りは 効果が見込めない Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 11

13.

解決策 • Cyber Dojoで TDD・ペアプロを「体感」させる http://cyber-dojo.org/ • プロダクションコードへ ユニットテストを追加する (即実戦で鍛える) • 必要になってから、 理論やテクニックを深く教える Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 12

14.

この章のポイント 習わせるより慣れさせよ! Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 13

15.

2. 落とし穴と その回避方法 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .

16.

1) コードカバレッジの罠 コードカバレッジ60%突破! もう少しで80%にできます。 ほとんど修正のない、簡単にテストを 追加できるプログラムがあるので、 引き続きここにテストを追加していこうと 思います♪ by 大泉 洋 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 15

17.

1) コードカバレッジの罠 コードカバレッジの達成が 自己目標化してしまい、 市場に耐えうる品質の確保という テストの目的から外れてしまう ↓ 価値あるテストをつくることを 意識付けすることが必要 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 16

18.

1) の解決策:価値あるテスト箇所を明確にする • マネーパススイート • 障害の頻発する箇所 • 頻繁に修正する箇所 • 追加/修正する箇所 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 17

19.

2) テストが作りづらい • プロダクションコードが複雑すぎて 解読できない • モックを差し込めない • 重複ロジックが多数ある ↓ テストをしやすくしよう! Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 18

20.

2) の解決策:テストをしやすくする • テストをしやすくするためのツールを 探し出して適用する • Mockito(Java) • Phake・AspectMock(PHP) • テストをしやすいアーキテクチャに変える • 「仕様化テスト」を整備する • その後にリファクタリングを行う Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 19

21.

3) 目的を見失う/作業のマンネリ化 • メンバーがテストへの関心を失う • テストの作成ペースが伸びなくなる • 価値の低いテストが増える ↓ チームに適切な刺激を与え、 自発的な成長を促そう! Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 20

22.

3) の解決策1:短期の目標設定とふりかえり • 定期的に目標を設定させる • 一定期間が経ったら 目標の達成度合いを確認し、 KPTベースで振り返りを行う • 定期的かつ自発的に、 次の改善アクションを提案・実施させる Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 21

23.

3) の解決策2:自主的なテストルールの策定 • テストのコーディング規約 • C0/C1/C2 • ルール自体の定期的な見直し ↓ 自主性のあるチームの構築へ つながる Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 22

24.

この章のポイント 目的のために 良い手段を選ぼう! Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 23

25.

3. テスト自動化のための ステークホルダー マネジメント Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .

26.

ある日チームから寄せられた相談 チームの活動目標を提示するよう、 「サブリーダー」から求められた ↓ 活動目標を「サブリーダー」に提示した ↓ 「部長」と「リーダー」からも、 別途目標を提示するよう求められた ↓ チームが混乱状態に陥ってしまった Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 25

27.

調べてみた • ステークホルダーがそもそも多い • サブリーダー・リーダー(複数名)・ 部長・テクニカルディレクターetc. • ステークホルダーで情報が届いている人と 届いていない人とがいる • ステークホルダー間でも情報をやりとり している人としていない人とがいる Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 26

28.

コーチとしてのチームへの提案 ステークホルダー管理に改善点あり ↓ ステークホルダー管理 (コミュニケーション管理)を やろう! Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 27

29.

しかし…チームの主張 • ユニットテストを書くことに集中したい • ステークホルダーたちの問題だから、 自分たちは関係ない ↓ この状況を自ら改善することに 消極的だった Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 28

30.

実施した説得 • 情報の交通整理をすること = ステークホルダーを喜ばせる行為 • ステークホルダーを喜ばせること = 仕事に集中できる環境作りにプラス • 仕事に集中できる環境を作ること = テスト自動化実現のための立派な行為 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 29

31.

説得の結果 チーム自ら、 ステークホルダー全員が会する場を設定 • 何が分かっているのか • 何が分かっていないのか • 何が必要なのか Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 30

32.

説得の結果 わずか30分で、 必要な情報共有と次のアクション決めを達成 写真:アフロ Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 31

33.

この章のポイント テストの作成に集中できる 環境を作ることも、 立派なテスト自動化だ! Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 32

34.

4. 結論 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .

35.

その後のチーム ほぼ我々コーチ陣の手を離れ、 自走するようになった • チームメンバー同士で助け合いながら、 自力でユニットテストを書いている • ステークホルダーとの調整も、事前に 済ませてから報告してくれるようになった • 部署での成功のシンボルとなっている Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 34

36.

課題の克服・改善 テスト自動化自体が難しい • やり方が分からない • たくさんの種類や方法があって、 どれをやれば良いのかが分からない • メリットが分からない (エンジニア/マネージャーとして) • 工数が余計にかかるのでは?という疑念 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 35

37.

課題の克服・改善 テスト自動化自体が難しい • やり方が分からない • たくさんの種類や方法があって、 どれをやれば良いのかが分からない • メリットが分からない (エンジニア/マネージャーとして) • 工数が余計にかかるのでは?という疑念 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 36

38.

これまでのポイントのおさらい • 習わせるより慣れさせよ! • 目的のために良い手段を選ぼう! • テストの作成に集中できる環境を 作ることも、立派なテスト自動化だ! Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 37

39.

ポストDevOps時代の働き方 職種・業務を限定しない 継続的学習・改善の仕組みを、 技術的・組織的に構築する 写真:アフロ Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 38

40.

結論 「当たり前のこと」を、 「当たり前に」やろう。 Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved . 39

41.

Co p yrig ht © 2 0 1 7 Yaho o Jap an Co rp o ratio n. All Rig hts Reserved .