Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
Check these out next
Azureを使って手軽にブラウザテストの自動化をはじめよう
Naoya Kojima
海外のSeleniumカンファレンスではどんな発表がされているのか2014
Nozomi Ito
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
Yuki Okada
Selenium勉強会
Tatsunori Nishikori
【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
Nozomi Ito
Selenium IDE for primer
yasukoS
「Selenium実践入門」で学ぶテスト自動化の世界
Nozomi Ito
ブラウザテスト自動化入門
takahiro sakuma
1
of
33
Top clipped slide
Selenium2でつくるテストケースの構成について
Jun. 20, 2014
•
0 likes
60 likes
×
Be the first to like this
Show More
•
22,159 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Software
社内勉強会での発表に使った資料。
yufu yufu
Follow
Advertisement
Advertisement
Advertisement
Recommended
ハイパフォーマンスSeleniumテスト@サイボウズ
Jumpei Miyata
30.6K views
•
27 slides
OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
Nozomi Ito
48.2K views
•
55 slides
Awsで実現するseleniumテスト高速術
finoue
90.6K views
•
57 slides
JenkinsとSeleniumの活用事例
Takeshi Kondo
8.4K views
•
47 slides
テスト自動化の様々な道具を使ってみた四方山話
haljik Seiji
5.6K views
•
55 slides
ノンプログラマのためのSelenium de DDTはじめの一歩
Satsuki Urayama
12.3K views
•
15 slides
More Related Content
Slideshows for you
(20)
Azureを使って手軽にブラウザテストの自動化をはじめよう
Naoya Kojima
•
6.1K views
海外のSeleniumカンファレンスではどんな発表がされているのか2014
Nozomi Ito
•
16.5K views
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
Yuki Okada
•
3.4K views
Selenium勉強会
Tatsunori Nishikori
•
1.7K views
【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
Nozomi Ito
•
3K views
Selenium IDE for primer
yasukoS
•
1.8K views
「Selenium実践入門」で学ぶテスト自動化の世界
Nozomi Ito
•
9.5K views
ブラウザテスト自動化入門
takahiro sakuma
•
2.9K views
JustTechTalk#10 React開発における自動テスト実践
JustSystems Corporation
•
2K views
kintoneチームを支えるSeleniumテスト
Jumpei Miyata
•
10.3K views
Selenium boot campの紹介
Nozomi Ito
•
1.4K views
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
Nozomi Ito
•
22.1K views
20121019 jenkins勉強会lt資料
Hiroko Tamagawa
•
3.4K views
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Y Watanabe
•
11.9K views
Test manager によるテスト管理実践
Ryosuke Matsukawa
•
3.1K views
#STAC2014 システムテスト自動化ハンズオン
kyon mm
•
21.6K views
Selenium Antipatterns
Jumpei Miyata
•
37.2K views
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
Yahoo!デベロッパーネットワーク
•
7.2K views
はじめてのTeam Foundation ServerとVisual Studio Online
Kazushi Kamegawa
•
9.4K views
エンタープライズ開発でのSelenium活用事例
isaac-otao
•
12.8K views
Similar to Selenium2でつくるテストケースの構成について
(20)
Selenium WebDriver + python で E2Eテスト自動化
JustSystems Corporation
•
7.3K views
テストしなイカ? Seleniumで自動ブラウザテスト
Ohishi Mikage
•
1.6K views
JAZUG女子部 第2回勉強会 ハンズオン
Kana SUZUKI
•
25.9K views
第4回勉強会 単体テストのすすめ
hakoika-itwg
•
9.3K views
はこだてIKA 第4回勉強会 単体テスト
Seiji KOMATSU
•
782 views
異業種でのテスト自動化の実際
Satsuki Urayama
•
2.8K views
ビジネス的に高価値なアジャイルテスト
Tsutomu Chikuba
•
2.1K views
Selenium 触ってみよう
Oda Shinsuke
•
1.7K views
自動テスト知識体系TABOKのご紹介
Shinsuke Matsuki
•
8.9K views
Selenium
takeuchi-tk
•
1.5K views
COD2012 T2/T3 : 実機で試す SQL Server の現状取得 ハンズオンマニュアル
Masayuki Ozawa
•
4.3K views
Eclipse を使った java 開発 111126 杉浦
urasandesu
•
5.1K views
Qs info 002
Kei Nakahara
•
526 views
超簡単!!なTestLinkの使い方
Cake YOSHIDA
•
44.5K views
Qs info002
Kei Nakahara
•
691 views
テストコードのリファクタリング
Shuji Watanabe
•
8.3K views
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案
Kazunori Sakamoto
•
1.1K views
CruiseControl.NET設置
Kuniaki Igarashi
•
1.5K views
Nds#24 単体テスト
Kazumune Katagiri
•
1.6K views
Qs information20110615
Kei Nakahara
•
415 views
Advertisement
Recently uploaded
(20)
留信网认证可查【艾格伍学院文凭证书毕业证购买】
32lkhng
•
2 views
測量支援ソフト「みとおしえ」「みとおしえクラウド」の紹介
ssuserbceee8
•
58 views
留信网认证可查【奥克兰大学文凭证书毕业证购买】
ihh14ds
•
2 views
留信网认证可查【太平洋大学文凭证书毕业证购买】
hh123hh1
•
2 views
①【萨斯喀彻温大学毕业证文凭学位证书|工艺完美复刻】
love445ds
•
2 views
測量データ処理ソフト・MarineDiscoveryの紹介
ssuserbceee8
•
38 views
留信网认证可查【俄亥俄大学文凭证书毕业证购买】
1lkjhg
•
2 views
在哪里可以做《俄克拉荷马大学文凭证书|毕业证》
lobd15
•
2 views
測量データ処理システム「MarineDiscoveryクラウド」の紹介
ssuserbceee8
•
55 views
①【南十字星大学毕业证文凭学位证书|工艺完美复刻】
vgh215w
•
2 views
留信网认证可查【伊利诺伊理工学院文凭证书毕业证购买】
1lkjhg
•
2 views
JSUG Info Vol.13
Draft One
•
2 views
☀️【波恩大学毕业证成绩单留学生首选】
bjd42as
•
2 views
留信网认证可查【马努卡理工学院文凭证书毕业证购买】
ihh14ds
•
2 views
留信网认证可查【新学院文凭证书毕业证购买】
hh123hh1
•
2 views
☀️【伯明翰大学毕业证成绩单留学生首选】
25mjhd12
•
2 views
①【伦敦政治经济学院毕业证文凭学位证书|工艺完美复刻】
0987hgh789
•
2 views
①【诺丁汉大学毕业证文凭学位证书|工艺完美复刻】
0987hgh789
•
2 views
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.9.0対応)
fisuda
•
0 views
留信网认证可查【波恩大学文凭证书毕业证购买】
khh123kj
•
2 views
Selenium2でつくるテストケースの構成について
Selenium2でつくるテストケースの 構成について 2014/06/19 徳田 ゆい
なにを発表するの? 最近、Selenium2 +
Ruby + RSpec でブラウザ テストの自動化に取り組んでます 「ブラウザテスト」? ここでは「テスターがブラウザを操作して眼で結果 を確認する行為」という意味で使います 具体的にどんなことをやってるのかを紹介し ます。 (主にテストケースの構成について話します)
もくじ Selenium2って何? デモ
現状のテストケースの構成 メンテナンス性向上の工夫 テストシナリオとページ操作の分離 テストシナリオとテストデータの分離
Slenium2って何? OSSのブラウザテストツール プログラム言語でテストスクリプトを書いて使う
何ができるの? 手動テストの代替 手動テストで行うのと同様に、実際にWebブラウザを起 動して操作できる ボタン押したり、文字列を入力したり取得したりetc 特徴・メリット ブラウザテストツールのデファクトスタンダード 情報&使用経験者の数が多い 開発が活発 幅広いOS/ブラウザ/言語に対応
デモ
現状のテストケースの構成 spec ├ features │ ├
機能A │ └ 機能B ├ fixtures │ ├ 機能A │ └ 機能B ├ operators │ ├ 機能A │ └ 機能B ├ pages │ ├ 機能A │ └ 機能B └ support テストシナリオ テストデータ ページに対する定型操作をまとめたクラス ページクラス 一般的なユーティリティクラス
なんで色々わかれてるの? メンテナンス性向上のためです
テストにメンテナンス性って大事なの? 書いて1回実施してOKつけば終わりじゃん。 そんなことないです。 そもそも、手動のテストケースでもメンテ ナンス性は大事です。メンテナンスするか ら。 そして自動テストの場合はもっと大事です。 なんでこの構成なの?
メンテナンス性が大事な理由 自動テストがある =
長期保守プロダクト 1回テスト書いて流して納品すればOK!なプロ ジェクトなら、そもそもテスト自動化しない 長期保守 = 将来プロダクト改修がある 機能追加、バグフィックス、環境移行… プロダクト改修 = テスト実施 = テスト改修 変更したらテストしなきゃ危険 機械は「最新仕様をふまえてよしなに読み替えて テスト」できない
メンテナンス性向上のために 大きくわけて以下2点を心がけてます ① テストシナリオとページ操作の分離 ②
テストシナリオとテストデータの分離 上記2点について、それぞれ発表します
①テストシナリオと ページ操作の分離 ②テストシナリオと テストデータの分離
この部分の説明です spec ├ features │ ├
機能A │ └ 機能B ├ fixtures │ ├ 機能A │ └ 機能B ├ operators │ ├ 機能A │ └ 機能B ├ pages │ ├ 機能A │ └ 機能B └ support テストシナリオ テストデータ ページに対する定型操作をまとめたクラス ページクラス 一般的なユーティリティクラス
予備知識:ベタ書きの恐怖 ページに何か入力するテスト
入力項目5個×10ページ
困ります ① 可読性・メンテナンス性が低い 同じようなことがあちこちに大量に書いてある
HTMLが変更されたら、テストコードをすべて 修正しなくてはならない ② 対象のHTML&Selenium2の操作 を知ら ないとテストが書けない 「テストシナリオを考えられる」だけじゃテ ストが書けない
対処法 テストシナリオとページ操作の分離 => PageObjectデザインパターン …というのがあります
PageObjectデザインパターン Selenium公式で推奨されてるデザインパターン https://code.google.com/p/selenium/wiki/PageObjects publicメソッドはページが提供するサービスを表す The
public methods represent the services that the page offers ページの内部を露出させないようにしよう Try not to expose the internals of the page 一般的に、アサーションを行わない Generally don't make assertions メソッドは他のページオブジェクトを返す Methods return other PageObjects ページ全体を表す必要はない Need not represent an entire page 同じアクションに対して結果が異なる場合は別なメソッ ドとしてモデル化する Different results for the same action are modelled as different methods
具体的にどういうこと? 「テストシナリオ」と 「テスト対象のページを表現するクラス」 を分離する テストシナリオ内では、直接ページ操作を 行わない (すべてページクラスのAPIを通す)
テストシナリオn テストシナリオ⑥ テストシナリオ⑥ テストシナリオ⑥ 図にするとこんな感じ テスト対象 ページ ページクラス テストシナリオ① テストシナリオ② テストシナリオ③ テストシナリオ④ テストシナリオ⑤ テストシナリオ⑥
ページクラスの内容 そのページが提供する機能 (publicメソッド)
メールアドレス入力欄に引数で受け取った値を入力 する 登録ボタンをクリックする エラーメッセージ表示領域に出力されてる文字列を 取得する ページ内要素の特定 (plivateメソッド) メールアドレス入力欄・登録ボタン・エラーメッ セージ表示領域etc… を具体的にCSSセレクタや XPathで指定する (これがないとページ操作できない)
テストケースの内容 テスト手順 ① テスト対象ページを開く ②
メールアドレス入力欄に “めあど” と入力す る ③ 登録ボタン押下する 合否判定 エラーメッセージ入力欄に “メールアドレスが 不正です” と表示されていればOK
どう変わるの? ① 可読性・メンテナンス性 テストシナリオ中に、テスト手順/合否判定に関係ない 部分がなくなる
HTMLが変更されても、ページクラスだけ直せばいい ② 対象のHTML&Selenium2の使い方 を知らなくて もテストが書ける データ入力したければ それ用のメソッドを呼べばいい。 テストシナリオだけ考えれば、「データ入力するため に、具体的にどうやって画面要素を特定し、どんな操 作が必要か」を知らなくてもテストが書ける。
なので こうしてます spec ├ features │
├ 機能A │ └ 機能B ├ fixtures │ ├ 機能A │ └ 機能B ├ operators │ ├ 機能A │ └ 機能B ├ pages │ ├ 機能A │ └ 機能B └ support テストシナリオ テストデータ ページに対する定型操作をまとめたクラス ページクラス 一般的なユーティリティクラス
①テストシナリオと ページ操作の分離 ②テストシナリオと テストデータの分離
この部分の説明です spec ├ features │ ├
機能A │ └ 機能B ├ fixtures │ ├ 機能A │ └ 機能B ├ operators │ ├ 機能A │ └ 機能B ├ pages │ ├ 機能A │ └ 機能B └ support テストシナリオ テストデータ ページに対する定型操作をまとめたクラス ページクラス 一般的なユーティリティクラス
予備知識 「ユーザを新規作成する」だけでも、「どんな内容で作 成したいか」は色々あります 設定項目の例
ユーザ名 苗字 苗字かな 名前 名前かな パスワード メールアドレス 携帯 PC 性別 生年月日 住所 郵便番号 都道府県 市区町村 丁目&番地 マンション名 電話番号 携帯 自宅 テスト上の要求 必須項目のみ指定してユーザ作成したい 全項目指定してユーザ作成したい 「苗字」を最大文字数にしてユーザ作成したい 「名前かな」に漢字を入力して結果を見たい 携帯とPCのメールアドレスに同じ文字列を入力 して結果を見たい マンション名が空のユーザを作成したい 削除テスト用の適当なユーザを作成したい ユーザを100人作成したい(内容は何でもいい) etc…
これらの内容をすべて テストケース内に書くと 必須項目だけ指定するケース 全項目指定するケース マンション名が空のケース 入力値の指定だけでこれだけ書かなきゃいけない (このあとにやっとテストケースを書ける)
困ります 可読性・メンテナンス性 「そのケースのテスト観点としては不要だけど、 入れざるを得ない項目」が多い
(マンション名の例) 「ケースAとケースBで指定する入力値の違い( = テスト観点) は何か?」が読み取りづらい ある項目が指定されてないとき、その理由が分かり辛い データ作成だけが目的だから、必須項目以外空にした? バリデーションテストのために空にした? ヒューマンエラー? 入力項目が増減するたび、全テストケースの修正が必要 仕様に詳しくないと 入力値を指定できない 「なんでもいいから適当なユーザつくりたい」ときでも、 「何が必須項目か&どんな入力値が許可されてるのか」 を知らないとつくれない
対処法 テストシナリオとテストデータ(入力値 セット)を分離する テストシナリオ中では「○○用の入力値セッ ト」を呼び出すだけ
「基本となる入力値セット」を用意する 必須項目のみ && 入力許容値のみ のセット これを元にバリエーションを増やす
具体的にはこんな感じ
どう変わるの? 可読性・メンテナンス性 「基本の入力値セット」があるので、その他のセッ トでは「そのテスト観点に必要な部分」だけ指定す ればいい
項目の増減があっても「基本の入力値セット」だけ 修正すればいい 仕様に詳しくなくても 入力値を指定できる 「なんでもいいからユーザが100人ほしい」なら、 「基本の入力値セット」を使えばいい
なので こうしてます spec ├ features │
├ 機能A │ └ 機能B ├ fixtures │ ├ 機能A │ └ 機能B ├ operators │ ├ 機能A │ └ 機能B ├ pages │ ├ 機能A │ └ 機能B └ support テストシナリオ テストデータ ページに対する定型操作をまとめたクラス ページクラス 一般的なユーティリティクラス
まとめ QAチームでは現在、ブラウザテストの自動化 に取り組んでます Selenium2という便利ツールを使ってます
自動テストは手動テスト以上にメンテナンス性 が大事です なので以下に気をつけてます テストシナリオとページ操作の分離 テストシナリオとテストデータの分離
以上です。
Editor's Notes
・Selenium2 = Selenium WebDriver ・「Selenium = Firefox のアドオン。キャプチャ&リプレイツール」って認識が主だと思いますが、少し違います。が、それには深く触れません。
詳しくはこれから説明します
・機械は~のくだり ・別に手動テストでもテスト改修しなきゃいけないけど、実施が人間の場合は「とりあえずテストしてケースは後で直す」ができなくはない
・メールアドレス入力欄に “めあど” と入力して登録ボタン押下し、表示されるエラーメッセージが正しいか確認するテスト
③について ・「この要素はどうすれば特定できるか」とか、「特定したこの要素をどうやれば操作できるか」とかを知らないと、テストが書けない
・Google翻訳を整形したので、合ってると思います ・検索するといくつか解説が見つかります。日本語のも何個かあります。
・単に「プログラム言語から使える」という Selenium2 のメリットを享受できるようになっただけですが… ・③について。現状の「テストケースもページクラスも1人で書いてる状態」にはあまり関係ないですが、他社では「ページクラスは開発や社員のテストエンジニアが書き、テストケースはアルバイトが量産する」といった事例もあるそうです。
・operators ・実際のテストではひとことで「ユーザ登録する」といっても「項目1~10に値を入れる → ボタンA押下する → ボタンB押下する …」みたいに操作が多いので、定番操作をまとめるために作ってます。
・マンション名が空のケースについて ・「マンション名が空でも登録できること」のテストを行うためには 必須項目(苗字etc)が正しく入力されてる必要があるので、こうなります
・「なんでもいいから適当なユーザつくりたい」という場合は結構多いです ・ユーザ削除テストでつかうユーザがほしい ・ユーザと紐付く他データ(コミュニティとか)のテストでつかうユーザがほしい ・ユーザ100人いるときの動作テストをしたいetc…
Advertisement