SlideShare a Scribd company logo
1 of 26
『初めての自動テスト』
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

Shibuyatrac#13 scurmでやってみた
Shibuyatrac#13 scurmでやってみたShibuyatrac#13 scurmでやってみた
Shibuyatrac#13 scurmでやってみた
Kanu orz
 

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