SlideShare una empresa de Scribd logo
1 de 61
テストコードのリファクタリング

      #jjug_r33

  2012.11.10 JJUG CCC
  渡辺修司 (@shuji_w6e)


                        1
今日のお話
今日のお話

 冗長で書きにくい
     テストコードを

            Spock
        と           で
  リファクタリング
自己紹介
渡辺 修司
Javaプログラマ

 株式会社エスプラニング所属

 ウェブアプリやデスクトップアプリの開発

テスト駆動開発、ユースケース駆動開発

アジャイル開発

最近の趣味はロードバイクとフットサル
@shuji_w6e
札幌 Javaコミュニティ

TDD Boot Camp

やさしいデスマーチ(Blog)

執筆活動

 WEB DB Press vol.69

 JUnit実践入門(11/21)
テストしてますか?
継続的インテグレーションは強みでなくなった


 Subversion/Gitなどを使用したソースコード管理、
Jenkinsを使用した継続的インテグレーション、様々
なxUnitフレームワークを使用した自動テストなどを
ソフトウェア開発組織として実践することは、今日で
は、その開発組織の技術的な強みではありません。
       http://yshibata.blog.so-net.ne.jp/archive/c20379492-1
現実...




        http://www.flickr.com/photos/togemaru/2882075323/
現代ソフトウェア開発の3本柱
                                         ©t-wada
バージョン管理

テスティング

自動化




          http://www.flickr.com/photos/ercol/4665559509/
現代ソフトウェア開発の3本柱
                                         ©t-wada
バージョン管理

テスティング

自動化




          http://www.flickr.com/photos/ercol/4665559509/
ユニットテストの目的




http://www.flickr.com/photos/essecento/4297955162/
スキル不足
仕様変更


                                     経験不足
複雑な要件

                                                   不安
   http://www.flickr.com/photos/yopse/3772030400/
不完全な人間




   http://www.flickr.com/photos/sharynmorrow/3948100/
ユニットテストとは?
ソフトウェアを構成する最小部品のテスト

主にクラスやメソッドが対象

対象が期待される振る舞いをするかを検証
テストの4象限モデル
                ビジネス面
                                   手動


            機能テスト      受け入れテスト




                                   製品を批評
 チームを支援




          ストーリーテスト    ユーザビリティテスト




                        負荷テスト
          ユニットテスト     パフォーマンステスト



 自動
                    技術面
テストの4象限モデル
                ビジネス面
                                   手動


            機能テスト      受け入れテスト




                                   製品を批評
 チームを支援




          ストーリーテスト    ユーザビリティテスト




                        負荷テスト
          ユニットテスト     パフォーマンステスト



 自動
                    技術面
テストの4象限モデル
                ビジネス面
                                   手動


            機能テスト      受け入れテスト




                                   製品を批評
 チームを支援




          ストーリーテスト    ユーザビリティテスト




                        負荷テスト
          ユニットテスト     パフォーマンステスト



 自動
                    技術面
チームを支援するテスト
自分のコードへの自信

積極的なリファクタリング

安心できるリリース
技術面のテスト
プログラマが行う

プロダクションコードの作成を支援する

ビジネス的価値 < 技術的負債の低減
ユニットテストの特徴
プログラマが行い、

開発チームを支援し、

技術面に属し、

自動化が可能。
セーフティネット




   http://www.flickr.com/photos/32010000@N08/2987901256/
品質とユニットテスト
ユニットテストで直接の品質はあがらない

品質を高めるにはビジネス面のテストが必要

要件を満たしているか?(受け入れテスト)

使いやすいか?(ユーザビリティテスト)

ユニットテストにより技術的負債が減る

変化や追加要求に強くなる
ユニットテストの
                     学習方法




http://www.flickr.com/photos/alisdair/135306281/
ユニットテストは難しい?
ユニットテストは難しい?




     YES
ユニットテストは難しい?
習得するにはそれなりに書く必要

テスト技法を学ぶ必要

テストを書くプロジェクトに参加する必要

チーム全体の意識改革が必要


       YES
ユニットテストは簡単?
ユニットテストは簡単?




     YES
ユニットテストは簡単?
書けば書くほど身につけることができる

パターン化しやすい


       YES
ユニットテストは有効?
ユニットテストは有効?




     YES
ユニットテストは有効?
積極的なリファクタリングによる改善

安心感と自信

より良い設計

デグレ(リグレッション)の予防


         YES
ユニットテストは開発の基盤
リファクタリング

継続的インテグレーション

カバレッジ測定

テスト駆動開発
ユニットテストを学習するコツ
たくさん書く

書いて整理する

なんでも自動化する
ユニットテストを学習するコツ
たくさん書く

書いて整理する

なんでも自動化する
ユニットテストを学習するコツ
たくさん書く

書いて整理する

なんでも自動化する
増えるテストコード
http://www.flickr.com/photos/62765927@N00/2293652369/
DRY原則
Don t Repeat Yourself

重複は悪

コピペはバグの温床
DRY原則
Don t Repeat Yourself

重複は悪

コピペはバグの温床


そう、プロダクションコードならばね
テストコードの特徴
似たようなコードが多くなる

異なるのはパラメータ

異なるのは前提条件

効率良くテストケースを増やしたい

各テストケースで完結する

見通しが良いことが必要
テストコードを整理する方針
重複を排除し過ぎると可読性が落ちる

テストケース毎に独立させる

テストケースを追加しやすくする

修正する場合は影響範囲を最小限にする
勝利の
カスタムMatcher、カスタムRule

構造化テスト(Enclosed)

パラメータ化テスト(Theories)

テストダブル(モックやスタブ)

テスト技法
https://github.com/shuji/demo-refactering-unittest




デモ
ArrayListのテスト
リストが初期状態の時sizeは0を返す

リストに1件の文字列を含む時sizeは1を返す

リストに2件の文字列を含む時sizeは2を返す

リストが初期状態の時get_0は
IndexOutOfBoundsExceptionを送出する

リストに1件の文字列を含む時get_0はhelloを返す

リストに2件の文字列を含む時get_0はhelloを返す

etc....
テストクラスを構造化する
同じ階層で多くのテストケースを管理しない

同じフォルダに大量のファイルと同じ

構造化してテストケースを整理

初期化処理が共通するテストをまとめる

Enclosedテストランナー
テストクラスを構造化する
同じ階層で多くのテストケースを管理しない

同じフォルダに大量のファイルと同じ

構造化してテストケースを整理

初期化処理が共通するテストをまとめる

Enclosedテストランナー

       6章 テストのコンテキスト
消費税計算クラスのテスト
コンストラクタで税率を指定できる

  new ConsumptionTax(5);

applyメソッドは金額を指定し、税込み金額
を返す
パラメータ化テストを使う
多くのパターンでテストしたい

テストケースで異なるのはパラメータのみ

自然とコピペが多くなる

テストケースとテストデータを分離する

Theoriesテストランナー
パラメータ化テストを使う
多くのパターンでテストしたい

テストケースで異なるのはパラメータのみ

自然とコピペが多くなる

テストケースとテストデータを分離する

Theoriesテストランナー

       8章 パラメータ化テスト
複雑な条件のテスト
合計金額が6000円以上の場合、送料無料となる
割引クーポン(10%)を利用する場合、消費税適用
前の合計金額に適用する
個々の商品に割引が設定されている商品は割引クーポ
ンには適用されない
送料無料は割引後の合計金額を基準とする
送料は全国一律で800円となる
代引きの場合、手数料が300円(税込み)発生する
消費税は5%とする
Cucumberの活用
テストケースをシナリオとして記述

 日本語によるテストケース

 テーブル表記が扱える

JUnitを使えれば簡単に使える
Cucumberの活用
テストケースをシナリオとして記述

 日本語によるテストケース

 テーブル表記が扱える

JUnitを使えれば簡単に使える


      17章 振舞駆動開発
補足)テストデータの選択
テスト技法を学ぶ

 同値クラス(P28)

 境界値 (P28)

 ペア構成テスト( )

  オールペア法

  直交表
組み合わせの効率化
TestNo   送料   セール品   クーポン   代引き
   1     ✓     ✓      ✓      ✓

   2     ✓     ✓      ✓

   3     ✓            ✓      ✓

   4     ✓     ✓

   5     ✓            ✓

   6     ✓                   ✓

   7           ✓      ✓      ✓

   8           ✓      ✓

   9                  ✓      ✓

  10           ✓

  11                  ✓

  12                         ✓

  13                  ✓      ✓

  14                  ✓

  15                         ✓

  16
オールペア法
組み合わせテストの技法

欠陥は単条件のテストである程度カバー可能

2条件の組み合わせ網羅で9割近くカバー

3条件以上の組み合わせは費用対効果は低い

すべての要素の組み合わせを網羅
http://www.allpairstesting.com/allpairsgenerator
オールペア法
TestNo   送料   セール品   クーポン   代引き   条件
   1     ✓     ✓      ✓      ✓    4

   2     ✓     ✓      ✓           3

   3     ✓     ✓             ✓    3

   4     ✓            ✓      ✓    3

   5           ✓      ✓      ✓    3

   6     ✓     ✓                  2

   7     ✓            ✓           2

   8     ✓                   ✓    2

   9           ✓      ✓           2

  10           ✓             ✓    2

  11                  ✓      ✓    2

  12     ✓                        1

  13           ✓                  1

  14                  ✓           1

  15                         ✓    1

  16                              0
まとめ
テストケースの構造化(Enclosed)

共通の初期化でテストケースをまとめる

パラメータ化テスト(Theories)

テストデータとテストケースを分離する

Cucumberによる機能テスト

テストによって適するツールは異なる

テスト技法

効率良くテストケースを選択
Have a good testing!

Más contenido relacionado

La actualidad más candente

テストエンジニアのおっさんの日常です
テストエンジニアのおっさんの日常ですテストエンジニアのおっさんの日常です
テストエンジニアのおっさんの日常です
ryuji koyama
 
単体テストで工数を短縮する
単体テストで工数を短縮する単体テストで工数を短縮する
単体テストで工数を短縮する
Wataru Terada
 
アジャイル×テスト開発を考える
アジャイル×テスト開発を考えるアジャイル×テスト開発を考える
アジャイル×テスト開発を考える
yasuohosotani
 
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
テスト分析入門 -「ゆもつよメソッド」を例に- #wacateテスト分析入門 -「ゆもつよメソッド」を例に- #wacate
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
Kinji Akemine
 

La actualidad más candente (20)

#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
 
【STAC2017】テスト自動化システム 成長記
【STAC2017】テスト自動化システム 成長記【STAC2017】テスト自動化システム 成長記
【STAC2017】テスト自動化システム 成長記
 
JavaScript Unit Test Why? What? How?
JavaScript Unit Test Why? What? How?JavaScript Unit Test Why? What? How?
JavaScript Unit Test Why? What? How?
 
EMTEを使って自動化の費用対効果をわかりやすく表現する
EMTEを使って自動化の費用対効果をわかりやすく表現するEMTEを使って自動化の費用対効果をわかりやすく表現する
EMTEを使って自動化の費用対効果をわかりやすく表現する
 
【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか #rakutentech
【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか  #rakutentech【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか  #rakutentech
【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか #rakutentech
 
SGT2013 技術トークス「アジャイルテスティング」
SGT2013 技術トークス「アジャイルテスティング」SGT2013 技術トークス「アジャイルテスティング」
SGT2013 技術トークス「アジャイルテスティング」
 
異業種でのテスト自動化の実際
異業種でのテスト自動化の実際異業種でのテスト自動化の実際
異業種でのテスト自動化の実際
 
Twitter4Jとテスト
Twitter4JとテストTwitter4Jとテスト
Twitter4Jとテスト
 
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014
 
テストを分類してみよう!
テストを分類してみよう!テストを分類してみよう!
テストを分類してみよう!
 
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
 
テストエンジニアのおっさんの日常です
テストエンジニアのおっさんの日常ですテストエンジニアのおっさんの日常です
テストエンジニアのおっさんの日常です
 
単体テストで工数を短縮する
単体テストで工数を短縮する単体テストで工数を短縮する
単体テストで工数を短縮する
 
WACATE2019冬 ソフトウェアテスト業界でのステップアップを考えよう #wacate
WACATE2019冬 ソフトウェアテスト業界でのステップアップを考えよう #wacateWACATE2019冬 ソフトウェアテスト業界でのステップアップを考えよう #wacate
WACATE2019冬 ソフトウェアテスト業界でのステップアップを考えよう #wacate
 
テスト自動化のこれまでとこれから
テスト自動化のこれまでとこれからテスト自動化のこれまでとこれから
テスト自動化のこれまでとこれから
 
「トピックモデル」を使った「バグチケットの自動タグ付け」
「トピックモデル」を使った「バグチケットの自動タグ付け」「トピックモデル」を使った「バグチケットの自動タグ付け」
「トピックモデル」を使った「バグチケットの自動タグ付け」
 
アジャイル×テスト開発を考える
アジャイル×テスト開発を考えるアジャイル×テスト開発を考える
アジャイル×テスト開発を考える
 
SGT技術トークス 継続的デリバリー
SGT技術トークス 継続的デリバリーSGT技術トークス 継続的デリバリー
SGT技術トークス 継続的デリバリー
 
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
 
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
テスト分析入門 -「ゆもつよメソッド」を例に- #wacateテスト分析入門 -「ゆもつよメソッド」を例に- #wacate
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
 

Destacado

Destacado (7)

リーダブルコード : このコード、読み易くなくなくない?
リーダブルコード : このコード、読み易くなくなくない?リーダブルコード : このコード、読み易くなくなくない?
リーダブルコード : このコード、読み易くなくなくない?
 
今日からはじめるリファクタリング
今日からはじめるリファクタリング今日からはじめるリファクタリング
今日からはじめるリファクタリング
 
レガシーコード改善のススメ
レガシーコード改善のススメレガシーコード改善のススメ
レガシーコード改善のススメ
 
8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室
 
大規模データ時代に求められる自然言語処理
大規模データ時代に求められる自然言語処理大規模データ時代に求められる自然言語処理
大規模データ時代に求められる自然言語処理
 
テスト自動化とアーキテクチャ
テスト自動化とアーキテクチャテスト自動化とアーキテクチャ
テスト自動化とアーキテクチャ
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
 

Similar a テストコードのリファクタリング

#NagoyaTesting アジャイルなテストの見積りと計画づくり
#NagoyaTesting アジャイルなテストの見積りと計画づくり #NagoyaTesting アジャイルなテストの見積りと計画づくり
#NagoyaTesting アジャイルなテストの見積りと計画づくり
kyon mm
 
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-
アジャイルテスト  -高品質を追求するアジャイルチームにおけるテストの視点-アジャイルテスト  -高品質を追求するアジャイルチームにおけるテストの視点-
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-
Satoshi Masuda
 
Continuous delivery chapter4
Continuous delivery chapter4Continuous delivery chapter4
Continuous delivery chapter4
favril1
 
開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~
開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~
開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~
mafujiwara
 
19-B-4 開発品質向上のための、ASQ/ALMソリューション
19-B-4 開発品質向上のための、ASQ/ALMソリューション19-B-4 開発品質向上のための、ASQ/ALMソリューション
19-B-4 開発品質向上のための、ASQ/ALMソリューション
Developers Summit
 
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめJenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
atsushi_tmx
 
第3回ソフトウェアテストセミナー
第3回ソフトウェアテストセミナー第3回ソフトウェアテストセミナー
第3回ソフトウェアテストセミナー
Tomoyuki Sato
 

Similar a テストコードのリファクタリング (20)

#NagoyaTesting アジャイルなテストの見積りと計画づくり
#NagoyaTesting アジャイルなテストの見積りと計画づくり #NagoyaTesting アジャイルなテストの見積りと計画づくり
#NagoyaTesting アジャイルなテストの見積りと計画づくり
 
アジャイルなテストの見積もりと計画作り
アジャイルなテストの見積もりと計画作りアジャイルなテストの見積もりと計画作り
アジャイルなテストの見積もりと計画作り
 
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テストはこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テスト
 
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeploy
 
Gui自動テストツール基本
Gui自動テストツール基本Gui自動テストツール基本
Gui自動テストツール基本
 
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-
アジャイルテスト  -高品質を追求するアジャイルチームにおけるテストの視点-アジャイルテスト  -高品質を追求するアジャイルチームにおけるテストの視点-
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-
 
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?
 
20161218 selenium study4
20161218 selenium study420161218 selenium study4
20161218 selenium study4
 
ITS fidel
ITS fidelITS fidel
ITS fidel
 
Continuous delivery chapter4
Continuous delivery chapter4Continuous delivery chapter4
Continuous delivery chapter4
 
20121019 jenkins勉強会lt資料
20121019 jenkins勉強会lt資料20121019 jenkins勉強会lt資料
20121019 jenkins勉強会lt資料
 
開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~
開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~
開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~
 
19-B-4 開発品質向上のための、ASQ/ALMソリューション
19-B-4 開発品質向上のための、ASQ/ALMソリューション19-B-4 開発品質向上のための、ASQ/ALMソリューション
19-B-4 開発品質向上のための、ASQ/ALMソリューション
 
ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略
 
Code complete ch22_developper_test
Code complete ch22_developper_testCode complete ch22_developper_test
Code complete ch22_developper_test
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前に
 
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめJenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
 
失敗から学ぶテスト自動化導入で大切なこと
失敗から学ぶテスト自動化導入で大切なこと失敗から学ぶテスト自動化導入で大切なこと
失敗から学ぶテスト自動化導入で大切なこと
 
第3回ソフトウェアテストセミナー
第3回ソフトウェアテストセミナー第3回ソフトウェアテストセミナー
第3回ソフトウェアテストセミナー
 
【システムテスト自動化カンファレンス2013 LT】 Data Driven Development (仮)
【システムテスト自動化カンファレンス2013 LT】 Data Driven Development (仮)【システムテスト自動化カンファレンス2013 LT】 Data Driven Development (仮)
【システムテスト自動化カンファレンス2013 LT】 Data Driven Development (仮)
 

Más de Shuji Watanabe

Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Shuji Watanabe
 
クラスメソッド会社説明会in札幌 — メンバー紹介 #cmdevio
クラスメソッド会社説明会in札幌 — メンバー紹介   #cmdevioクラスメソッド会社説明会in札幌 — メンバー紹介   #cmdevio
クラスメソッド会社説明会in札幌 — メンバー紹介 #cmdevio
Shuji Watanabe
 

Más de Shuji Watanabe (20)

Serverless - Developers.IO 2019
Serverless - Developers.IO 2019Serverless - Developers.IO 2019
Serverless - Developers.IO 2019
 
Ansible ハンズオン on AWS - DevelopersIO 2017
Ansible ハンズオン on AWS - DevelopersIO 2017Ansible ハンズオン on AWS - DevelopersIO 2017
Ansible ハンズオン on AWS - DevelopersIO 2017
 
SSMでマネージドEC2 #reinvent #cmdevio
SSMでマネージドEC2 #reinvent #cmdevioSSMでマネージドEC2 #reinvent #cmdevio
SSMでマネージドEC2 #reinvent #cmdevio
 
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #Eプロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
 
ELBの概要と勘所
ELBの概要と勘所ELBの概要と勘所
ELBの概要と勘所
 
AWSによるWebサイト構築と運用 - concrete5 編 -
AWSによるWebサイト構築と運用 - concrete5 編 -AWSによるWebサイト構築と運用 - concrete5 編 -
AWSによるWebサイト構築と運用 - concrete5 編 -
 
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
 
CloudSearchによる全文検索 - CM:道 2014/08/01
CloudSearchによる全文検索 - CM:道 2014/08/01 CloudSearchによる全文検索 - CM:道 2014/08/01
CloudSearchによる全文検索 - CM:道 2014/08/01
 
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
 
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
TDD BootCamp in JJUG CCC - レガシーコード対策編 -TDD BootCamp in JJUG CCC - レガシーコード対策編 -
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
 
s3+cloud frontによる静的コンテンツ配信 - Sphinx編 #cmdevio
s3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevios3+cloud frontによる静的コンテンツ配信 - Sphinx編  #cmdevio
s3+cloud frontによる静的コンテンツ配信 - Sphinx編 #cmdevio
 
クラスメソッド会社説明会in札幌 — メンバー紹介 #cmdevio
クラスメソッド会社説明会in札幌 — メンバー紹介   #cmdevioクラスメソッド会社説明会in札幌 — メンバー紹介   #cmdevio
クラスメソッド会社説明会in札幌 — メンバー紹介 #cmdevio
 
テスト駆動開発へようこそ
テスト駆動開発へようこそテスト駆動開発へようこそ
テスト駆動開発へようこそ
 
テスト駆動開発のはじめ方
テスト駆動開発のはじめ方テスト駆動開発のはじめ方
テスト駆動開発のはじめ方
 
ユースケースからテスト駆動開発へ
ユースケースからテスト駆動開発へユースケースからテスト駆動開発へ
ユースケースからテスト駆動開発へ
 
テスト駆動開発入門
テスト駆動開発入門テスト駆動開発入門
テスト駆動開発入門
 
テスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ーテスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ー
 
アジャイルテスティング
アジャイルテスティングアジャイルテスティング
アジャイルテスティング
 
テストリストの見つけ方
テストリストの見つけ方テストリストの見つけ方
テストリストの見つけ方
 
TDDをはじめよう
TDDをはじめようTDDをはじめよう
TDDをはじめよう
 

Último

Último (11)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

テストコードのリファクタリング

Notas del editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. 30秒程度\n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n