Successfully reported this slideshow.
Your SlideShare is downloading. ×

自動テストとJenkinsの活用 公開版

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 73 Ad
Advertisement

More Related Content

Slideshows for you (20)

Advertisement

Recently uploaded (20)

自動テストとJenkinsの活用 公開版

  1. 1. 自動テストと Jenkinsの活用 Lazy Developerへの道
  2. 2. アジェンダ ● 自己紹介 ● 使用している開発ツールについて ● Androidアプリ開発のちらみせ o 自動テスト o 継続的インテグレーション ● まとめ
  3. 3. 自己紹介
  4. 4. 飲食に特化した求人サイト
  5. 5. 自己紹介 ● 所属 ● 経歴 o 組み込みエンジニア o 携帯電話開発(9年)  ガラケー o Android Developer(5年)  Android端末開発  組み込み支援  Frameworkカスタマイズ  アプリケーション開発
  6. 6. 自己紹介(2) ● 日本Androidの会 関西支部 ● FirefoxOS 勉強会(1st - 3rd) ● TechInstituteアプリ開発者養成講座の講師 ● その他諸々
  7. 7. 執筆 プロの力が身につく Androidプログラミングの教科書
  8. 8. 執筆 プロの力が身につく Androidプログラミングの教科書
  9. 9. 執筆 プロの力が身につく Androidプログラミングの教科書
  10. 10. 使用中の開発ツールと課題
  11. 11. 何を使っているか 誰が使っているか どう使っているか ツールの紹介と状況
  12. 12. 現在の開発ツール メンバー コミュニケーション タスク管理 ソース管理 ドキュメント
  13. 13. 現在の開発ツール メンバー コミュニケーション タスク管理 ソース管理 ドキュメント
  14. 14. 開発部の体制 ● Webエンジニア o 7名 ● デザイナー o 2名 ● スマートフォンエンジニア o 1名 ※QA(品質管理部門)はありません
  15. 15. ※QA(品質管理部門)はありません
  16. 16. 一般的に品質が低いと...信頼を失う ● 納品後、大変な事になる o 検収NG o 裁判 ● サービス停止 o 運営に関わるクリティカルなバグ o ユーザーへの影響 o スタッフへの影響 ● 余計な作業が増える o 関係者への謝罪行脚 o 始末書の作成
  17. 17. みんなで 品質保証・品質管理を考える
  18. 18. Androidアプリ開発でのテスト
  19. 19. Androidアプリの開発体制 (※サーバー / デザイン除く)
  20. 20. ● 要件/スケジュール管理 o 要さん ● コーディング o 要さん ● テスト o 要さん ● 品質管理 o 要さん ● デプロイ o 要さん Androidアプリ開発チーム
  21. 21. 品質保証・品質管理を考える どうやれば効率的か
  22. 22. 課題は品質を確保しつつ開発をする ● 絶対的なもの o 品質確保 ● MAXにしたい時間 o 企画検討 o 実装 ● MINにしたい時間 o テスト実施 o 日々のデグレチェック作業
  23. 23. 自動テストJUnitを取り入れた ● 目的 o テスト項目数は維持 o 実施時間は最小限に ● やること o JUnitのお勉強をする
  24. 24. Androidの自動テストで必要なもの ● Androidアプリ開発 o Android Studio標準のJUnit o Espresso (android-test-kit)
  25. 25. Webサーバー側の自動テスト ● Webサイト開発 o Codeception o Selenium
  26. 26. AS標準のGradleコマンドで実行 ● AndroidTestの実行 o ./gradlew connectAndroidTest o ./gradlew mergeAndroidReports --continue  複数Project構成の場合、Reportをまとめる ● コードカバレッジの集計 o ./gradlew createDebugCoverageReport  JUnitのコードに対する実施率
  27. 27. 自動テストはこんな感じ https://flic.kr/p/pdyndn
  28. 28. JUnitの結果表示 項目数、実施時間、結果が定量的に確認できる
  29. 29. コードカバレッジの結果表示 コード量に対するテストの実施率 100%にする必要はないけど、モチベーションになる
  30. 30. コードカバレッジの結果表示(2) ● テストが実施されていない箇所がすぐにわ かる o 赤ライン・・・テスト未実施 o 緑ライン・・・テスト実施
  31. 31. テスト実施のコストを考える テスト実施コスト= 実施時間 回数× コミット前 リリース前 項目数 端末数 テスター人数 要因
  32. 32. テスト実施のコストを抑える テスト実施コスト= JUnit作成 メンテナンス+ ひたすらテストコードを作れ! 作った分だけ楽になれる!
  33. 33. JUnit作成で苦労したこと ● テストコードをたくさん作るのは大変 ● 痒いところにとどかない判定メソッド o Toast表示、テキスト文字色の判定は自作 o 無ければ作ればいいじゃん!! ● Android端末によるテスト結果の違い
  34. 34. JUnit作成でよかったこと ● Espresso(android-test-kit)でのテスト作成は、 いくぶんか楽 o onView(withId())でViewを指定できる ● 慣れれば慣れるほど、時間は短縮 ● コミット前のデグレチェックが楽々
  35. 35. テストコードによるテスト実施 要求分析 機能設計 詳細設計 基本設計 コーディング Unit テスト 結合テスト システム テスト 受入テスト 広い範囲のテストフェーズを実施
  36. 36. 継続的インテグレーション
  37. 37. 継続的インテグレーション って何だ???
  38. 38. 継続的インテグレーション Build Test InspectionDeploy ● 日々、継続して工程を実施し続ける。 o 早期の問題発見と対応が目的
  39. 39. どうやって 継続的インテグレーション するの??? これを人の手で実施するのは大変
  40. 40. CIツールはたくさんあるよ オープンソースのCIツールもあるよ。
  41. 41. Jenkinsに参画してもらっています メンバー コミュニケーション タスク管理 ソース管理 ドキュメント
  42. 42. Jenkinsはたくさんの作業ができる ● Build o ソースコードの取得、ビルド実行 ● Inspection o 静的コードチェック、コードメトリクス ● Test o 自動テストの実施 ● その他 o レポート作成 ● ドキュメンテーション自動生成 これらの作業を『早朝、深夜残業』でや ってくれる!!
  43. 43. Jenkinsの仕事の流れ メンバー コミュニケーション タスク管理 ソース管理 ドキュメント ①ソースコードの取得
  44. 44. Jenkinsの仕事の流れ メンバー コミュニケーション タスク管理 ソース管理 ドキュメント ②ビルド実行 ③Inspection実行 ④自動テスト実行 ⑤ドキュメント作成
  45. 45. Jenkinsの仕事の流れ - 報告 メンバー コミュニケーション タスク管理 ソース管理 ドキュメント ⑥エラー報告など
  46. 46. 「一晩でやってくれました」 ● 労働基準法37条を考慮しなくていい o 深夜残の割増料金も不要 ● ヒューマンエラーはなし o 同じテストでも実施毎に変わるテスターよ、さよう なら 参考HP:大阪労働局 http://osaka-roudoukyoku.jsite.mhlw.go.jp/yokuaru_goshitsumon/jigyounushi/jikangai.html
  47. 47. 他にもいろいろと使い道はあります ● デイリーワークの自動化 o DBのバックアップ作業 o (誰も見ない)日報メールの自動作成と送信 o (面倒な)Web勤怠の入力 o 毎日、お弁当の注文メールを送信
  48. 48. ここからは 実際のプロジェクト名が出るので 写真撮影NGで!!
  49. 49. Jenkinsの管理画面
  50. 50. プロジェクトの画面 プロジェクトTop画面、各Pluginの情報表示
  51. 51. ステップ数の確認 ステップ数やコメント行の集計も自動 「かぞEちゃOが許されるのは小学生まで」
  52. 52. ソースコードの量を日々チェック 「PreFix過ぎてるのに、まだコーディングして るの?」っていうのもバレてしまう。
  53. 53. ビルドの例 お仕事中のJenkinsさんを覗き見することも。
  54. 54. ビルドエラーを早期発見 犯人は、このコミットの誰か!!
  55. 55. 激おこJenkins氏 深夜残、早朝出勤のJenkins氏もBuildエラー/テ ストNGには敏感です。 masterでビルドエラー発生させたときの損失ってい くら? 100人の作業が2時間止まるとき損失額は? 「それ、サバンナでも同じこと言えるの?」
  56. 56. Inspectionの例 静的コードチェックも自動で実施
  57. 57. Inspectionからコードの質を確認 Inspectionの指摘内容の確認
  58. 58. テスト実施で品質のチェック 自動テストによる品質維持 ※事件が起こった証拠 (ちなみに、テスト用アカウントの切り替え忘れ発生)
  59. 59. テスト実施で品質のチェック(2) テスト結果の表示
  60. 60. ワークスペースを見ることもできる チェックアウトしたソース、Build後のOuptut ファイルは観覧可能です
  61. 61. JUnitの結果もそのまま観覧可能 ./gradlewで実行した結果も観覧可能です。
  62. 62. Jenkinsを入れた結果 ● 日々、自動で作業をしてくれる o 設定次第で毎朝、毎コミットごとにテスト実施 o コードメトリクスの実施 ● もし、問題があればすぐに通知 o メール送信 o Chatworkにメッセージ o Backlogに課題登録
  63. 63. 段階的に導入することが大事です 1. buildチェック 2. Inspection 3. 自動テストの実施 4. デプロイ プロジェクトに必要だと思われるものを、順番 にJenkinsにさせる
  64. 64. Jenkinsを導入する際の注意 ● 目的を明確にする o 何をさせたいか ● 数字の意味を理解する o プロジェクトがどう進んでいるのか o 問題は発生していないか ● フィードバックをする o 問題があればすぐに対応する
  65. 65. まとめ
  66. 66. エンジニアのポートフォリオ分析 花形 (Lazy Developer) 問題児 (Developer) 負け犬 (ただの人) 金のなる木 (未来に期待) コスト 品 質 企業として成長していく過程で、エンジニアとしての商品価値を高め、 コスト意識を持ち高機能高品質なシステムを提供しつづけるとしたら、 Lazy Developerは企業の花形商品である。
  67. 67. エンジニアなら 開発の効率化、作業の自動化を考えよう
  68. 68. ソフトウェア工学を取り入れよう
  69. 69. 効率的に開発を行い 時間と心の余裕を持って 新しい知識の習得へ
  70. 70. Good Engineer is Lazy!!
  71. 71. 続きはPHPカンファレンス2015で • PHPカンファレンス2015 5/30(土)開催 Webサービス開発で自動テストCodeception発表予定 フロちゃんが発表するよ!!
  72. 72. ご静聴、ありがとうございました。

Editor's Notes

  • 0分~ まずはインパクトを与える!
    1分~ 観客に質問を投げかける
    1.5分~ エピソードトーク(個人的な話で共感してもらう)
    2分~  スライドを使いながら主張する
    2.5分~ 根拠となる具体例(数字のデータなど)を示す
    3分~  グラフなどを使って根拠を追加提示する
    4分~  イメージスライドを使って目的を提示する
    5分~  同じ主張を繰り返す

  • 自己紹介
    はじめに
    ・今日のテーマ

    開発ツール 何を使って、誰
    ・少し前までは
    コミュニケーションツール、Chatwork
    タスク管理 Backlog
    ドキュメント管理 cacoo、googleドライブ
    ・新しい取り組みとして
    継続的インテグレーションのためにJenkinsを導入

    ・開発部体制は
    Webエンジニア、デザイナー、スマートフォン開発者
    品質管理の人員はいません
    ・一般的に品質が低いとどうなるとかというと
    請負の場合
    納品後、たいへんな事になる
    サービス事業者の場合
    サービス停止
    マネージャーは
    謝罪行脚と始末書
    総じて、なんらかの信頼を失うことになる

    品質管理がいないからといって、しませんとはならない。
    誰かがやる必要がある。我々エンジニアがやるしかない。


    どうやっているか その1
    体制上、Androidアプリ開発は一人。
    要件
    コーディング
    テスト
    品質管理
    デプロイ

    可能な限り、テストと品質チェックのコストは下げないと、そもそも開発ができない
    デグレチェックのコスト削減
    = 実施時間 x 回数

    なんとか自動化にしたいので、JUnitテストを作りまくりました。
    ソースコードとJUnitテストコードの割合はこんな感じです。

    JUnit実施はこんな感じです。

    JUnitテストの作成時間は必要、ただし一度作ってしまうと何度でも実施可能
    テストコード作成のコストはかかるが、それ以上に恩恵はある

    どうやっているか その2
    ・継続的インテグレーション化
    CIとは?
    どうやって実施しているの?
    何をさせているのか
    デイリーチェック

    まとめ

  • ミッション
    世界最大の食に関わる人材バンクになる


    ビジョン
    フード産業を人気業種にする
  • 目安経過時間:0:02
  • 開発ツール 何を使って、誰が参加して、何が起こったか
    ・少し前まではBacklog、cacoo、google drive
    ・新しい取り組みとして、Jenkins
    ・開発体制
    ・レビューDayの取り組み
  • 目安経過時間:0:07
  • 目安経過時間:0:17
  • 目安経過時間:0:27

×