Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ソフトウェアテストと品質(発表資料)/Software test and quality st...
Search
nihonbuson
September 27, 2018
Technology
3
1.7k
ソフトウェアテストと品質(発表資料)/Software test and quality study (Presentation)_20180925
D3:グルメなテスト テスト設計 - レビュースペシャル - での発表資料です。
https://d-cube.connpass.com/event/101281/
nihonbuson
September 27, 2018
Tweet
Share
More Decks by nihonbuson
See All by nihonbuson
忠実度という概念と開発手法 / Fidelity
nihonbuson
1
82
WACATE流 勉強会会場の選び方 / WACATE venue
nihonbuson
1
620
継続的テストモデルを実現するためにスリーアミーゴスを用いた10Xでのシフトレフトの事例
nihonbuson
3
1.5k
BDD(Cucumber)コミュニティが無料提供しているコンテンツの紹介と現在起きている危機
nihonbuson
4
4.3k
JSTQB FL 幻のテスト技法「ユースケーステスト」を学ぶ / Use_case_testing
nihonbuson
4
2.5k
テストコードを書き始める前に考えるべきテストの話(2023年版) #cedec2023
nihonbuson
1
3k
テスト対象の内容を忘れるためのテスト対象分析 #qa_test_talk / QA Test Talk Vol.3
nihonbuson
3
5.1k
AI(ChatGPT-4)によるテスト設計作成の現状を評価する #Ques20 / Ques20th
nihonbuson
10
6.8k
テストプロセスを用いて、テストケース作成の思考を整理しよう / test process
nihonbuson
7
4k
Other Decks in Technology
See All in Technology
Adopting Jetpack Compose in Your Existing Project - GDG DevFest Bangkok 2024
akexorcist
0
110
テストコード品質を高めるためにMutation Testingライブラリ・Strykerを実戦導入してみた話
ysknsid25
7
2.6k
Platform Engineering for Software Developers and Architects
syntasso
1
520
安心してください、日本語使えますよ―Ubuntu日本語Remix提供休止に寄せて― 2024-11-17
nobutomurata
1
990
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
インフラとバックエンドとフロントエンドをくまなく調べて遅いアプリを早くした件
tubone24
1
430
フルカイテン株式会社 採用資料
fullkaiten
0
40k
Engineer Career Talk
lycorp_recruit_jp
0
170
10XにおけるData Contractの導入について: Data Contract事例共有会
10xinc
6
630
生成AIが変えるデータ分析の全体像
ishikawa_satoru
0
100
開発生産性を上げながらビジネスも30倍成長させてきたチームの姿
kamina_zzz
2
1.7k
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
2
600
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
28
2k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
For a Future-Friendly Web
brad_frost
175
9.4k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2.1k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
Ruby is Unlike a Banana
tanoku
97
11k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
It's Worth the Effort
3n
183
27k
Transcript
ソフトウェアテストと品質 (発表資料) D3:グルメなテスト テスト設計 - レビュースペシャル - @nihonbuson P1
Agenda • はじめに • テストの7原則 • テストの立ち位置とは • 何をテストすべきか •
どうやってテストケースを作るのか • どうやってテストを実施すべきか • おわりに P2
はじめに P3
今回のスライドについて • 今回のスライドを読んだだけでは 伝えたいことの20%も書いていません。 • ぜひ、スライドを共有するだけでなく、 参加した人の言葉で社内に伝達を! • もしも伝えるのが難しければ、 私を呼んでください!
– Twitterで連絡を! • https://twitter.com/nihonbuson
おことわり • 今日の発表は一個人のお話です。 • 所属する会社や団体とは一切関係ありません。 • ただの野菜が喋っているだけです。
今日話す内容は… 評価チームはどうしていくべきか
今日話す内容は… 評価チームはどうしていくべきか ↓ 開発者はどんなことをすべきか
いきなりですが質問です 品質とは何でしょうか? テストの目的は何でしょうか? P4
品質とは何か?
品質とは何か? 「本来備わっている特性の集まりが 要求事項を満たす程度。」 (ISO9000) 「品物またはサービスが、 使用目的を満たしているかどうかを 決定するための評価の対象となる 固有の性質・性能の全体」 (JIS Z
8101:1981, 1999年に廃止)
品質とは何か? 東京海上日動システムズ顧問 横塚 裕志氏 の講演内容より 【具体例2】 デジタルニュースの普及により、 ニュースは、確実な推敲・校正よりも、 「早く伝える」「修正」へ 【具体例1】
トラブルは0でも、 国民の5.8%にしか使われない住基ネットカード。 「ソフトウェアの品質(=存在意義)としては失格」 ※ソフトウェア品質シンポジウム 2014の基調講演にて http://www.publickey1.jp/blog/14/_2014.html P5
テストの目的は何か?
テストの目的は何か? 以下のような目的があります。 • 欠陥の検出 • 対象ソフトウェアの品質レベルが十分であることの確認 • 意思決定のための情報の提示 • 欠陥の作りこみの防止
JSTQBシラバスより http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2011.J02.pdf#page=14 実装前に行うこともある テストの7原則①テストは「欠陥がある」ことしか示せない P6
テストの7原則 P7
テストの7原則 1. テストは「欠陥がある」ことしか示せない 2. 全数テストは不可能 3. 初期テスト 4. 欠陥の偏在 5.
殺虫剤のパラドックス 6. テストは条件次第 7. 「バグゼロ」の落とし穴 http://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2011.J02.pdf#page=15 P8
テストの7原則 1. テストは「欠陥がある」ことしか示せない – テストによって「この製品はバグが無い」 とは証明できない。 2. 全数テストは不可能 – すべてのパターン数は膨大なのでテスト不可能。
3. 初期テスト – いかに早く欠陥に気付けるかが重要 – 「テストは後で」とか考えないこと! 後で詳しく! 後で詳しく!
テストの7原則 4. 欠陥の偏在 – 欠陥は満遍なく存在はせず、局所的に発生する 5. 殺虫剤のパラドックス – 同じ殺虫剤を使い続けると虫も耐性を持ち、 だんだん効かなくなる
– 同様に、同じテストを繰り返すと だんだん新しい欠陥を発見できなくなる 後で詳しく! 後で詳しく!
テストの7原則 6. テストは条件次第 – ソフトウェアの種類によって、テストしたい内容や テストにかけるコストが変わる。 – 例えば、人命に関わる製品とゲーム製品は 同じ品質やテストの工数にはならない 7.
「バグゼロ」の落とし穴 – 必ずしも「欠陥が無い=素晴らしい」ではない。 – 例:バグは0だけど、システムの起動に5時間かかる
全体の開発サイクルの中での テストの立ち位置とは P9
Vモデル(一般的なSIの場合) 要求定義 要件定義 基本設計 詳細設計 コーディング 単体テスト 結合テスト システムテスト 受け入れテスト
http://jasst.jp/symposium/jasst12tokyo/pdf/D4-1.pdf P10
各段階(テストレベル)のテスト例 • 単体テスト(モジュールテスト) – 商品の個数欄にマイナスの数値を入力できない。 • 結合テスト – カートに3個入っていて、2個追加したら、 確認ページで5個になった。
• システムテスト – 会員登録→商品購入→商品キャンセル→退会の 一連の流れ。 P11
Wモデル 要求定義 要件定義 基本設計 詳細設計 レビュー&受け入れ テストの設計 レビュー&システム テストの設計 レビュー&
結合テストの設計 レビュー& 単体テストの設計 受け入れテストの 実施 システムテストの 実施 結合テストの 実施 単体テストの 実施 コーディング デバッグ デバッグ デバッグ デバッグ P12
なぜ早期のテスト・レビューをするのか http://www.jaspic.org/event/2009/SPIJapan/keynote/SJ9keynote.pdf#page=31 P13
何をテストすべきか P14
次の仕様に対してどんなテストをすれば良いか。 • パスワードは4文字以上12文字以下の 英数字のみを許容する • パスワードを3分以内に4回以上間違って入力すると アカウントを5分間ロックする http://www.slideshare.net/takashiyamasaki378/ss-55384920 例題
ステップ1 • 例題について考えてみてください。 • あなたが考えたテスト条件を15ページに 書いてください。
ステップ2 • 隣の人と2人組を作ってください。 • お互いに何を書いたのか 説明してください。
パスワードは4文字以上12文字以下の 英数字のみを許容する パスワードを3分以内に4回以上間違って入力すると アカウントを5分間 ロックする 文字列長 文字種 誤入力 期間管理 誤入力 回数管理
ロック保持期間 状態遷移 P16
パスワードは4文字以上12文字以下の 英数字のみを許容する パスワードを3分以内に4回以上間違って入力すると アカウントを5分間 ロックする 文字列長 文字種 誤入力 期間管理 誤入力 回数管理
ロック保持期間 状態遷移 許容しないとどうなる? (ボタン制御orエラー画面) 5回目の入力はどうなる? P16
Aさん 設計・開発時点 Bさんはエラー画面を 作ってくれるだろう。 Aさんはエラーを ボタン制御でやるだろう。 Bさん
テスト時点 なんでエラー画面を 作っていないの? 私はボタン制御で エラー管理をしていると 思っていたよ! Aさん Bさん
Mr.A Bさん テスト時点 なんでエラー画面を 作っていないの? 私はボタン制御で エラー管理をしていると 思っていたよ! 追加コストが発生!
パスワードは4文字以上12文字以下の 英数字のみを許容する パスワードを3分以内に4回以上間違って入力すると アカウントを5分間 ロックする 文字列長 文字種 誤入力 期間管理 誤入力 回数管理
ロック保持期間 状態遷移 許容しないとどうなる? (ボタン制御orエラー画面) 5回目の入力はどうなる? P16
2つの伝えたいこと • 隣の人はあなたが気付かなかったことを知って いませんでしたか? – お互いにテスト内容についても議論しましょう。 •
2つの伝えたいこと • 隣の人はあなたが気付かなかったことを知ってい ませんでしたか? – お互いにテスト内容についても議論しましょう。 • この例では何もプログラムを書いていません。 – 実装前にテストすることができる例です。
– もしもこの時点で指摘できれば、 総コストは削減できるでしょう。
もしもドキュメントが無かったら… パスワードは4文字以上12文字以下の 英数字のみを許容する パスワードを3分以内に4回以上間違って入力すると アカウントを5分間ロックする どのようなテストを行えば良いか分からなくなります
テストすべき内容(テスト観点)の見つけ方 http://jasst.jp/symposium/jasst13niigata/pdf/S2.pdf P17
視座 誰が使うのか、物事を見る立場 P18
視野 物事を考えたり判断したりする範囲 P19
視点 着目するところ、物事を考える観点 P20
(参考)品質特性 http://www.atmarkit.co.jp/ait/articles/0905/13/news124_3.html P21
使用性の例
使用性の例 面白いデザインだ! 採用! デザイナー どこに何があるのか 分からない! 利用者
使用性の例 並び変えるだけでも分かりやすくなる https://note.openvista.jp/2011/redesigning-shinjuku-building-sign
どうやって テストケースを作るのか P22
テストケースはいくつ? パスワードは4文字以上12文字以下 1文字、2文字、3文字…100文字 膨大な数の テストケース テストの7原則②全数テストは不可能 P23
テストケースはいくつ? • テストケースは時間とあれば無限にできます。 • サンプリング方法としてテスト設計技法があります。 – テストケースを合理的に少なくするための技法 • 同値分割法、 All Pair法
– 多くの欠陥が見つかるようにするための技法 • 境界値分析、 エラー推測、 探索的テスト – テスト対象を(ある観点で)漏れなくテストするための技法 • カバレッジ、デシジョンテーブル、状態遷移、ユースケーステスト http://aster.or.jp/business/seminar_text.html
テストケース作成者「◦◦◦のテストをします!」 司会者「ほぉ~、それはどうしてだい?」 テストケース作成者「【理由を一言】」 テストケース作成の心得 P24
テスト設計技法 ~境界値分析~ テストの7原則④欠陥の偏在 12 4 有効 無効 無効 3 13 パスワードは4文字以上12文字以下
P25
テスト設計技法 ~境界値分析~ • 「パスワードが4文字以上12文字以下」で なぜ3,4,12,13をテストするのか? if( x < 3 ){ return
“入力したパスワードが短いです”; }
テスト設計技法 ~境界値分析~ • 「パスワードが4文字以上12文字以下」で なぜ3,4,12,13をテストするのか? if( x < 3 ){ return
“入力したパスワードが短いです”; } • 上記の例で、不等号のミスによる不具合を 発見できるのは、3の時だけ!
テスト設計技法 ~境界値分析~ テストの7原則④欠陥の偏在 12 4 有効 無効 無効 3 13 パスワードは4文字以上12文字以下
P25
テスト設計技法 ~境界値分析~ テストの7原則④欠陥の偏在 12 4 有効 無効 無効 3 13 パスワードは4文字以上12文字以下
P25 0
テスト設計技法 ~状態遷移テスト~ スタート/ストップ リセット
テスト設計技法 ~状態遷移テスト~ 待機中 計測中 一時停止中 スタート/ストップ リセット スタート/ ストップ スタート/ ストップ
P26
テスト設計技法 ~状態遷移テスト~ 待機中 計測中 一時停止中 スタート/ストップ リセット スタート/ ストップ スタート/ ストップ
P26 計測中
テスト設計技法 ~状態遷移テスト~ P26 待機中 計測中 一時停止中 スタート/ストップ リセット スタート/ ストップ スタート/
ストップ
テスト設計技法 ~状態遷移テスト~ P26 待機中 計測中 一時停止中 スタート/ストップ リセット スタート/ ストップ スタート/
ストップ
テスト設計技法 ~状態遷移テスト~ P26 待機中 計測中 一時停止中 スタート/ストップ リセット スタート/ ストップ スタート/
ストップ リセット リセット
テスト設計技法 ~状態遷移テスト~ P26 待機中 計測中 一時停止中 スタート/ストップ リセット スタート/ ストップ スタート/
ストップ リセット リセット 開発者は上記の矢印6か所を 最低限実施する必要がある。
テスト設計技法 ~状態遷移テスト~ 計測中にリセットボタンを押したら 計測中状態から変わらないなんて、 問題文(仕様)に書いてない! 待機中に変わると思ってた!
テスト設計技法 ~状態遷移テスト~ 今回は私なりに答えを定めました。 実務では、動作が不明な時点で開発者に確認すべき。 仕様に書いていない→抜け漏れの可能性大→バグの可能性大
どうやって テストを実施するのか P27
テストは実施して終わりではない パスワードを「123」にして ログインしようとしたら、 ログインできなかった P28
テストは実施して終わりではない パスワードを「123」にして ログインしようとしたら、 ログインできなかった 何を確認したくて 「123」にしたのか? 「ログインできない」とは どのような状態なのか? 期待通りの 結果なのか?
P28
テストレポート例 テスト目的 再現手順 期待値 OK or NG 実際の結果 パスワードが 3桁以下の時
ログイン失敗 ページに 遷移すること パスワード欄に「123」 と入力する。 ログインボタンを 押す。 ログイン 失敗画面に 遷移する NG ログイン画面 から遷移せず、 「ログイン失敗」と表 示される 他の人や1年後の自分が見ても分かるように書く P29
まとめ P30
まとめ • テストの目的は欠陥の検出以外に欠陥の未然防止がある • テストには開発開始前に行う活動もある • 早期にテストやレビューをすることでコストを削減できる • テストすべき内容には、仕様書から見つけられる内容以外にも、 過去の経験から得られることや品質特性などがある
• 全てを闇雲にテストすると膨大なケース数と時間が発生するが、 その数を削減できる手法がある • テストを実施したときは、他の人が分かるように結果を書く P31
おまけ (講座中にあった質問)
評価チームは何をするの? これだけテストが充実できれば 評価チームは必要ないのでは?
評価チームは何をするの? これだけテストが充実できれば 評価チームは必要ないのでは? ⇒まだまだ必要なことが多いです。 テストエンジニアは 1. システムテストレベルを確認したい! 2. CheckingではなくTestingを行いたい
P11 1. 評価チームは システムテストレベルを見たい! • 単体テスト(モジュールテスト) – 商品の個数欄にマイナスの数値を入力できない。 • 結合テスト
– カートに3個入っていて、2個追加したら、 確認ページで5個になった。 • システムテスト – 会員登録→商品購入→商品キャンセル→退会の 一連の流れ。 評価チームは ここをやりたい!
P11 1. 評価チームは システムテストレベルを見たい! • 単体テスト(モジュールテスト) – 商品の個数欄にマイナスの数値を入力できない。 • 結合テスト
– カートに3個入っていて、2個追加したら、 確認ページで5個になった。 • システムテスト – 会員登録→商品購入→商品キャンセル→退会の 一連の流れ。 開発者は ここをやりきれ!
2. 評価チームはTestingをしたい! https://www.infoq.com/jp/news/2009/12/testing-or-checking
2. 評価チームはTestingをしたい! https://www.infoq.com/jp/news/2009/12/testing-or-checking Checking 意図通り動くか確認する作業 Testing なんとかして製品を破壊する作業
2. 評価チームはTestingをしたい! 【参考】アジャイルテストの4象限 Checking Testing
2. 評価チームはTestingをしたい! http://www.jasst.jp/symposium/jasst17tokyo/pdf/A7.pdf#page=29
テストの勉強方法を知りたい どうやってテストの勉強を すれば良いの? テストの勉強ができる オススメの書籍が知りたい!
テストの勉強でオススメの書籍 (入門者向け) https://www.amazon.co.jp/dp/4822282511 https://www.amazon.co.jp/dp/4817193603
テストの勉強でオススメの書籍 (自動テスト、入門者向け) https://www.amazon.co.jp/dp/4873118166/ 画面上の自動テストの開発に関わらない人も、 第1章と第8章を読むべき
テストの勉強でオススメの書籍 (入門から一歩先行く初心者向け) https://www.amazon.co.jp/dp/4798124699 テストとはどうあるべきかが分かる本 資格勉強用の本だが、資格を取らなくても勉強になる
品質を高めるための一冊 https://www.amazon.co.jp/dp/4873115655 テストは品質を測るための道具であり、品質は上がらない。 品質を上げるためにはコードを綺麗に書こう。
おしまい…?
この講座で 伝えたかったこと (裏の目的)
社外イベントからの引用が多い
社外イベントからの引用が多い
テストの勉強は「習うより慣れよ」 • 1泊2日のワークショップ形式のイベント • 半年に1度開催(6月と12月)。 • 次回は12月15日、16日 • 10周年を迎えました! •
新卒1年目の開発やQAも多く参加 • 参加費は24000円(35歳以上は27000円) • ほとんどが宿泊費・経費で利益は無し http://wacate.jp
最新のテスト事情を知るには JaSSTがオススメ • 日本最大級のテストのイベント • 年に8回、各地で実施 • 次回は11月22日に長崎で開催 • 東京では毎年2月~3月に2日間開催
• 次回は2019年3月27日・28日 http://www.jasst.jp/
【宣伝】JaSST Review開催決定! • レビューのシンポジウムを開催します! • 日程:12月14日 • 場所:赤坂 http://www.jasst.jp/symposium/jasstreview18.html
もっとテスト設計を学ぶなら テスト設計コンテストチュートリアル • テスト設計コンテストとは – 指定された共通の製品に対してテスト設計を行い、 その優劣を競うイベント • テスト設計コンテストチュートリアル –
U-30クラス(10月2日開催) • http://aster.or.jp/business/contest/tutorialu30.html – OPENクラス(10月5日開催) • http://aster.or.jp/business/contest/tutorial.html
http://www.jasst.jp/symposium/jasst17tohoku/pdf/S1.pdf#page=56
(本当に)おしまい