Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
自動テストと
Jenkinsの活用
Lazy Developerへの道
アジェンダ
● 自己紹介
● 使用している開発ツールについて
● Androidアプリ開発のちらみせ
o 自動テスト
o 継続的インテグレーション
● まとめ
自己紹介
飲食に特化した求人サイト
自己紹介
● 所属
● 経歴
o 組み込みエンジニア
o 携帯電話開発(9年)
 ガラケー
o Android Developer(5年)
 Android端末開発
 組み込み支援
 Frameworkカスタマイズ
 アプリケーション...
自己紹介(2)
● 日本Androidの会 関西支部
● FirefoxOS 勉強会(1st - 3rd)
● TechInstituteアプリ開発者養成講座の講師
● その他諸々
執筆
プロの力が身につく Androidプログラミングの教科書
執筆
プロの力が身につく Androidプログラミングの教科書
執筆
プロの力が身につく Androidプログラミングの教科書
使用中の開発ツールと課題
何を使っているか
誰が使っているか
どう使っているか
ツールの紹介と状況
現在の開発ツール
メンバー
コミュニケーション
タスク管理
ソース管理
ドキュメント
現在の開発ツール
メンバー
コミュニケーション
タスク管理
ソース管理
ドキュメント
開発部の体制
● Webエンジニア
o 7名
● デザイナー
o 2名
● スマートフォンエンジニア
o 1名
※QA(品質管理部門)はありません
※QA(品質管理部門)はありません
一般的に品質が低いと...信頼を失う
● 納品後、大変な事になる
o 検収NG
o 裁判
● サービス停止
o 運営に関わるクリティカルなバグ
o ユーザーへの影響
o スタッフへの影響
● 余計な作業が増える
o 関係者への謝罪行脚
o 始末...
みんなで
品質保証・品質管理を考える
Androidアプリ開発でのテスト
Androidアプリの開発体制
(※サーバー / デザイン除く)
● 要件/スケジュール管理
o 要さん
● コーディング
o 要さん
● テスト
o 要さん
● 品質管理
o 要さん
● デプロイ
o 要さん
Androidアプリ開発チーム
品質保証・品質管理を考える
どうやれば効率的か
課題は品質を確保しつつ開発をする
● 絶対的なもの
o 品質確保
● MAXにしたい時間
o 企画検討
o 実装
● MINにしたい時間
o テスト実施
o 日々のデグレチェック作業
自動テストJUnitを取り入れた
● 目的
o テスト項目数は維持
o 実施時間は最小限に
● やること
o JUnitのお勉強をする
Androidの自動テストで必要なもの
● Androidアプリ開発
o Android Studio標準のJUnit
o Espresso (android-test-kit)
Webサーバー側の自動テスト
● Webサイト開発
o Codeception
o Selenium
AS標準のGradleコマンドで実行
● AndroidTestの実行
o ./gradlew connectAndroidTest
o ./gradlew mergeAndroidReports --continue
 複数Project構...
自動テストはこんな感じ
https://flic.kr/p/pdyndn
JUnitの結果表示
項目数、実施時間、結果が定量的に確認できる
コードカバレッジの結果表示
コード量に対するテストの実施率
100%にする必要はないけど、モチベーションになる
コードカバレッジの結果表示(2)
● テストが実施されていない箇所がすぐにわ
かる
o 赤ライン・・・テスト未実施
o 緑ライン・・・テスト実施
テスト実施のコストを考える
テスト実施コスト= 実施時間 回数×
コミット前
リリース前
項目数
端末数
テスター人数
要因
テスト実施のコストを抑える
テスト実施コスト=
JUnit作成 メンテナンス+
ひたすらテストコードを作れ!
作った分だけ楽になれる!
JUnit作成で苦労したこと
● テストコードをたくさん作るのは大変
● 痒いところにとどかない判定メソッド
o Toast表示、テキスト文字色の判定は自作
o 無ければ作ればいいじゃん!!
● Android端末によるテスト結果の違い
JUnit作成でよかったこと
● Espresso(android-test-kit)でのテスト作成は、
いくぶんか楽
o onView(withId())でViewを指定できる
● 慣れれば慣れるほど、時間は短縮
● コミット前のデグレチェッ...
テストコードによるテスト実施
要求分析
機能設計
詳細設計
基本設計
コーディング
Unit テスト
結合テスト
システム
テスト
受入テスト
広い範囲のテストフェーズを実施
継続的インテグレーション
継続的インテグレーション
って何だ???
継続的インテグレーション
Build
Test
InspectionDeploy
● 日々、継続して工程を実施し続ける。
o 早期の問題発見と対応が目的
どうやって
継続的インテグレーション
するの???
これを人の手で実施するのは大変
CIツールはたくさんあるよ
オープンソースのCIツールもあるよ。
Jenkinsに参画してもらっています
メンバー
コミュニケーション
タスク管理
ソース管理
ドキュメント
Jenkinsはたくさんの作業ができる
● Build
o ソースコードの取得、ビルド実行
● Inspection
o 静的コードチェック、コードメトリクス
● Test
o 自動テストの実施
● その他
o レポート作成
● ドキュメンテー...
Jenkinsの仕事の流れ
メンバー
コミュニケーション
タスク管理
ソース管理
ドキュメント
①ソースコードの取得
Jenkinsの仕事の流れ
メンバー
コミュニケーション
タスク管理
ソース管理
ドキュメント
②ビルド実行
③Inspection実行
④自動テスト実行
⑤ドキュメント作成
Jenkinsの仕事の流れ - 報告
メンバー
コミュニケーション
タスク管理
ソース管理
ドキュメント
⑥エラー報告など
「一晩でやってくれました」
● 労働基準法37条を考慮しなくていい
o 深夜残の割増料金も不要
● ヒューマンエラーはなし
o 同じテストでも実施毎に変わるテスターよ、さよう
なら
参考HP:大阪労働局
http://osaka-roudouk...
他にもいろいろと使い道はあります
● デイリーワークの自動化
o DBのバックアップ作業
o (誰も見ない)日報メールの自動作成と送信
o (面倒な)Web勤怠の入力
o 毎日、お弁当の注文メールを送信
ここからは
実際のプロジェクト名が出るので
写真撮影NGで!!
Jenkinsの管理画面
プロジェクトの画面
プロジェクトTop画面、各Pluginの情報表示
ステップ数の確認
ステップ数やコメント行の集計も自動
「かぞEちゃOが許されるのは小学生まで」
ソースコードの量を日々チェック
「PreFix過ぎてるのに、まだコーディングして
るの?」っていうのもバレてしまう。
ビルドの例
お仕事中のJenkinsさんを覗き見することも。
ビルドエラーを早期発見
犯人は、このコミットの誰か!!
激おこJenkins氏
深夜残、早朝出勤のJenkins氏もBuildエラー/テ
ストNGには敏感です。
masterでビルドエラー発生させたときの損失ってい
くら?
100人の作業が2時間止まるとき損失額は?
「それ、サバンナでも同じこと言え...
Inspectionの例
静的コードチェックも自動で実施
Inspectionからコードの質を確認
Inspectionの指摘内容の確認
テスト実施で品質のチェック
自動テストによる品質維持
※事件が起こった証拠
(ちなみに、テスト用アカウントの切り替え忘れ発生)
テスト実施で品質のチェック(2)
テスト結果の表示
ワークスペースを見ることもできる
チェックアウトしたソース、Build後のOuptut
ファイルは観覧可能です
JUnitの結果もそのまま観覧可能
./gradlewで実行した結果も観覧可能です。
Jenkinsを入れた結果
● 日々、自動で作業をしてくれる
o 設定次第で毎朝、毎コミットごとにテスト実施
o コードメトリクスの実施
● もし、問題があればすぐに通知
o メール送信
o Chatworkにメッセージ
o Backlogに課...
段階的に導入することが大事です
1. buildチェック
2. Inspection
3. 自動テストの実施
4. デプロイ
プロジェクトに必要だと思われるものを、順番
にJenkinsにさせる
Jenkinsを導入する際の注意
● 目的を明確にする
o 何をさせたいか
● 数字の意味を理解する
o プロジェクトがどう進んでいるのか
o 問題は発生していないか
● フィードバックをする
o 問題があればすぐに対応する
まとめ
エンジニアのポートフォリオ分析
花形
(Lazy Developer)
問題児
(Developer)
負け犬
(ただの人)
金のなる木
(未来に期待)
コスト
品
質
企業として成長していく過程で、エンジニアとしての商品価値を高め、
コスト意...
エンジニアなら
開発の効率化、作業の自動化を考えよう
ソフトウェア工学を取り入れよう
効率的に開発を行い
時間と心の余裕を持って
新しい知識の習得へ
Good Engineer
is
Lazy!!
続きはPHPカンファレンス2015で
• PHPカンファレンス2015
5/30(土)開催
Webサービス開発で自動テストCodeception発表予定
フロちゃんが発表するよ!!
ご静聴、ありがとうございました。
自動テストとJenkinsの活用 公開版
You’ve finished this document.
Download and read it offline.
Upcoming SlideShare
20140118 selenium勉強会 - Jenkins×Selenium 最初の一歩-
Next
Upcoming SlideShare
20140118 selenium勉強会 - Jenkins×Selenium 最初の一歩-
Next
Download to read offline and view in fullscreen.

Share

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

Download to read offline

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

2015/4/10
ITベンチャー3社の開発ツール チラ見せ♡ナイト
http://devtoolnight.connpass.com/event/12670/

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

自動テストと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. ご静聴、ありがとうございました。
  • ssuserc3db3f

    May. 31, 2021
  • slidekufuup

    Mar. 10, 2017
  • KazuhikoOkumura

    Sep. 8, 2016
  • ShinichiArata

    Jan. 30, 2016
  • s-tomori

    Nov. 22, 2015
  • y0ct0

    Nov. 11, 2015
  • umablue

    Oct. 27, 2015
  • noririn2

    Oct. 11, 2015
  • kumadasu

    Sep. 20, 2015
  • taku220

    Jun. 29, 2015
  • kenseidemura

    Jun. 27, 2015
  • 84d010m08

    May. 22, 2015
  • keigokametee

    Apr. 13, 2015
  • tomoyukisugita

    Apr. 12, 2015

自動テストとJenkinsの活用 公開版 2015/4/10 ITベンチャー3社の開発ツール チラ見せ♡ナイト http://devtoolnight.connpass.com/event/12670/

Views

Total views

7,113

On Slideshare

0

From embeds

0

Number of embeds

2,213

Actions

Downloads

71

Shares

0

Comments

0

Likes

14

×