Content-Length: 264796 | pFad | https://www.slideshare.net/slideshow/selenium2-36100497/36100497
Selenium2でつくるテストケースの構成について | PPTSelenium2でつくるテストケースの構成について
- 2. なにを発表するの?
最近、Selenium2 + Ruby + RSpec でブラウザ
テストの自動化に取り組んでます
「ブラウザテスト」?
ここでは「テスターがブラウザを操作して眼で結果
を確認する行為」という意味で使います
具体的にどんなことをやってるのかを紹介し
ます。
(主にテストケースの構成について話します)
- 6. 現状のテストケースの構成
spec
├ features
│ ├ 機能A
│ └ 機能B
├ fixtures
│ ├ 機能A
│ └ 機能B
├ operators
│ ├ 機能A
│ └ 機能B
├ pages
│ ├ 機能A
│ └ 機能B
└ support
テストシナリオ
テストデータ
ページに対する定型操作をまとめたクラス
ページクラス
一般的なユーティリティクラス
- 7. なんで色々わかれてるの?
メンテナンス性向上のためです
テストにメンテナンス性って大事なの?
書いて1回実施してOKつけば終わりじゃん。
そんなことないです。
そもそも、手動のテストケースでもメンテ
ナンス性は大事です。メンテナンスするか
ら。
そして自動テストの場合はもっと大事です。
なんでこの構成なの?
- 8. メンテナンス性が大事な理由
自動テストがある = 長期保守プロダクト
1回テスト書いて流して納品すればOK!なプロ
ジェクトなら、そもそもテスト自動化しない
長期保守 = 将来プロダクト改修がある
機能追加、バグフィックス、環境移行…
プロダクト改修 = テスト実施 = テスト改修
変更したらテストしなきゃ危険
機械は「最新仕様をふまえてよしなに読み替えて
テスト」できない
- 11. この部分の説明です
spec
├ features
│ ├ 機能A
│ └ 機能B
├ fixtures
│ ├ 機能A
│ └ 機能B
├ operators
│ ├ 機能A
│ └ 機能B
├ pages
│ ├ 機能A
│ └ 機能B
└ support
テストシナリオ
テストデータ
ページに対する定型操作をまとめたクラス
ページクラス
一般的なユーティリティクラス
- 19. ページクラスの内容
そのページが提供する機能 (publicメソッド)
メールアドレス入力欄に引数で受け取った値を入力
する
登録ボタンをクリックする
エラーメッセージ表示領域に出力されてる文字列を
取得する
ページ内要素の特定 (plivateメソッド)
メールアドレス入力欄・登録ボタン・エラーメッ
セージ表示領域etc… を具体的にCSSセレクタや
XPathで指定する
(これがないとページ操作できない)
- 22. なので こうしてます
spec
├ features
│ ├ 機能A
│ └ 機能B
├ fixtures
│ ├ 機能A
│ └ 機能B
├ operators
│ ├ 機能A
│ └ 機能B
├ pages
│ ├ 機能A
│ └ 機能B
└ support
テストシナリオ
テストデータ
ページに対する定型操作をまとめたクラス
ページクラス
一般的なユーティリティクラス
- 24. この部分の説明です
spec
├ features
│ ├ 機能A
│ └ 機能B
├ fixtures
│ ├ 機能A
│ └ 機能B
├ operators
│ ├ 機能A
│ └ 機能B
├ pages
│ ├ 機能A
│ └ 機能B
└ support
テストシナリオ
テストデータ
ページに対する定型操作をまとめたクラス
ページクラス
一般的なユーティリティクラス
- 25. 予備知識
「ユーザを新規作成する」だけでも、「どんな内容で作
成したいか」は色々あります
設定項目の例
ユーザ名
苗字
苗字かな
名前
名前かな
パスワード
メールアドレス
携帯
PC
性別
生年月日
住所
郵便番号
都道府県
市区町村
丁目&番地
マンション名
電話番号
携帯
自宅
テスト上の要求
必須項目のみ指定してユーザ作成したい
全項目指定してユーザ作成したい
「苗字」を最大文字数にしてユーザ作成したい
「名前かな」に漢字を入力して結果を見たい
携帯とPCのメールアドレスに同じ文字列を入力
して結果を見たい
マンション名が空のユーザを作成したい
削除テスト用の適当なユーザを作成したい
ユーザを100人作成したい(内容は何でもいい)
etc…
- 27. 困ります
可読性・メンテナンス性
「そのケースのテスト観点としては不要だけど、
入れざるを得ない項目」が多い (マンション名の例)
「ケースAとケースBで指定する入力値の違い( = テスト観点)
は何か?」が読み取りづらい
ある項目が指定されてないとき、その理由が分かり辛い
データ作成だけが目的だから、必須項目以外空にした?
バリデーションテストのために空にした?
ヒューマンエラー?
入力項目が増減するたび、全テストケースの修正が必要
仕様に詳しくないと 入力値を指定できない
「なんでもいいから適当なユーザつくりたい」ときでも、
「何が必須項目か&どんな入力値が許可されてるのか」
を知らないとつくれない
- 31. なので こうしてます
spec
├ features
│ ├ 機能A
│ └ 機能B
├ fixtures
│ ├ 機能A
│ └ 機能B
├ operators
│ ├ 機能A
│ └ 機能B
├ pages
│ ├ 機能A
│ └ 機能B
└ support
テストシナリオ
テストデータ
ページに対する定型操作をまとめたクラス
ページクラス
一般的なユーティリティクラス
Editor's Notes
- #5: ・Selenium2 = Selenium WebDriver
・「Selenium = Firefox のアドオン。キャプチャ&リプレイツール」って認識が主だと思いますが、少し違います。が、それには深く触れません。
- #7: 詳しくはこれから説明します
- #9: ・機械は~のくだり
・別に手動テストでもテスト改修しなきゃいけないけど、実施が人間の場合は「とりあえずテストしてケースは後で直す」ができなくはない
- #13: ・メールアドレス入力欄に “めあど” と入力して登録ボタン押下し、表示されるエラーメッセージが正しいか確認するテスト
- #15: ③について
・「この要素はどうすれば特定できるか」とか、「特定したこの要素をどうやれば操作できるか」とかを知らないと、テストが書けない
- #17: ・Google翻訳を整形したので、合ってると思います
・検索するといくつか解説が見つかります。日本語のも何個かあります。
- #22: ・単に「プログラム言語から使える」という Selenium2 のメリットを享受できるようになっただけですが…
・③について。現状の「テストケースもページクラスも1人で書いてる状態」にはあまり関係ないですが、他社では「ページクラスは開発や社員のテストエンジニアが書き、テストケースはアルバイトが量産する」といった事例もあるそうです。
- #23: ・operators
・実際のテストではひとことで「ユーザ登録する」といっても「項目1~10に値を入れる → ボタンA押下する → ボタンB押下する …」みたいに操作が多いので、定番操作をまとめるために作ってます。
- #27: ・マンション名が空のケースについて
・「マンション名が空でも登録できること」のテストを行うためには 必須項目(苗字etc)が正しく入力されてる必要があるので、こうなります
- #28: ・「なんでもいいから適当なユーザつくりたい」という場合は結構多いです
・ユーザ削除テストでつかうユーザがほしい
・ユーザと紐付く他データ(コミュニティとか)のテストでつかうユーザがほしい
・ユーザ100人いるときの動作テストをしたいetc…
--- a PPN by Garber Painting Akron. With Image Size Reduction included!Fetched URL: https://www.slideshare.net/slideshow/selenium2-36100497/36100497
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy