Suche senden
Hochladen
ひよこテスト駆動開発(PHPカンファレンス2014)
•
4 gefällt mir
•
4,179 views
Oonishi Keitarou
Folgen
PHPカンファレンス2014で発表させていただいた資料です。
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 34
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
チラ見せ♡ナイト@20150410 LT公開用
チラ見せ♡ナイト@20150410 LT公開用
Keisuke Utsumi
日曜プログラマーが 1週間くらいで通信対戦ゲームを作ってみた
日曜プログラマーが 1週間くらいで通信対戦ゲームを作ってみた
Yuusuke Takeuchi
開発者による現実的な自動化テスト及びRubyのテストツールについて
開発者による現実的な自動化テスト及びRubyのテストツールについて
Takaaki Kasai
テストを書くのが嫌いな君へ #m3dev
テストを書くのが嫌いな君へ #m3dev
Kazuhiro Sera
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
Takafumi ONAKA
価値あるシステムテスト自動化の実現By friendly
価値あるシステムテスト自動化の実現By friendly
Tatsuya Ishikawa
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
Kenji Fukumoto
プロト〜サービスアウトまでの開発支援ツールの作り方〜CrystalFantasia〜
プロト〜サービスアウトまでの開発支援ツールの作り方〜CrystalFantasia〜
Keisuke Utsumi
Empfohlen
チラ見せ♡ナイト@20150410 LT公開用
チラ見せ♡ナイト@20150410 LT公開用
Keisuke Utsumi
日曜プログラマーが 1週間くらいで通信対戦ゲームを作ってみた
日曜プログラマーが 1週間くらいで通信対戦ゲームを作ってみた
Yuusuke Takeuchi
開発者による現実的な自動化テスト及びRubyのテストツールについて
開発者による現実的な自動化テスト及びRubyのテストツールについて
Takaaki Kasai
テストを書くのが嫌いな君へ #m3dev
テストを書くのが嫌いな君へ #m3dev
Kazuhiro Sera
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
Takafumi ONAKA
価値あるシステムテスト自動化の実現By friendly
価値あるシステムテスト自動化の実現By friendly
Tatsuya Ishikawa
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編
Kenji Fukumoto
プロト〜サービスアウトまでの開発支援ツールの作り方〜CrystalFantasia〜
プロト〜サービスアウトまでの開発支援ツールの作り方〜CrystalFantasia〜
Keisuke Utsumi
第8回 Ext JS / Ext GWT 勉強会 - 小堤氏資料
第8回 Ext JS / Ext GWT 勉強会 - 小堤氏資料
Yuki Naotori
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
Tatsuya Ishikawa
はじめてのTypescript
はじめてのTypescript
純一 榮枝
永和コンサル式プレゼン作成法(公開用)
永和コンサル式プレゼン作成法(公開用)
Yasui Tsutomu
現場で役立つシステム設計の原則への感謝
現場で役立つシステム設計の原則への感謝
Ishibashi Ryo
中の下のエンジニアを脱出するための目標設定
中の下のエンジニアを脱出するための目標設定
空宙 小笠原
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
Yahoo!デベロッパーネットワーク
Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道
Shinya Okano
日曜プログラマーがHtml5とかで通信対戦ゲームを作ってます
日曜プログラマーがHtml5とかで通信対戦ゲームを作ってます
Yuusuke Takeuchi
中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術
Noriaki Kadota
エッセンシャルCore springハンズオン
エッセンシャルCore springハンズオン
土岐 孝平
通信対戦ゲームを作った話
通信対戦ゲームを作った話
mipsparc
大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術
Daisuke Tamada
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
Satoshi Takami
おーいみんな、JavaやろうぜJava
おーいみんな、JavaやろうぜJava
Kazumune Katagiri
Visual Studio 2015 の新機能: Pex はユニットテストの福音となるか!?
Visual Studio 2015 の新機能: Pex はユニットテストの福音となるか!?
Yasuhiko Yamamoto
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
civicpg
Scala、play初心者が触った感想 share用
Scala、play初心者が触った感想 share用
amkt922
Djangoアプリの実践的設計手法
Djangoアプリの実践的設計手法
Ian Lewis
恋するJenkins
恋するJenkins
Hiroshi Nakao
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminar
Manabu Shimobe
Weitere ähnliche Inhalte
Was ist angesagt?
第8回 Ext JS / Ext GWT 勉強会 - 小堤氏資料
第8回 Ext JS / Ext GWT 勉強会 - 小堤氏資料
Yuki Naotori
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
Tatsuya Ishikawa
はじめてのTypescript
はじめてのTypescript
純一 榮枝
永和コンサル式プレゼン作成法(公開用)
永和コンサル式プレゼン作成法(公開用)
Yasui Tsutomu
現場で役立つシステム設計の原則への感謝
現場で役立つシステム設計の原則への感謝
Ishibashi Ryo
中の下のエンジニアを脱出するための目標設定
中の下のエンジニアを脱出するための目標設定
空宙 小笠原
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
Yahoo!デベロッパーネットワーク
Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道
Shinya Okano
日曜プログラマーがHtml5とかで通信対戦ゲームを作ってます
日曜プログラマーがHtml5とかで通信対戦ゲームを作ってます
Yuusuke Takeuchi
中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術
Noriaki Kadota
エッセンシャルCore springハンズオン
エッセンシャルCore springハンズオン
土岐 孝平
通信対戦ゲームを作った話
通信対戦ゲームを作った話
mipsparc
大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術
Daisuke Tamada
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
Satoshi Takami
おーいみんな、JavaやろうぜJava
おーいみんな、JavaやろうぜJava
Kazumune Katagiri
Visual Studio 2015 の新機能: Pex はユニットテストの福音となるか!?
Visual Studio 2015 の新機能: Pex はユニットテストの福音となるか!?
Yasuhiko Yamamoto
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
civicpg
Scala、play初心者が触った感想 share用
Scala、play初心者が触った感想 share用
amkt922
Djangoアプリの実践的設計手法
Djangoアプリの実践的設計手法
Ian Lewis
Was ist angesagt?
(20)
第8回 Ext JS / Ext GWT 勉強会 - 小堤氏資料
第8回 Ext JS / Ext GWT 勉強会 - 小堤氏資料
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
はじめてのTypescript
はじめてのTypescript
永和コンサル式プレゼン作成法(公開用)
永和コンサル式プレゼン作成法(公開用)
現場で役立つシステム設計の原則への感謝
現場で役立つシステム設計の原則への感謝
中の下のエンジニアを脱出するための目標設定
中の下のエンジニアを脱出するための目標設定
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道
日曜プログラマーがHtml5とかで通信対戦ゲームを作ってます
日曜プログラマーがHtml5とかで通信対戦ゲームを作ってます
中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術
エッセンシャルCore springハンズオン
エッセンシャルCore springハンズオン
通信対戦ゲームを作った話
通信対戦ゲームを作った話
大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
おーいみんな、JavaやろうぜJava
おーいみんな、JavaやろうぜJava
Visual Studio 2015 の新機能: Pex はユニットテストの福音となるか!?
Visual Studio 2015 の新機能: Pex はユニットテストの福音となるか!?
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
#nds47 WebのテストをPythonでやってエビデンス取得作業から開放?
Scala、play初心者が触った感想 share用
Scala、play初心者が触った感想 share用
Djangoアプリの実践的設計手法
Djangoアプリの実践的設計手法
Ähnlich wie ひよこテスト駆動開発(PHPカンファレンス2014)
恋するJenkins
恋するJenkins
Hiroshi Nakao
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminar
Manabu Shimobe
ブラウザだけで学ぶWebアプリ開発
ブラウザだけで学ぶWebアプリ開発
schoowebcampus
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
Dai FUJIHARA
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
Rakuten Group, Inc.
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
Katsuhiro Miura
TDDはじめる前に
TDDはじめる前に
Yasui Tsutomu
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
Yahoo!デベロッパーネットワーク
10分ユーザテストのすすめ
10分ユーザテストのすすめ
Shingo Katsushima
endeworksでのWebAppの作り方
endeworksでのWebAppの作り方
33rpm
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
Shou Takenaka
iOS豆知識ver0.0.5
iOS豆知識ver0.0.5
ppengotsu Name
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境
Toshiyuki Hirata
Enchant.js入門
Enchant.js入門
Yuusuke Takeuchi
Aizu.LT16 社会人1年目の失敗とContinuous Integration
Aizu.LT16 社会人1年目の失敗とContinuous Integration
Tomoaki Tamura
FriendlyとTestAssistantProでテスト自動化やってみた
FriendlyとTestAssistantProでテスト自動化やってみた
NakaiYusaku
CodingTips+ 基礎編
CodingTips+ 基礎編
Yusuke Ito
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops
ume3_
趣味プロダクトで楽しいコードライフワークを送る
趣味プロダクトで楽しいコードライフワークを送る
volpe_hd28v
Ähnlich wie ひよこテスト駆動開発(PHPカンファレンス2014)
(20)
恋するJenkins
恋するJenkins
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminar
ブラウザだけで学ぶWebアプリ開発
ブラウザだけで学ぶWebアプリ開発
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
テストコードの DRY と DAMP
テストコードの DRY と DAMP
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
TDDはじめる前に
TDDはじめる前に
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
10分ユーザテストのすすめ
10分ユーザテストのすすめ
endeworksでのWebAppの作り方
endeworksでのWebAppの作り方
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
iOS豆知識ver0.0.5
iOS豆知識ver0.0.5
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境
Enchant.js入門
Enchant.js入門
Aizu.LT16 社会人1年目の失敗とContinuous Integration
Aizu.LT16 社会人1年目の失敗とContinuous Integration
FriendlyとTestAssistantProでテスト自動化やってみた
FriendlyとTestAssistantProでテスト自動化やってみた
CodingTips+ 基礎編
CodingTips+ 基礎編
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops
趣味プロダクトで楽しいコードライフワークを送る
趣味プロダクトで楽しいコードライフワークを送る
Kürzlich hochgeladen
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Kürzlich hochgeladen
(8)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
ひよこテスト駆動開発(PHPカンファレンス2014)
1.
ひよこテスト駆動開発 - PHPとユニットテストとJenkinsとGitHubの話
- 株式会社サイバード 大西啓太郎
2.
自己紹介 • 名前: 大西啓太郎
@Dollhyn_kei • 株式会社サイバード ゲーム事業本部 恋愛ゲーム技術チーム所属 • エンジニア歴: 新卒1年目、半年が過ぎました • 普段のお仕事: ・女性向け恋愛ゲームのサーバーサイド開発 ・最近はJavaScriptでクライアントも • プライベートな開発 ・Ruby > PHP ・iOS, Androidのアプリなんかもやっています
3.
実際にプロジェクトで ユニットテストをはじめて使った時 にハマったことを
簡単にまとめてみました。 PHPUnitを使っています。
4.
今日のアジェンダ • DBを使ったユニットテストとスローテス
ト問題 • Jenkins・GitHubを使ったテストの自動化 • テストコードのアンチパターン • まとめ
5.
DBを使ったユニットテ ストとスローテスト問題
6.
チームの状況 • 実DB(MYSQL)を使ってDB処理
をテストしたい! • モックは使いたくない! • 本番に近いデータでテストがしたい
7.
DBを使ったユニットテスト を実行出来る条件 •
DB/テーブルが存在する • マスタデータが存在する • 不要なレコードに干渉されない
8.
ダメだったやりかた
9.
1つのテストが走るたびに マスターデータが読み込まれる
10.
1つのテストが終了する際には すべてデータを『TRUNCATE』して掃除する
11.
流石にテストにかかる時間が 長くなってしまった。
12.
やっぱり、最初のロード処理と 最後のTRUNCATE処理がボトルネックに
13.
マスターデータの読み込みは 一番最初に実行されるテストクラス (データセットアップ用クラス)でのみロードする
テストが実行されるたびに 新しいユーザーデータを発行することで 『TRUNCATE』を不要にしました。
14.
イメージ(以前) user_id: 001_t
test_hoge() TRUNCATE LOAD ユーザー作成 user_id: 001_t test_fuga() TRUNCATE LOAD ユーザー作成 user_id: 001_t test_piyo() TRUNCATE LOAD ユーザー作成
15.
user_id: 001_t test_hoge()
TRUNCATE LOAD ユーザー作成 user_id: 002_t test_fuga() ユーザー作成 user_id: 003_t test_piyo() ユーザー作成 イメージ(いま)
16.
user_id: 001_t test_hoge()
TRUNCATE LOAD ユーザー作成 user_id: 002_t test_fuga() ここが浮きます ユーザー作成 user_id: 003_t test_piyo() ユーザー作成 イメージ(いま)
17.
Jenkins・GitHubを使った ユニットテストの自動化
18.
開発の進め方
19.
出てきた問題点 • 複数のユニットテストのジョブが回っている時に
DBの整合性を保証ができない • ジョブを複数実行できず、待ちが発生して『プル リク』→『レビュー』→『マージ』→『デプロイ』 をスムーズに行えない • マイグレーションが扱いにくい
20.
解決策 ジョブの実行毎に新しいDBを作る。
21.
ビルド時の環境変数をもとに CREATE DATABASEを発行!
CREATE DATABASE HOGE_${BUILD_NUMBER}
22.
テストコードの アンチパターン
23.
アンチパターン1 『assertXXX(expected, actual)』
の引数の順番が逆
24.
期待値に検証対象の値が・・・
25.
テストが失敗した際の メッセージの文脈が逆になってしまう
26.
アンチパターン2 1つのテストケースに 複数のアサーション
27.
なにをテストしたいかが よくわからない
28.
1テストケース 1メソッドを守ればスッキリ
29.
アンチパターン3 類似なテストケース
30.
引数が違うだけ・・・
31.
@dataProviderでスッキリ
32.
まとめ
33.
まとめ • まずは、PHPユニットのドキュメントをじっく
り目を通す! • テストで扱うデータの初期化・破棄には気をつ ける! • Jenkinsでテストする場合はビルド毎に DBを作成する!
34.
ご静聴、 ありがとうございました
Jetzt herunterladen