SlideShare a Scribd company logo
1 of 26
Download to read offline
『初めての自動テスト』
meets Jenkins
2017/11/08 第11回Jenkins勉強会
@nkns165
玉川紘子
2
自己紹介・
翻訳に至ったきっかけ
自己紹介
 玉川紘子(@nkns165)
 ソフトウェアテストエンジニア@SHIFT
 主に自動化・CIを担当しています
 コミュニティ活動もしています
テスト自動化研究会
自己紹介
 自動テスト関連の技術書の翻訳お手伝いとかもしています
付録執筆 監訳 付録執筆 翻訳
「初めての自動テスト」はこんな本
 基本的には初心者向けにWebの自動テス
トについて解説した書籍
 マネージャーには…
 テスターには…
 開発者には…
自動テストの分類、共通言語、
適切な配分と役割分担の考え方
自動テストに必要なWebの仕組みの知識、
プログラミングの知識
テストファーストなど、自動テスト
に関わる新しい習慣・知識
なぜ「初めての自動テスト」を担当したか
 玉川竜司さんからのご紹介で、訳してみた
いけど手の回っていないものの中から1冊と
いう感じで提案
 自動テストは経験豊富&翻訳は経験ほとん
どなしという自分の状態にぴったりの対象
 最初は著者名をあまりよく見ていませんで
した
7
各章の内容を
少しずつ紹介
目次
1. テストのピラミッド
2. ユーザーインターフェイ
ステストに触れる
3. レガシーシステムにUIテ
ストを追加する
4. 統合テストで点と点を結
ぶ
5. RESTfulなWebサービス
の統合テスト
6. ユニットテストで基礎を
固める
7. JavaScriptを使ったブラ
ウザ上のユニットテスト
8. ピラミッドを登る
9. プログラミング初級講座
10.テストを整理する
11.効果的なモックの活用
12.テストファースト
残念ながら、
CIに関する章は無し
前半は「テストのピラミッド」のお話
 自動テストを3つの層に分け、それぞれ適切な量を保って開発
していきましょうという考え方
 各層のテストの特徴・具体的な書き方・どんな使い分けをすれ
ば良いかを”少しずつ”解説
 詳細なチュートリアルではない
ユニットテスト
統合テスト
UIテスト
手動テスト
どうしても欠かせない
重要ケースはEndToEndで。
ただし、不安定なので
数は絞る
高速実行可能・
安定している
単体テストを重視
第一層:UIテスト
 最終的なチェックには絶対に必要
 ただし、使い方を間違えると重荷になる
 書籍の中ではCapybaraでテストを書く方法、HTMLの
ソースを解析してCSSで場所を指定する方法などを紹介
第二層:統合テスト(APIテスト)
 ピラミッドの定義上は「Integration test(統合テスト)」として紹
介しているが、Webの世界ではAPIテストと同義と考えてOK
 ある程度高速・かつUI以外については全体を通して見ることができる
ので有用
 作成も簡単なのでテスターにも向いている
 書籍では、そもそものHTTPの仕組みに始まり具体的なリクエストの
送り方・レスポンスのチェックのしかたにも言及
第三層:ユニットテスト
 バックエンドのロジックを網羅的にチェックするテスト
 高速で大量に実行しやすい
 基本的に開発者が書くもの
 TDD(テスト駆動開発)と組み合わせることで、綺麗な
ソースコードで仕様も明確にして書いていくことができる
適切な役割分担と協調が大事
ユニットテスト
統合テスト
UIテスト
手動テスト
テスター
開発者
基盤作り
で協力
お互いのテストしている内容
を知り、適切な位置へ動かす
ためのコミュニケーションも
必須
後半はテクニカルな話題が中心
9章 プログラミング初級講座
10章 テストを整理する
11章 効果的なモックの活用
12章 テストファースト
テスター
向け
開発者
向け
10章 「テストを整理する」
 テストスイートは生モノ
 必要に応じてどんどん追加・変更・削除が行われる
 追加しやすい構成・追加するときの方針が決まっていると
楽
 テストの分離:1つのテストケースでは対象を1つにする
 コンテキストの明確化:UIテストなら画面、APIテストならエンド
ポイントごとというように分類の軸を決める
 コンテキストの階層化:類似のコンテキストをまとめて階層化する
 そもそもUI/統合/ユニットの定義も整理の一環
「協調」「役割」「整理」を重視
 意外に文化的な話の比重も大きい
 役割分担 ≠ 壁を作ること
ユニットテスト
統合テスト
UIテスト
手動テスト
スペシャリストを置くのも効果的
 Spotifyでは明確なロールを置いて活動を促進
 専任のテスト自動化エンジニア
 専任の生産性向上チーム
Agile 2017 : 7 Sources of Waste (Jonathan Rasmusson)
HELP
スペシャリスト=人とは限らない
Continuous
Integration
HELP
ピラミッドの一要素としてのCI
 迅速なフィードバック
 Slack/メールによる通知、アイコンで分かる健康状態
 開発↔QA間のコミュニケーションを助ける
 URLを共有するだけでテスト結果がすぐに分かる
 テストの整理を助ける
 ジョブの分割・フォルダ構造に直結
ピラミッドの一要素としてのCI
ユニットテスト
統合テスト
UIテスト
手動テスト
テスター
開発者
21
翻訳こぼれ話
翻訳中に苦労した点
 度々出てくる感動詞の訳し方
 初学者に理解してもらうための工夫 vs きちんとした翻訳
 訳注を入れていいかどうかの悩み
最も悩んだ&長い訳注(7章)
 画面で起きたバグに対して、テストコードを書きながら原因を追求していく
「バグハント」の流れ
 だったはずが、結論は「テストコードのバグ」
 Jonathan本人とメールのやり取りをし、最終的には「確かに何か変だね」と
分かってもらえた
 結果、5行に渡る訳注で補足することに
 Jonathanはとてもいい人でした
24
まとめ
まとめ
 自動テストを始めるときに大切なこと
 整理:UI/統合/ユニットテストの定義を理解し適切に使
い分ける
 役割分担:開発/QAで得意分野を担当する
 協調:お互いにコミュニケーションを取り、無駄をなく
す
 言うまでもなく
 CIあっての自動テストです
ご清聴ありがとう
ございました

More Related Content

Viewers also liked

Telemetry事始め
Telemetry事始めTelemetry事始め
Telemetry事始めnpsg
 
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyYahoo!デベロッパーネットワーク
 
【第7回redmine.tokyo勉強会】RedmineのFAQとアンチパターン集~WBS駆動からチケット駆動へ
【第7回redmine.tokyo勉強会】RedmineのFAQとアンチパターン集~WBS駆動からチケット駆動へ【第7回redmine.tokyo勉強会】RedmineのFAQとアンチパターン集~WBS駆動からチケット駆動へ
【第7回redmine.tokyo勉強会】RedmineのFAQとアンチパターン集~WBS駆動からチケット駆動へakipii Oga
 
ネットワーク自動化ツール紹介(Ansible・NAPALM編)
ネットワーク自動化ツール紹介(Ansible・NAPALM編)ネットワーク自動化ツール紹介(Ansible・NAPALM編)
ネットワーク自動化ツール紹介(Ansible・NAPALM編)akira6592
 
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAA
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAAよろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAA
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAAKazuhito Miura
 
Startup jenkins!
Startup jenkins!Startup jenkins!
Startup jenkins!Kanu orz
 
モックアップ共有のススメ
モックアップ共有のススメモックアップ共有のススメ
モックアップ共有のススメKazuyoshi Goto
 
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudyKazuhito Miura
 
「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansai
「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansai「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansai
「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansaiKazuhito Miura
 
サラリーマンでギョーミーなプログラマ(つまりオレ)でも片手間で作れるXFD
サラリーマンでギョーミーなプログラマ(つまりオレ)でも片手間で作れるXFDサラリーマンでギョーミーなプログラマ(つまりオレ)でも片手間で作れるXFD
サラリーマンでギョーミーなプログラマ(つまりオレ)でも片手間で作れるXFDKazuhito Miura
 
書類作成環境のあるべき論とは
書類作成環境のあるべき論とは書類作成環境のあるべき論とは
書類作成環境のあるべき論とはJun Iio
 
Shibuyatrac#13 scurmでやってみた
Shibuyatrac#13 scurmでやってみたShibuyatrac#13 scurmでやってみた
Shibuyatrac#13 scurmでやってみたKanu orz
 
第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」
第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」
第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」akipii Oga
 
自動化パタンランゲージ
自動化パタンランゲージ自動化パタンランゲージ
自動化パタンランゲージHiroshi Maekawa
 
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜Kazuhito Miura
 
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~ikikko
 
スクラムにおける事前期待のマネジメント - Customer Expectations Management of Scrum #sgt2016
スクラムにおける事前期待のマネジメント - Customer Expectations Management of Scrum  #sgt2016スクラムにおける事前期待のマネジメント - Customer Expectations Management of Scrum  #sgt2016
スクラムにおける事前期待のマネジメント - Customer Expectations Management of Scrum #sgt2016満徳 関
 
Jenkins User Conference 2012 Tokyo 「SIerのJenkins事情」
Jenkins User Conference 2012 Tokyo 「SIerのJenkins事情」Jenkins User Conference 2012 Tokyo 「SIerのJenkins事情」
Jenkins User Conference 2012 Tokyo 「SIerのJenkins事情」Takahisa Wada
 
Jenkinsを導入する本当の理由を考えてみた
Jenkinsを導入する本当の理由を考えてみたJenkinsを導入する本当の理由を考えてみた
Jenkinsを導入する本当の理由を考えてみたkakakikikeke
 

Viewers also liked (19)

Telemetry事始め
Telemetry事始めTelemetry事始め
Telemetry事始め
 
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
 
【第7回redmine.tokyo勉強会】RedmineのFAQとアンチパターン集~WBS駆動からチケット駆動へ
【第7回redmine.tokyo勉強会】RedmineのFAQとアンチパターン集~WBS駆動からチケット駆動へ【第7回redmine.tokyo勉強会】RedmineのFAQとアンチパターン集~WBS駆動からチケット駆動へ
【第7回redmine.tokyo勉強会】RedmineのFAQとアンチパターン集~WBS駆動からチケット駆動へ
 
ネットワーク自動化ツール紹介(Ansible・NAPALM編)
ネットワーク自動化ツール紹介(Ansible・NAPALM編)ネットワーク自動化ツール紹介(Ansible・NAPALM編)
ネットワーク自動化ツール紹介(Ansible・NAPALM編)
 
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAA
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAAよろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAA
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAA
 
Startup jenkins!
Startup jenkins!Startup jenkins!
Startup jenkins!
 
モックアップ共有のススメ
モックアップ共有のススメモックアップ共有のススメ
モックアップ共有のススメ
 
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy
 
「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansai
「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansai「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansai
「むしゃくしゃしたのでOpenDocumentで帳票テンプレート」 - 第13回関西LibreOffice勉強会 #LibOKansai
 
サラリーマンでギョーミーなプログラマ(つまりオレ)でも片手間で作れるXFD
サラリーマンでギョーミーなプログラマ(つまりオレ)でも片手間で作れるXFDサラリーマンでギョーミーなプログラマ(つまりオレ)でも片手間で作れるXFD
サラリーマンでギョーミーなプログラマ(つまりオレ)でも片手間で作れるXFD
 
書類作成環境のあるべき論とは
書類作成環境のあるべき論とは書類作成環境のあるべき論とは
書類作成環境のあるべき論とは
 
Shibuyatrac#13 scurmでやってみた
Shibuyatrac#13 scurmでやってみたShibuyatrac#13 scurmでやってみた
Shibuyatrac#13 scurmでやってみた
 
第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」
第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」
第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」
 
自動化パタンランゲージ
自動化パタンランゲージ自動化パタンランゲージ
自動化パタンランゲージ
 
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜
 
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
Jenkins 2を使った究極のpipeline ~ 明日もう一度来てください、本物のpipelineをお見せしますよ ~
 
スクラムにおける事前期待のマネジメント - Customer Expectations Management of Scrum #sgt2016
スクラムにおける事前期待のマネジメント - Customer Expectations Management of Scrum  #sgt2016スクラムにおける事前期待のマネジメント - Customer Expectations Management of Scrum  #sgt2016
スクラムにおける事前期待のマネジメント - Customer Expectations Management of Scrum #sgt2016
 
Jenkins User Conference 2012 Tokyo 「SIerのJenkins事情」
Jenkins User Conference 2012 Tokyo 「SIerのJenkins事情」Jenkins User Conference 2012 Tokyo 「SIerのJenkins事情」
Jenkins User Conference 2012 Tokyo 「SIerのJenkins事情」
 
Jenkinsを導入する本当の理由を考えてみた
Jenkinsを導入する本当の理由を考えてみたJenkinsを導入する本当の理由を考えてみた
Jenkinsを導入する本当の理由を考えてみた
 

初めての自動テスト meets Jenkins