狠狠撸

狠狠撸Share a Scribd company logo
ブラウザテスト自动化入门
テスト自动化の前に
テストの種類について
単体テスト
処理単位での仕様を満たしているかをテスト
機能テスト
機能単位での仕様を満たしているかをテスト
シナリオテスト
顧客の要求を満たしているかをテスト
非機能テスト
速度や使いやすさ、セキュリティなどをテスト
テストの自动化とは?
テストの自動化
テスト自動化(テストじどうか)とは、テスト支援ツール等を使うことにより、
ソフトウェアテストを自動化することである。
wikipedia内『テスト自動化』より引用
テスト自动化は简単か?
テストのコスト
種類 テスト方法 コスパ 項目数
単体テスト CUIテスト ? 多い
機能テスト ブラウザテスト + 手動テスト △ 普通
シナリオテスト ブラウザテスト △ 少ない
非機能テスト 手動テスト X 少ない
自动化するメリットは?
メリット
テストから仕様を把握できる
不具合を恐れずにリファクタリングができる
クロスブラウザや回帰テストのコストを削減
一定の品質を保証
もちろんデメリットもある
デメリット
たまに正常なテストでも失敗する
レイアウトが少し変わっただけで失敗する
テストコードをメンテナンスするコストがかかる
テストコード自体が間違っている可能性がある
ブラウザテスト用の環境を作るコストが必要
ブラウザテストは重い
自动テストの立ち位置
自动テストの立ち位置
つまらない不具合は自動テストでふるいにかけて、手動テストで要求レベルの不
具合を見つける、ぐらいのスタンスがベスト
自动化でできること?できないこと
できること
スクリーンショット作成
FirefoxとChromeのみ、画面外は表示されない
cssセレクタを使ってクリック操作
画面遷移時の制限時間付きの待ち処理
DBの疎通確認
ログの疎通確認
メールの疎通確認
APIの疎通確認
できないこと
デザインの確認
DBの内容確認
ログの内容確認
メールの内容確認
APIの内容確認
別ベンダーやお客さんがDBをいじれる環境でのテスト
ツールの绍介
ツール
nodejs
nightwatchjs(パッケージ)
selenium-webdriver(パッケージ)
mocha(パッケージ)
Selenium Server
各種Web Driver
クロスブラウザのサーバ构成
ローカルテスト用サーバ構成
開発環境
テストコード
アプリケーション
サーバ
PhantomJs
仮想環境
検証環境でのテスト用サーバ構成
開発環境
テストコード
検証環境
アプリケーション
サーバ
モダンIE10(Seleniumサーバ)
IE10Edge同様
モダンEdge(Seleniumサーバ)
Chrome
Firefox
Edge
IE11WebDriver
Selenium
Server
モダンIE8(Seleniumサーバ)
IE8Edge同様
MacOSX(Seleniumサーバ)
SafariEdge同様
ブラウザ设定
ブラウザ设定
Chrome
Selenium Serverにchromedriverを紐付け(ブラウザのバージョンに依存)
Firefox
nightwatchにmarionetteの設定
Selenium Serverにgeckodriverを紐付け(ブラウザのバージョンに依存)
ブラウザ设定
IE
Selenium Serverにiedriverを紐付け(ブラウザのバージョンに依存)
インターネットオプションの保護設定を変更
IE11のみレジストリの変更
テストコードを一部IEのための書き方をしないと動かない場合がある
ウィンドウズから提供されているモダンIEで環境を作った場合、3ヶ月おきに環境作成と上記の
再設定が必要
Safari
Selenium Serverにsafaridriverを紐付け(ブラウザのバージョンに依存)
phantomjs
開発環境に日本語フォントを入れる
テストコード作成时のポイント
作成ポイント
DBを毎回初期化できる仕組みを作る
ボタン、リンク、入力項目のHTMLタグにIDを振る
単体テストでできるものは単体テストで行う
テスト項目の粒度は小さく保つ
开発时の流れ
開発フロー
シナリオテスト項目作成
機能テスト項目作成
実装
単体テスト項目作成
単体テストコード作成と実施
シナリオテストコード作成と実施
機能テストコード作成と実施
マージリクエスト
(GitLab)
CIで単体テスト
機能テストとシナリオテス
ト実施
マージ
(GitLab)
検証環境にデプロイコードレビュー
検証環境で自動化が
可能な場合
まとめ
まとめ
自動テストは基本的には大きな利益をもたらす
しかし、デメリットもそれなりに存在する
手動?単体?ブラウザのバランスが大事
ありがとうございました

More Related Content

What's hot (20)

JavaScript Unit Test Why? What? How?
JavaScript Unit Test Why? What? How?JavaScript Unit Test Why? What? How?
JavaScript Unit Test Why? What? How?
Teppei Sato
?
自动テスト知识体系罢础叠翱碍のご绍介
自动テスト知识体系罢础叠翱碍のご绍介自动テスト知识体系罢础叠翱碍のご绍介
自动テスト知识体系罢础叠翱碍のご绍介
Shinsuke Matsuki
?
异业种でのテスト自动化の実际
异业种でのテスト自动化の実际异业种でのテスト自动化の実际
异业种でのテスト自动化の実际
Satsuki Urayama
?
Selenium boot campの紹介
Selenium boot campの紹介Selenium boot campの紹介
Selenium boot campの紹介
Nozomi Ito
?
础锄耻谤别を使って手軽にブラウザテストの自动化をはじめよう
础锄耻谤别を使って手軽にブラウザテストの自动化をはじめよう础锄耻谤别を使って手軽にブラウザテストの自动化をはじめよう
础锄耻谤别を使って手軽にブラウザテストの自动化をはじめよう
Naoya Kojima
?
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
Hiroko Tamagawa
?
テスト自动化のこれまでとこれから
テスト自动化のこれまでとこれからテスト自动化のこれまでとこれから
テスト自动化のこれまでとこれから
Keizo Tatsumi
?
SeleniumConf16 UK参加報告
SeleniumConf16 UK参加報告SeleniumConf16 UK参加報告
SeleniumConf16 UK参加報告
Osamu Shimoda
?
テストの自动化を考える前に
テストの自动化を考える前にテストの自动化を考える前に
テストの自动化を考える前に
bleis tift
?
Automation test.ssf alpha
Automation test.ssf alphaAutomation test.ssf alpha
Automation test.ssf alpha
ryuji koyama
?
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
kyon mm
?
4时间で学ぶ、効率的な自动テストスクリプトのメンテナンス
4时间で学ぶ、効率的な自动テストスクリプトのメンテナンス4时间で学ぶ、効率的な自动テストスクリプトのメンテナンス
4时间で学ぶ、効率的な自动テストスクリプトのメンテナンス
Nozomi Ito
?
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
Kotaro Ogino
?
はじめてのTeam foundation server執筆裏話
はじめてのTeam foundation server執筆裏話はじめてのTeam foundation server執筆裏話
はじめてのTeam foundation server執筆裏話
Kazushi Kamegawa
?
実践で学ぶ、効率的な自动テストスクリプトのメンテナンス
実践で学ぶ、効率的な自动テストスクリプトのメンテナンス実践で学ぶ、効率的な自动テストスクリプトのメンテナンス
実践で学ぶ、効率的な自动テストスクリプトのメンテナンス
Nozomi Ito
?
手动テストからの移行大作戦
手动テストからの移行大作戦手动テストからの移行大作戦
手动テストからの移行大作戦
Satsuki Urayama
?
20170704 Pitaliumの新機能
20170704 Pitaliumの新機能20170704 Pitaliumの新機能
20170704 Pitaliumの新機能
Osamu Shimoda
?
モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013
モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013
モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013
Kinji Akemine
?
20150418 システムテスト自動化 第一章
20150418 システムテスト自動化 第一章20150418 システムテスト自動化 第一章
20150418 システムテスト自動化 第一章
Yuki Fujisawa
?
海外の厂别濒别苍颈耻尘カンファレンスではどんな発表がされているのか2014
海外の厂别濒别苍颈耻尘カンファレンスではどんな発表がされているのか2014海外の厂别濒别苍颈耻尘カンファレンスではどんな発表がされているのか2014
海外の厂别濒别苍颈耻尘カンファレンスではどんな発表がされているのか2014
Nozomi Ito
?
JavaScript Unit Test Why? What? How?
JavaScript Unit Test Why? What? How?JavaScript Unit Test Why? What? How?
JavaScript Unit Test Why? What? How?
Teppei Sato
?
自动テスト知识体系罢础叠翱碍のご绍介
自动テスト知识体系罢础叠翱碍のご绍介自动テスト知识体系罢础叠翱碍のご绍介
自动テスト知识体系罢础叠翱碍のご绍介
Shinsuke Matsuki
?
异业种でのテスト自动化の実际
异业种でのテスト自动化の実际异业种でのテスト自动化の実际
异业种でのテスト自动化の実际
Satsuki Urayama
?
Selenium boot campの紹介
Selenium boot campの紹介Selenium boot campの紹介
Selenium boot campの紹介
Nozomi Ito
?
础锄耻谤别を使って手軽にブラウザテストの自动化をはじめよう
础锄耻谤别を使って手軽にブラウザテストの自动化をはじめよう础锄耻谤别を使って手軽にブラウザテストの自动化をはじめよう
础锄耻谤别を使って手軽にブラウザテストの自动化をはじめよう
Naoya Kojima
?
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
Hiroko Tamagawa
?
テスト自动化のこれまでとこれから
テスト自动化のこれまでとこれからテスト自动化のこれまでとこれから
テスト自动化のこれまでとこれから
Keizo Tatsumi
?
SeleniumConf16 UK参加報告
SeleniumConf16 UK参加報告SeleniumConf16 UK参加報告
SeleniumConf16 UK参加報告
Osamu Shimoda
?
テストの自动化を考える前に
テストの自动化を考える前にテストの自动化を考える前に
テストの自动化を考える前に
bleis tift
?
Automation test.ssf alpha
Automation test.ssf alphaAutomation test.ssf alpha
Automation test.ssf alpha
ryuji koyama
?
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
kyon mm
?
4时间で学ぶ、効率的な自动テストスクリプトのメンテナンス
4时间で学ぶ、効率的な自动テストスクリプトのメンテナンス4时间で学ぶ、効率的な自动テストスクリプトのメンテナンス
4时间で学ぶ、効率的な自动テストスクリプトのメンテナンス
Nozomi Ito
?
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
Kotaro Ogino
?
はじめてのTeam foundation server執筆裏話
はじめてのTeam foundation server執筆裏話はじめてのTeam foundation server執筆裏話
はじめてのTeam foundation server執筆裏話
Kazushi Kamegawa
?
実践で学ぶ、効率的な自动テストスクリプトのメンテナンス
実践で学ぶ、効率的な自动テストスクリプトのメンテナンス実践で学ぶ、効率的な自动テストスクリプトのメンテナンス
実践で学ぶ、効率的な自动テストスクリプトのメンテナンス
Nozomi Ito
?
手动テストからの移行大作戦
手动テストからの移行大作戦手动テストからの移行大作戦
手动テストからの移行大作戦
Satsuki Urayama
?
20170704 Pitaliumの新機能
20170704 Pitaliumの新機能20170704 Pitaliumの新機能
20170704 Pitaliumの新機能
Osamu Shimoda
?
モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013
モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013
モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013
Kinji Akemine
?
20150418 システムテスト自動化 第一章
20150418 システムテスト自動化 第一章20150418 システムテスト自動化 第一章
20150418 システムテスト自動化 第一章
Yuki Fujisawa
?
海外の厂别濒别苍颈耻尘カンファレンスではどんな発表がされているのか2014
海外の厂别濒别苍颈耻尘カンファレンスではどんな発表がされているのか2014海外の厂别濒别苍颈耻尘カンファレンスではどんな発表がされているのか2014
海外の厂别濒别苍颈耻尘カンファレンスではどんな発表がされているのか2014
Nozomi Ito
?

Similar to フ?ラウサ?テスト自动化入门 (20)

アジャイル×テスト开発を考える
アジャイル×テスト开発を考えるアジャイル×テスト开発を考える
アジャイル×テスト开発を考える
yasuohosotani
?
アジャイルテストを、壮絶に、考える。
アジャイルテストを、壮絶に、考える。アジャイルテストを、壮絶に、考える。
アジャイルテストを、壮絶に、考える。
Dai FUJIHARA
?
SGT2013 技術トークス「アジャイルテスティング」
SGT2013 技術トークス「アジャイルテスティング」SGT2013 技術トークス「アジャイルテスティング」
SGT2013 技術トークス「アジャイルテスティング」
yasuohosotani
?
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeploy
Ryutaro YOSHIBA
?
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテストJUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
Shuji Watanabe
?
テストとの上手な付き合い方
テストとの上手な付き合い方テストとの上手な付き合い方
テストとの上手な付き合い方
Akira Suenami
?
Test Automation Journey 2023 useful knowledge to start test automation
Test Automation Journey  2023 useful knowledge to start test automationTest Automation Journey  2023 useful knowledge to start test automation
Test Automation Journey 2023 useful knowledge to start test automation
Sadaaki Emura
?
【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか #rakutentech
【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか  #rakutentech【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか  #rakutentech
【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか #rakutentech
Kotaro Ogino
?
テスト初心者础苍诲谤辞颈诲别谤のためのソフトウェアテスト入门
テスト初心者础苍诲谤辞颈诲别谤のためのソフトウェアテスト入门テスト初心者础苍诲谤辞颈诲别谤のためのソフトウェアテスト入门
テスト初心者础苍诲谤辞颈诲别谤のためのソフトウェアテスト入门
Satoshi Watanabe
?
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
慎一 古賀
?
Win7 * appium * androidで実機自動テストやってみた。
Win7 * appium * androidで実機自動テストやってみた。Win7 * appium * androidで実機自動テストやってみた。
Win7 * appium * androidで実機自動テストやってみた。
Naoto Kishino
?
Et west テスト自動化_公開版
Et west テスト自動化_公開版Et west テスト自動化_公開版
Et west テスト自動化_公開版
Noriyuki Mizuno
?
失败から学ぶテスト自动化导入で大切なこと
失败から学ぶテスト自动化导入で大切なこと失败から学ぶテスト自动化导入で大切なこと
失败から学ぶテスト自动化导入で大切なこと
sono susumu
?
自动テストの品质とテストパターン
自动テストの品质とテストパターン自动テストの品质とテストパターン
自动テストの品质とテストパターン
Toru Koido
?
【厂蚕颈笔2014】システム操作インターフェイス最适化によるテスト自动化搁翱滨向上
【厂蚕颈笔2014】システム操作インターフェイス最适化によるテスト自动化搁翱滨向上【厂蚕颈笔2014】システム操作インターフェイス最适化によるテスト自动化搁翱滨向上
【厂蚕颈笔2014】システム操作インターフェイス最适化によるテスト自动化搁翱滨向上
Tatsuya Ishikawa
?
骋耻颈自动テストツール基本
骋耻颈自动テストツール基本骋耻颈自动テストツール基本
骋耻颈自动テストツール基本
Tsuyoshi Yumoto
?
テスト自动化の现场から词テスト自动化の保守の话词
テスト自动化の现场から词テスト自动化の保守の话词テスト自动化の现场から词テスト自动化の保守の话词
テスト自动化の现场から词テスト自动化の保守の话词
Satsuki Urayama
?
スマホアフ?リ?サイトの実机検証?自动テストサーヒ?スー惭辞惫补罢别蝉迟颈苍驳のこ?绍介
スマホアフ?リ?サイトの実机検証?自动テストサーヒ?スー惭辞惫补罢别蝉迟颈苍驳のこ?绍介スマホアフ?リ?サイトの実机検証?自动テストサーヒ?スー惭辞惫补罢别蝉迟颈苍驳のこ?绍介
スマホアフ?リ?サイトの実机検証?自动テストサーヒ?スー惭辞惫补罢别蝉迟颈苍驳のこ?绍介
slideshar0801
?
テスト自动化とアーキテクチャ
テスト自动化とアーキテクチャテスト自动化とアーキテクチャ
テスト自动化とアーキテクチャ
Toru Koido
?
TABOK Skill Category2解説
TABOK Skill Category2解説TABOK Skill Category2解説
TABOK Skill Category2解説
Kinji Akemine
?
アジャイル×テスト开発を考える
アジャイル×テスト开発を考えるアジャイル×テスト开発を考える
アジャイル×テスト开発を考える
yasuohosotani
?
アジャイルテストを、壮絶に、考える。
アジャイルテストを、壮絶に、考える。アジャイルテストを、壮絶に、考える。
アジャイルテストを、壮絶に、考える。
Dai FUJIHARA
?
SGT2013 技術トークス「アジャイルテスティング」
SGT2013 技術トークス「アジャイルテスティング」SGT2013 技術トークス「アジャイルテスティング」
SGT2013 技術トークス「アジャイルテスティング」
yasuohosotani
?
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeploy
Ryutaro YOSHIBA
?
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテストJUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
Shuji Watanabe
?
テストとの上手な付き合い方
テストとの上手な付き合い方テストとの上手な付き合い方
テストとの上手な付き合い方
Akira Suenami
?
Test Automation Journey 2023 useful knowledge to start test automation
Test Automation Journey  2023 useful knowledge to start test automationTest Automation Journey  2023 useful knowledge to start test automation
Test Automation Journey 2023 useful knowledge to start test automation
Sadaaki Emura
?
【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか #rakutentech
【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか  #rakutentech【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか  #rakutentech
【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか #rakutentech
Kotaro Ogino
?
テスト初心者础苍诲谤辞颈诲别谤のためのソフトウェアテスト入门
テスト初心者础苍诲谤辞颈诲别谤のためのソフトウェアテスト入门テスト初心者础苍诲谤辞颈诲别谤のためのソフトウェアテスト入门
テスト初心者础苍诲谤辞颈诲别谤のためのソフトウェアテスト入门
Satoshi Watanabe
?
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
慎一 古賀
?
Win7 * appium * androidで実機自動テストやってみた。
Win7 * appium * androidで実機自動テストやってみた。Win7 * appium * androidで実機自動テストやってみた。
Win7 * appium * androidで実機自動テストやってみた。
Naoto Kishino
?
Et west テスト自動化_公開版
Et west テスト自動化_公開版Et west テスト自動化_公開版
Et west テスト自動化_公開版
Noriyuki Mizuno
?
失败から学ぶテスト自动化导入で大切なこと
失败から学ぶテスト自动化导入で大切なこと失败から学ぶテスト自动化导入で大切なこと
失败から学ぶテスト自动化导入で大切なこと
sono susumu
?
自动テストの品质とテストパターン
自动テストの品质とテストパターン自动テストの品质とテストパターン
自动テストの品质とテストパターン
Toru Koido
?
【厂蚕颈笔2014】システム操作インターフェイス最适化によるテスト自动化搁翱滨向上
【厂蚕颈笔2014】システム操作インターフェイス最适化によるテスト自动化搁翱滨向上【厂蚕颈笔2014】システム操作インターフェイス最适化によるテスト自动化搁翱滨向上
【厂蚕颈笔2014】システム操作インターフェイス最适化によるテスト自动化搁翱滨向上
Tatsuya Ishikawa
?
骋耻颈自动テストツール基本
骋耻颈自动テストツール基本骋耻颈自动テストツール基本
骋耻颈自动テストツール基本
Tsuyoshi Yumoto
?
テスト自动化の现场から词テスト自动化の保守の话词
テスト自动化の现场から词テスト自动化の保守の话词テスト自动化の现场から词テスト自动化の保守の话词
テスト自动化の现场から词テスト自动化の保守の话词
Satsuki Urayama
?
スマホアフ?リ?サイトの実机検証?自动テストサーヒ?スー惭辞惫补罢别蝉迟颈苍驳のこ?绍介
スマホアフ?リ?サイトの実机検証?自动テストサーヒ?スー惭辞惫补罢别蝉迟颈苍驳のこ?绍介スマホアフ?リ?サイトの実机検証?自动テストサーヒ?スー惭辞惫补罢别蝉迟颈苍驳のこ?绍介
スマホアフ?リ?サイトの実机検証?自动テストサーヒ?スー惭辞惫补罢别蝉迟颈苍驳のこ?绍介
slideshar0801
?
テスト自动化とアーキテクチャ
テスト自动化とアーキテクチャテスト自动化とアーキテクチャ
テスト自动化とアーキテクチャ
Toru Koido
?
TABOK Skill Category2解説
TABOK Skill Category2解説TABOK Skill Category2解説
TABOK Skill Category2解説
Kinji Akemine
?

フ?ラウサ?テスト自动化入门

Editor's Notes

  • #4: テストには大きく分けて4つあります。 単体テストは実装した処理が仕様を満たしているかをコードレベルでテストします。 機能テストはブラウザから操作して、その結果が仕様通りに表示されるか。DBに反映されているか。メールが送られているか。ログは書き込まれているか。などの外部装置との連携を含めたテストをします。 シナリオテストはお客さんとの間で決めた要求をみたしているかをユースケースを使ってテストします。 非機能テストは速度やセキュリティなど、機能に含めていない部分のテストをします。
  • #8: 単体テストはCUI上で完結します。ブラウザやDBなどを含まないので動作が軽く、作成方法もシンプルです。項目数は多いですが作成が簡単なのでコスパはいいです。 機能テストはブラウザで確認できる部分はブラウザテスト、メールなどは手動でテストします。HTMLのタグを調べながらテストを作るので単体よりも時間がかかります。項目自体も多いため一番コストがかかる部分です。 シナリオテストは機能テストと同じ内容です。項目数は少ないため作成は割と簡単にできると思います。 非機能テストは人の目での確認になるので自動化はほぼ出来ません。「何秒以内に表示される」のようなテストはシナリオテストなどで自動化は可能です。 これから説明するのは機能テスト、シナリオテストにあるブラウザテストについてです。
  • #10: テストから仕様を把握する:テストと仕様は1対1になるように作るので、アジャイル場合はテスト項目の一覧を仕様書代わりにしてたりします。 不具合を恐れずにリファクタリングができる:修正後にテストを回すことによって、不具合が出た場合に確認できるので安心感があります。 クロスブラウザや回帰テストのコストを削減:3回以上同じテストを繰り返す場合は自動化したほうがコストが下がります。 一定の品質を保証:自動テストが通ることで正しく実装されていることを保証できます。
  • #12: たまに正常なテストであっても、OSに負荷がかかってブラウザの立ち上がりが遅いなどでエラーになったりします。 要求や機能に変更がなくてもボタンの位置が変更になったり、divタグをpタグに変更するなどでエラーになります。 テストの自動化全般に言えることですが、定期的に実行してメンテナンスしていかないとすぐに使えなくなってしまいます。 テストコード自体がバグっている可能性があります。ほんとは失敗するべきところで成功をかえすなど。 この後、説明しますがテストコード通りにブラウザを操作するために色々と設定が必要になってきます。 単体テストに比べるとブラウザテストは重いです。ですが、手動で行うよりかは速いです。
  • #14: 先ほど述べた通り、メリットもあればデメリットもあるため、自动テストさえしていれば大丈夫というわけにはいきません。手动テストをなくすというよりも、手动テストから烦わしい部分をなるべく减らすために行うと考えたほうがいいです。
  • #16: スクリーンショットを取ることが可能ですが、贵颈谤别蹿辞虫と颁丑谤辞尘别は画面外の部分は表示されません。テストコード上でスクロールする処理を书く必要があります。
  • #17: デザイン崩れなどはスクリーンショットを取って目視で確認する必要があります。 DBやログなどの内容は確認できません。 テスト時に毎回DBを初期の状態に戻す必要があるので、ほかの人がDBをいじる環境ではテストが失敗する可能性があります。
  • #19: 今回テストコードを書くためにnodejsを利用しましたが。JAVAやPHP、Rubyなどでも可能です。基本どのツールでも同じことができるのですがnightwatchjsが一番簡潔に書けました。 ローカル環境で実行する場合はSeleniumサーバは必須ではないですが、Macで仮想環境のIEで確認をする場合などに必要になります。 ブラウザごとにWebドライバを公式サイトからダウンロードしてくる必要があります。これがないとテストコードの内容をブラウザに伝えることができません。
  • #21: ローカルの场合、笔丑补苍迟辞尘闯蝉という见えないブラウザをインストールすることで简単に环境を作ることができます。もし、颁丑谤辞尘别などでテストしたい场合は、この后に绍介する検証环境のサーバ构成を作ってテストする必要があります。
  • #22: クロスブラウザテストの構成です。 仮想環境にChrome、Firefox、IE系をインストールして、各仮想環境とMacにSeleniumサーバを立てて、各Webドライバと連携させています。
  • #25: IEの設定が一番煩雑です。また、モダンIEの場合、この煩雑な作業を3か月おきに各バージョンごとに行う必要があります。 phantomjsはCUIで動きます。なので、仮想の開発環境に一緒に入れておくことができるのですが、日本語フォントを入れておかないとスクリーンショットを取ったときに文字化けします。
  • #27: ボタンやリンクにIDを振ることで、デザインが変わってもテストコードをなるべく修正する必要がなくなります。 ブラウザテストはコストパフォーマンスが悪いので、単体テストでできる内容までブラウザテストに回すとコストが高くつきます。 一つのテスト項目に複数のテスト結果を含めることができるのですが、エラーになったときに原因の特定が大変になります。項目はなるべく原因を特定しやすい単位まで小さくする必要があります。
  • #29: テスト項目作成はテストコードの中身は書かずに項目部分だけをコーディングします。 実装と単体テストを繰り返します。 実装完了後に機能テストとシナリオテストを書きます。 マージリクエスト後にレビュアーは実装とテストコードのレビューをします。 実際にテストコードを動かしてみます。 自身で軽く操作もしてみる。 問題がなければマージします。