SlideShare une entreprise Scribd logo
1  sur  37
テストしなイカ?
Seleniumで自動ブラウザテスト

      @MIKAGE014

       2011.11.05

    第11回山口県WEB勉強会
About Me

          インフラエンジニア 5年→転職
Linux, Solarisでインターネットシステムの設計・構築

             プログラマ 3年目
CAKEPHP + Postgresqlで業務系WEBシステムの設
                計・構築

                  ブログ
    http://d.hatena.ne.jp/mikage014/

          Twitter: @mikage014
          ←このアイコンが目印です
今日話すこと


   1.仕様変更に潜むバグ

     2.開発の三本柱

3.SELENIUMで自動ブラウザテスト
きっかけ

 稼働中の業務システムの追加変更
   フォームの項目追加

   ステータス追加。ステータスによって表示の仕方を変える

 変更した後、今まで動いてた部分が動かなくなった
  り
 バグを直すと別のところがバグったり


 ・・・どげんかせんといかん
仕様変更に潜むバグ
    5
仕様変更をピラミッドの建設に例え
唐突ですが…

          ると

 実物がない段階
仕様変更をピラミッドの建設に例え
唐突ですが…

          ると

 徐々に形が見えてくる
唐突ですが… 仕様変更をピラミッドの建設に例え
            ると

 完成
仕様変更をピラミッドの建設に例え
唐突ですが…

          ると
仕様変更をピラミッドの建設に例え
唐突ですが…

          ると

 積み上げた石を元に戻す
 部屋の数を増やして積みなおす
   空間が増えた。強度は大丈夫・・・?

 石を元に戻して積み直す時間は確保されている?
仕様変更をピラミッドの建設に例え
唐突ですが…

          ると
唐突ですが…  仕様変更をピラミッドの建設に例え
             ると

 DB設計書を変更
 DBのカラムを増やす
   テストDBに追加して確認 → 本番DBに反映

 表示・編集・検索結果・CSV出力・PDF出力 各画面
 に項目を追加
    抜けは無い? ちゃんと更新できて表示される?
    jQueryなどで触っているところも問題ない?
 すべての影響範囲をチェックする時間は確保されて
 いる?
    ( ╹ω╹)? そもそもどこまで影響するの?
仕様変更に潜むバグ

 当初の仕様に沿って作っているとき
   各フェーズに集中して作業すればよい
仕様変更に潜むバグ

 変更を加えるとき
   各フェーズを行ったり来たり

   仕様に沿って作るときよりも考えなければならないことが多
    い
仕様変更に潜むバグ

 あとは作り方とか
   ほんとはきっちり作るべきだけど時間無いからやっつけコー
    ドで
   みたいな箇所が変更対象になったりするとカオスさが増す
現実的なところとして

 どうしても無理! なところ以外は割と対応する
   お客さんは業務のことは詳しい、がプログラムのことは詳し
    くない
   開発者はプログラムのことは詳しい、が業務のことは詳しく
    ない
   業務の暗黙知は結構ある
        この条件の時はーこうなって、条件が重なったときはこうで~
    人的処理のあいまいさ
        帳票系の欄外記入とか…
つまり

 常に変更に備えよう


 変更に強い作りにする


 PHPカンファレンス2011でいい話を聞いてきまし
た。
開発の三本柱
  19
開発の三本柱

 バージョン管理
   Subversion, Git, etc.

 テスティング
   PHPUnit, SimpleTest, etc.

 自動化
   IDE連携
         Eclipseプラグイン, Netbeansプラグイン, Emacsプラグイン, etc.
     CI(Continuous Integration)
         Jenkins(Hudson) etc.
余談ですが

 バージョン管理について第6回山口県WEB勉強会で発表しました
 http://www.slideshare.net/mikage014/yamaguchi-webgroup06-subversion
テスト

 テスト駆動開発(TDD: Test-Driven Development)
 Red → Green → リファクタリング
   プログラムが正しく動いていることをテストするコードを先
    に書いて開発する
 テストにパスしている限り、正しく動いていること
 を担保する
テストの例

 プログラムのロジック
   空のデータベースに1件のレコードを登録して、検索すると1
    件のデータが返ってくるはず
     登録機能がうまく動いて、検索機能もうまく動いている


 フォーム画面
   郵便番号欄に数値を入力すれば登録できるが、数値ではない
    文字が入っていたらエラーで登録できないはず
     バリデーションに引っかかって所定のエラーメッセージが出るこ
      と
テストを書いていくと何がうれしいのか?

 仕様通りに作っているときはそれほどでもない
仕様変更に潜むバグ

 当初の仕様に沿って作っているとき
   各フェーズに集中して作業すればよい
テストを書いていくと何がうれしいのか?

 仕様変更を加えるとき、今まで動いていたところが
動かなくなっていないか?
仕様変更に潜むバグ

 変更を加えるとき
   各フェーズを行ったり来たり

   仕様に沿って作るときよりも考えなければならないことが多
    い
従来のやり方では…

 ある程度確認したらあとは   祈る!
テストがある環境では…

 これまでのテストをすべてパスしているかチェック
すればよい
   テストしている範囲においては安全であることが担保される
       もちろんテスト漏れは有り得る
Seleniumで自動ブラウザテスト
        30
Selenium

 http://seleniumhq.org/


 Selenium IDE
   単体動作するFirefox プラグイン。最初はこれがおすすめ



 Selenium Server + Selenium Client Driver
   プログラムから制御する構成
        Java, C#, Ruby, Python, PHP
    テストに組み込むにはこちら
Selenium Demo

 Selenium IDE


 Selenium Server + Selenium Client Driver
   CakePHP+SimpleTest+Testing::Selenium

   おまけでテスト結果のグラフ化
まとめ
 33
まとめ

 テストの導入によって仕様変更の不安を軽減する
 デグレードのチェックをコンピュータに任せられる


 Seleniumを使うとブラウザ操作の自動テストができ
  る
 IE、Firefox、Chrome、Safariなどクロスブラウザ
  チェックも可能
未知数

 作りこんだ後での仕様変更やバグ修正にテストが追
 従できる?

 テストに割く時間がコストに見合う?
   未来のバグ修正の時間を先取りしていると考える

   費用対効果の高い個所を優先してテストを仕込んでいく
     お客さんが最初に開くページ、よく見るページとか
テストの先にある自動化(Jenkins)

 プログラムやHTMLファイルをリポジトリにコミッ
 トする度にテストを自動実行
    エラーが出たらメールで通知とか
    最新のプログラムが動く状態であることを担保
 Ex.    http://ci.cakephp.org/
ご静聴ありがとうございました
                                 37

                            @MIKAGE014

                             2011.11.05

                          第11回山口県WEB勉強会


使用画像
http://piapro.jp/t/bvvK

Contenu connexe

Tendances

テスト自動化の様々な道具を使ってみた四方山話
テスト自動化の様々な道具を使ってみた四方山話テスト自動化の様々な道具を使ってみた四方山話
テスト自動化の様々な道具を使ってみた四方山話
haljik Seiji
 
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
Akira Inoue
 
Net なプロジェクトでも jenkins を使ってみた
Net なプロジェクトでも jenkins を使ってみたNet なプロジェクトでも jenkins を使ってみた
Net なプロジェクトでも jenkins を使ってみた
Oda Shinsuke
 

Tendances (20)

App extensionでテストコードを書く
App extensionでテストコードを書くApp extensionでテストコードを書く
App extensionでテストコードを書く
 
Jenkinsを利用したCI、弊社導入事例
Jenkinsを利用したCI、弊社導入事例Jenkinsを利用したCI、弊社導入事例
Jenkinsを利用したCI、弊社導入事例
 
Selenium IDE for primer
Selenium IDE for primerSelenium IDE for primer
Selenium IDE for primer
 
テスト自動化の様々な道具を使ってみた四方山話
テスト自動化の様々な道具を使ってみた四方山話テスト自動化の様々な道具を使ってみた四方山話
テスト自動化の様々な道具を使ってみた四方山話
 
ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法
ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法
ウォーターフォール・アジャイル・DevOps どんなチームでも開発・テスト・リリースでVSTS/TFSをフル活用する方法
 
海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014
 
「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界
 
Jenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションJenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーション
 
kintoneチームを支えるSeleniumテスト
kintoneチームを支えるSeleniumテストkintoneチームを支えるSeleniumテスト
kintoneチームを支えるSeleniumテスト
 
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
.NET Core 5 ~ Windows, Linux, OS X そして Docker まで ~
 
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
 
TFS超入門。いつやるの。今でしょ
TFS超入門。いつやるの。今でしょTFS超入門。いつやるの。今でしょ
TFS超入門。いつやるの。今でしょ
 
Team Foundation Serverで出てくるキーワード
Team Foundation Serverで出てくるキーワードTeam Foundation Serverで出てくるキーワード
Team Foundation Serverで出てくるキーワード
 
Net なプロジェクトでも jenkins を使ってみた
Net なプロジェクトでも jenkins を使ってみたNet なプロジェクトでも jenkins を使ってみた
Net なプロジェクトでも jenkins を使ってみた
 
DevOps for Small Starter
DevOps for Small StarterDevOps for Small Starter
DevOps for Small Starter
 
Selenium勉強会
Selenium勉強会Selenium勉強会
Selenium勉強会
 
JustTechTalk#10 React開発における自動テスト実践
JustTechTalk#10 React開発における自動テスト実践JustTechTalk#10 React開発における自動テスト実践
JustTechTalk#10 React開発における自動テスト実践
 
Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介
 
[MR09] デスクトップ アプリをストアから配布するための A to Z
[MR09] デスクトップ アプリをストアから配布するための A to Z[MR09] デスクトップ アプリをストアから配布するための A to Z
[MR09] デスクトップ アプリをストアから配布するための A to Z
 
テスト自動化ツール[Selenium]を検討してみて
テスト自動化ツール[Selenium]を検討してみてテスト自動化ツール[Selenium]を検討してみて
テスト自動化ツール[Selenium]を検討してみて
 

En vedette

サルから進化(?) Selenium WebDriverの 自動実行プログラム
サルから進化(?)Selenium WebDriverの自動実行プログラムサルから進化(?)Selenium WebDriverの自動実行プログラム
サルから進化(?) Selenium WebDriverの 自動実行プログラム
洋史 東平
 

En vedette (20)

Selenium2(web driver) ide編
Selenium2(web driver) ide編Selenium2(web driver) ide編
Selenium2(web driver) ide編
 
wankuma #28
wankuma #28wankuma #28
wankuma #28
 
Tutela hector sierra e ivana montes
Tutela hector sierra e ivana montesTutela hector sierra e ivana montes
Tutela hector sierra e ivana montes
 
【"8a1"20160729資料】
【"8a1"20160729資料】【"8a1"20160729資料】
【"8a1"20160729資料】
 
WebDriverで始めるUIスモークテスティング入門
WebDriverで始めるUIスモークテスティング入門WebDriverで始めるUIスモークテスティング入門
WebDriverで始めるUIスモークテスティング入門
 
Selenium2(web driver)
Selenium2(web driver)Selenium2(web driver)
Selenium2(web driver)
 
Selenium boot campの紹介
Selenium boot campの紹介Selenium boot campの紹介
Selenium boot campの紹介
 
bashでWebブラウザ(Selenium WebDriver)を動かした話
bashでWebブラウザ(Selenium WebDriver)を動かした話bashでWebブラウザ(Selenium WebDriver)を動かした話
bashでWebブラウザ(Selenium WebDriver)を動かした話
 
Pythonでwebdriver
PythonでwebdriverPythonでwebdriver
Pythonでwebdriver
 
サルから進化(?) Selenium WebDriverの 自動実行プログラム
サルから進化(?)Selenium WebDriverの自動実行プログラムサルから進化(?)Selenium WebDriverの自動実行プログラム
サルから進化(?) Selenium WebDriverの 自動実行プログラム
 
Db unitを使って なれる! レガシーコードメンテナー
Db unitを使って なれる! レガシーコードメンテナーDb unitを使って なれる! レガシーコードメンテナー
Db unitを使って なれる! レガシーコードメンテナー
 
Bootstrapにちょい足しアニメーション@春のJavascript祭り
Bootstrapにちょい足しアニメーション@春のJavascript祭りBootstrapにちょい足しアニメーション@春のJavascript祭り
Bootstrapにちょい足しアニメーション@春のJavascript祭り
 
Solaris 11.3(x86)でSelenium WebDriverを動かしてみた
Solaris 11.3(x86)でSelenium WebDriverを動かしてみたSolaris 11.3(x86)でSelenium WebDriverを動かしてみた
Solaris 11.3(x86)でSelenium WebDriverを動かしてみた
 
PowerShellでWebブラウザ(Selenium Webdriver)を動かした話
PowerShellでWebブラウザ(Selenium Webdriver)を動かした話PowerShellでWebブラウザ(Selenium Webdriver)を動かした話
PowerShellでWebブラウザ(Selenium Webdriver)を動かした話
 
Fluentlenium
FluentleniumFluentlenium
Fluentlenium
 
Alfresco紹介
Alfresco紹介Alfresco紹介
Alfresco紹介
 
エンタープライズ開発でのSelenium活用事例
エンタープライズ開発でのSelenium活用事例エンタープライズ開発でのSelenium活用事例
エンタープライズ開発でのSelenium活用事例
 
エーピーコミュニケーションズ セキュリティ分析チームのご紹介
エーピーコミュニケーションズ セキュリティ分析チームのご紹介 エーピーコミュニケーションズ セキュリティ分析チームのご紹介
エーピーコミュニケーションズ セキュリティ分析チームのご紹介
 
ディープラーニングとAppiumでモバイルテスト自動化
ディープラーニングとAppiumでモバイルテスト自動化ディープラーニングとAppiumでモバイルテスト自動化
ディープラーニングとAppiumでモバイルテスト自動化
 
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
 

Similaire à テストしなイカ? Seleniumで自動ブラウザテスト

MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発を
Atsuhiro Kubo
 
日本で DevOps を ロケットスタートする方法
日本で DevOps を  ロケットスタートする方法日本で DevOps を  ロケットスタートする方法
日本で DevOps を ロケットスタートする方法
Puppet
 
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshop
Daisuke Sugai
 

Similaire à テストしなイカ? Seleniumで自動ブラウザテスト (20)

Test automation strategy for .net core 3 transition
Test automation strategy for .net core 3 transitionTest automation strategy for .net core 3 transition
Test automation strategy for .net core 3 transition
 
Mizukiryu refactering-20110821
Mizukiryu refactering-20110821Mizukiryu refactering-20110821
Mizukiryu refactering-20110821
 
テスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ーテスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ー
 
【JaSST'11 Tokyo】 テスト イノベーション
【JaSST'11 Tokyo】 テスト イノベーション【JaSST'11 Tokyo】 テスト イノベーション
【JaSST'11 Tokyo】 テスト イノベーション
 
経営を支えるIT部門実現の記録2005
経営を支えるIT部門実現の記録2005経営を支えるIT部門実現の記録2005
経営を支えるIT部門実現の記録2005
 
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】 Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
 
Nds#24 単体テスト
Nds#24 単体テストNds#24 単体テスト
Nds#24 単体テスト
 
CruiseControl.NET設置
CruiseControl.NET設置CruiseControl.NET設置
CruiseControl.NET設置
 
あなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CIあなたの安心を高速に守る Container-based CI
あなたの安心を高速に守る Container-based CI
 
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
 
【Agile Forum in Gifu】 Visual Studio 2010 でみる、アジャイル開発における開発支援ツールの活用
【Agile Forum in Gifu】 Visual Studio 2010 でみる、アジャイル開発における開発支援ツールの活用【Agile Forum in Gifu】 Visual Studio 2010 でみる、アジャイル開発における開発支援ツールの活用
【Agile Forum in Gifu】 Visual Studio 2010 でみる、アジャイル開発における開発支援ツールの活用
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発を
 
【Agile Conference tokyo 2011】 継続的フィードバック
【Agile Conference tokyo 2011】 継続的フィードバック【Agile Conference tokyo 2011】 継続的フィードバック
【Agile Conference tokyo 2011】 継続的フィードバック
 
日本で DevOps を ロケットスタートする方法
日本で DevOps を  ロケットスタートする方法日本で DevOps を  ロケットスタートする方法
日本で DevOps を ロケットスタートする方法
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
 
Selenium WebDriver + python で E2Eテスト自動化
Selenium WebDriver + python で E2Eテスト自動化Selenium WebDriver + python で E2Eテスト自動化
Selenium WebDriver + python で E2Eテスト自動化
 
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...
チーム×ツール Team Foundation Server & Service 共感しActionできる開発基盤 アルティメイタム【デブサミ 2013 ...
 
デスクトップ アプリ開発における Visual Studio の進化
デスクトップ アプリ開発における Visual Studio の進化デスクトップ アプリ開発における Visual Studio の進化
デスクトップ アプリ開発における Visual Studio の進化
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
 
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshop
 

Plus de Ohishi Mikage (6)

Html5 drag and_drop
Html5 drag and_dropHtml5 drag and_drop
Html5 drag and_drop
 
Creating Mashup service in Yamaguchi
Creating Mashup service in YamaguchiCreating Mashup service in Yamaguchi
Creating Mashup service in Yamaguchi
 
Atnd地域検索作ったよー
Atnd地域検索作ったよーAtnd地域検索作ったよー
Atnd地域検索作ったよー
 
ピコピコ音楽と初音ミク
ピコピコ音楽と初音ミクピコピコ音楽と初音ミク
ピコピコ音楽と初音ミク
 
Yamaguchi webgroup06 subversion
Yamaguchi webgroup06 subversionYamaguchi webgroup06 subversion
Yamaguchi webgroup06 subversion
 
Online.sg #10 LT by mikage014
Online.sg #10 LT by mikage014Online.sg #10 LT by mikage014
Online.sg #10 LT by mikage014
 

テストしなイカ? Seleniumで自動ブラウザテスト