Smoke TestingとSanity Testingの違いを例で詳しく調べます。
このチュートリアルでは、ソフトウェアテストにおけるSanity TestingとSmoke Testingとは何かを学びます。 また、正気と煙のテストの主な違いについても簡単な例を使って学びます。
ほとんどの場合、正気テストと煙テストの意味の間で混乱します。 まず第一に、これら二つのテストは”異なる”方法であり、テストサイクルの異なる段階で実行されます。,
健全性テスト
健全性テストは、QAとして、機能テスト、UI、OS、ブラウザテストなど、すべてのテストケースを実行するのに十分な時間がない場合に行われます。
したがって、私は定義します、
“正気テストは、各実装とその影響に触れるために行われるテスト実行として行われますが、徹底的にまたは詳細ではありません。functional、UI、バージョンなどが含まれる場合があります。 実装とその影響に応じてテストします。”
私たちは一日か二日でサインオフする必要がありますが、テスト用のビルドがまだリリースされていない状況に陥るのではありませんか?,
ああ、私はあなたもあなたのソフトウェアテストの経験で少なくとも一度はこのような状況に直面している必要があることを賭けます。 まあ、私のプロジェクトはほとんどアジャイルであり、時には同じ日に配信するように求められたので、私はそれに多く直面しました。 おっと、どうすれば数時間でビルドをテストしてリリースできますか?
たとえそれが小さな機能であっても、その含意は途方もないものになる可能性があるので、私は時々狂っていました。 としては、凍結のケーキ、お客様が単にごみを与えます。, 数時間でテスト全体を完了し、すべての機能、バグを確認してリリースするにはどうすればよいですか?
このようなすべての問題に対する答えは、すなわち正気テスト戦略を使用するだけで、非常に簡単でした。
モジュールまたは機能または完全なシステムに対してこのテストを行うとき、実行のためのテストケースは、同じすなわち広いが浅いテストのすべての重要なビットとピースに触れるように選択されます。
時には、テストはテストケースなしでランダムに行われることさえあります。, でもこのアメニティ試験すればする場合にのみ実行中の短い時間のないこのため通常のリリースなどで行っています。 理論的には、このテストは回帰テストのサブセットです。
私の経験
ソフトウェアテストでの8年以上のキャリアのうち、3年間、私はアジャイル方法論で働いていました。
すべての大きなリリースは体系的に計画され、実行されましたが、時には小さなリリースはできるだけ早く配信されるように求められました。, 私たちは、テストケースを文書化し、実行し、バグドキュメントを行い、回帰を行い、プロセス全体に従う時間があまりありませんでした。
したがって、次のような状況の下で私が従っていた重要なポインタのいくつかは次のとおりです。
#1)マネージャーと開発チームが実装について議論しているとき、彼らは速く動作する必要があり、したがって、我々は彼らが私たちを別々に説明することを期待することはできません。
これはまた、彼らが何を実装しようとしているのか、どの領域に影響を与えるのかなどについてのアイデアを得るのに役立ちます。, なぜなら、時にはその意味を理解していないだけであり、既存の機能が(最悪の場合)妨げられるかどうかを理解していないからです。
#2)あなたは時間が短いので、開発チームが実装に取り組んでいる頃には、Evernoteなどのツールでテストケースを大まかにメモすることができます。 しかし、後でテストケースツールに追加できるように、それらをどこかに書いてください。,
#3)実装に従ってテストベッドを準備し、テストベッドに時間がかかる場合(そしてそれがリリースの重要なテストである場合)、特定のデータ作成のような赤いフラグがあると感じたら、すぐにそれらのフラグを上げて、マネージャーまたはPOにバリケードについて知らせてください。
クライアントがasapを望んでいるという理由だけで、QAが半分テストされていてもリリースされるという意味ではありません。,
#4)あなたのチームとマネージャーと合意してください時間のクランチのために、あなたは開発チームにバグを伝えるだけであり、バグ追跡ツールのさまざまな段階のバグをマークする正式なプロセスは、時間を節約するために後で行われることになります。
#5)開発チームが最後にテストしているときは、それらとペアリング(dev-QAペアリングと呼ばれます)し、セットアップ自体に対して基本的なラウンドを,
#6)ビルドが完了したので、まずビジネスルールとすべてのユースケースをテストします。 後でフィールドの検証、ナビゲーションなどのテストを保持できます。
#7)あなたが見つけたバグは何でも、それらのすべてをメモして、個々に報告するのではなく、開発者に一緒に報告しようとします。
#8)全体的なパフォーマンステストまたはストレスまたは負荷テストの要件がある場合は、同じものに対して適切な自動化フレームワークがあること, これらを正常性テストで手動でテストすることは不可能に近いためです。
#9)これは最も重要な部分であり、確かにあなたの正気テスト戦略の最後のステップです–”リリースメールやドキュメントを起草するときは、実行したすべてのテストケース、ステータスマーカーで見つかったバグ、テストされていないものが残っている場合は理由でそれを言及する”テストについての鮮明な話を書いてみてください。
私はこのテストを使用していたときに宗教的にこれに従いました。,
私に私の自身の経験を共有することを許可しなさい:
#1)私達はウェブサイトに取り組んで、キーワードに基づいてadsをポップアップするのに使用した。 広告主は、同じために設計された画面を持っていた特定のキーワードの入札を配置するために使用されます。 デフォルトの入札値は$0.25として表示されていましたが、入札者は変更することさえできました。
このデフォルトの入札単価が表示され、他の値に変更することもできる場所がもう一つありました。 クライアントは、デフォルト値を$0.25から$0.5に変更する要求を受けましたが、明白な画面だけに言及しました。,
私たちのブレーンストーミングの議論の間、私たちは忘れてしまった(? その目的のためにあまり使用されていなかったので、この他の画面について。 しかし、入札の基本的なケースを$0.5で実行し、端から端までチェックしたときのテスト中に、ある場所で$0.25を見つけていたため、同じcronjobが失敗していることがわかりました。
私はこれを私のチームに報告し、変更を行い、同じ日に正常に配信しました。
#2)同じプロジェクト(上記)の下で、入札のためのメモ/コメントのための小さなテキストフィールドを追加するように求められました。, それは非常に簡単な実装であり、私たちは同じ日にそれを提供することを約束しました。したがって、上記のように、すべてのビジネスルールとその周りのユースケースをテストし、検証テストを行ったときに、</>、ページがクラッシュしました。
私たちはそれを考え、実際の入札者はどのような場合でもそのような組み合わせを使用しないことを考え出しました。 したがって、我々は問題について十分に起草されたメモでそれをリリースしました。, トの受け入れることとしてバグが合意したとのプロジェクトを実施する後だったので、さらに厳しいバグがないます。
#3)最近、私はモバイルアプリプロジェクトに取り組んでいたので、タイムゾーンごとにアプリに表示される配信時間を更新する必要がありました。 これは、アプリだけでなく、webサービスのためにテストされるだけではなかった。
開発チームが実装に取り組んでいる間、私はwebサービステスト用の自動化スクリプトと配信項目のタイムゾーンを変更するためのDBスクリプトを作, これは私の努力を救い、私達は短い持続期間の内のよりよい結果を達成できました。
正気テスト対回帰テスト
以下に示す二つの間にいくつかの違いがあります:
S.いいえ。 |
回帰テスト |
健全性テスト |
---|---|---|
1 | 回帰テストは、システム全体とバグ修正が正常に機能していることを確認するために行われます。, | 健全性テストは、各機能が期待どおりに機能していることを確認するためにランダムに行われます。 |
2 | このテストでは、最も小さな部分はすべて退行します。 | これは計画されたテストではなく、時間のクランチがあるときにのみ行われます。 |
3 |
それはよく精巧で計画されたテストです。 |
これは計画されたテストではなく、時間のクランチがあるときにのみ行われます。 |
4 | このテストのために適切に設計されたテストケーススイートが作成されます。, | 毎回テストケースを作成できるわけではないかもしれませんが、通常は大まかなテストケースのセットが作成されます。 |
5 | これには、機能、UI、パフォーマンス、ブラウザ/OSテストなどの詳細な検証が含まれます。 すなわちシステムのあらゆる面は退行する。 | これは、主にビジネスルール、機能の検証が含まれています。 |
6 | これは広くて深いテストです。 | これは広く浅いテストです。 |
7 | このテストは、時には数週間または月に予定されています。, | これは主に最大2-3日にわたります。 |
モバイルアプリのテストのための戦略
なぜ私はここでモバイルアプリについて特に言及しているのか疑問に思う必要がありますか?
その理由は、WEBアプリやデスクトップアプリのOSとブラウザのバージョンがあまり変わらず、特に画面サイズが標準であるためです。 しかし、モバイルアプリでは、画面サイズ、モバイルネットワーク、OSのバージョンなどが安定性に影響し、見た目と一言で言えば、モバイルアプリの成功に影,
したがって、モバイルアプリでこのテストを実行するときに戦略策定が重要になります。 テストは賢くそして注意してされなければならないも。
以下は、”モバイルアプリ”でこのテストを正常に実行するのに役立ついくつかのポインタです。
#1)まず、OSバージョンが実装に与える影響をチームで分析します。
のような質問に対する答えを見つけようとすると、動作はバージョンによって異なりますか? 実装はサポートされている最低バージョンで動作するかどうか?, バージョンの実装にはパフォーマンスの問題がありますか? 実装の動作に影響を与える可能性のあるOSの特定の機能はありますか? など。
#2)上記のメモでは、電話モデルを分析するつまり、実装に影響を与える電話の機能はありますか? GPSによる行動変化の実装はありますか? 携帯電話のカメラで実装動作が変化していますか? など。 影響がないことがわかった場合は、異なる電話機モデルでのテストを避けてください。,
#3)実装にUIの変更がない限り、UIテストを最も優先度の低いものにしておくことをお勧めします(必要に応じて)UIがテストされないことをチームに知らせることができます。
#4)時間を節約するために、実装が強力なネットワークで期待どおりに動作することは明らかであるため、優れたネットワークでのテストは避けてくだ いじめテストを4Gまたは3Gネットワーク.
#5)このテストはより短い時間で行われますが、単なるUIの変更でない限り、少なくとも一つのフィールドテストを行うことを確認してください。,
#6)異なるOSとそのバージョンのマトリックスをテストする必要がある場合は、スマートな方法で行うことをお勧めします。 たとえば、テスト用に、最低、中、および最新のOSとバージョンのペアを選択します。 できることでリリース文書というわけではありません組み合わせをいただきました。
#7)同様の行で、UI実装の健全性テストのために、時間を節約するために小、中、大の画面サイズを使用してください。 シミュレータとエミュレータも使用できます。,
予防措置
健全性テストは、時間が足りないときに実行されるため、すべてのテストケースを実行することはできず、最も重要なことは、テストを計画するのに十分な時間が与えられていないことです。 非難ゲームを避けるためには、予防措置を講じる方が良いです。
このような場合、書面によるコミュニケーションの欠如、テスト文書およびミスアウトは非常に一般的です。,
これに陥らないようにするには、
- クライアントが共有する書かれた要件が与えられないまで、テスト用のビルドを受け入れないようにしてください。
- クライアントが変更や新しい実装を口頭またはチャットまたは単純な1ライナーで電子メールで通信し、それを要件として扱うことを期待しています。 強制的にクライアントを提供する基本的な機能のポイント受け入れ基準とします。
- テストケースやバグをきれいに書くのに十分な時間がない場合は、常に大まかなメモを作ってください。 またこれらの非正規滞在., 時間がある場合は、リードまたはチームと共有して、不足しているものがあれば簡単に指摘できるようにしてください。
- あなたとあなたのチームが時間が不足している場合は、バグが電子メールで適切な状態でマークされていることを確認してください? できるメールの完全なリストバグのチームに♪マーク。 常に相手のコートでボールを保つ。
- 自動化フレームワークの準備ができている場合は、それを使用してマニュアルテストを行わないようにしてください。,
- 配信できることを100%確信していない限り、”1時間でリリース”のシナリオは避けてください。
- 最後ではなく、少なくとも、上記のように、テストされているもの、取り残されているもの、理由、リスク、バグが解決されているもの、”後で”されているものなどを伝える詳細なリリースメールをドラフトします。
QAとして、テストする必要がある実装の最も重要な部分は何か、除外または基本テストできる部分は何かを判断する必要があります。,
短時間であっても、あなたがやりたいことについての戦略を計画し、与えられた時間枠で最高のものを達成することができます。
Smoke Testing
Smoke Testingは網羅的なテストではありませんが、その特定のビルドの基本機能が期待どおりに正常に動作しているかどうかを確認するために実行されるテストのグループです。 これは、常に”新しい”ビルドで行われる最初のテストであり、常に行われるべきです。,
開発チームがテストのためにQAにビルドをリリースするとき、ビルド全体をテストし、実装のいずれかにバグがあるかどうか、または動作する機能のいずれかが壊れているかどうかを直ちに確認することは明らかに不可能です。
これに照らして、QAは基本的な機能が正常に動作していることをどのように確認しますか?
これに対する答えは、煙のテストを実行することです。
テストがスモークテスト(テストスイート内)としてマークされると、詳細なテストおよび/または回帰のためにQAによってビルドが受け入れられます。, Smokeテストのいずれかが失敗した場合、ビルドは拒否され、開発チームは問題を修正し、テスト用に新しいビルドをリリースする必要があります。
理論的には、Smokeテストは、開発チームによってQAチームに提供されたビルドがさらなるテストの準備ができていることを証明するための表面レベルのテストとして定義されています。 このテストは、ビルドをQAチームにリリースする前に開発チームによっても実行されます。
このテストは、通常、統合テスト、システムテスト、および受け入れレベルテストで使用されます。 なこの代替としての実績によりend to endで完了します。, これは、ビルドの実装に応じて、正と負の両方のテストで構成されます。
煙のテストの例
このテストは、通常、統合、受け入れ、およびシステムテストに使用されます。
QAとしての私のキャリアの中で、私はいつも煙テストを実行した後にのみビルドを受け入れました。 それでは、いくつかの例を挙げて、これらすべての三つのテストの観点から煙テストが何であるかを理解しましょう。
#1)受け入れテスト
ビルドがQAにリリースされるたびに、受け入れテストの形でスモークテストを行う必要があります。,
このテストでは、最初の最も重要なスモークテストは、実装の基本的な期待される機能を検証することです。 このように、その特定のビルドのすべての実装を確認する必要があります。
ビルドで行われた実装として、次の例を見てみましょう。
- 登録されたドライバが正常にログインできるようにログイン機能を実装しました。
- ダッシュボード機能を実装し、ドライバーが今日実行するルートを表示しました。,
- 特定の日にルートが存在しない場合に適切なメッセージを表示する機能を実装しました。
上記のビルドでは、受け入れレベルで、スモークテストは、基本的な三つの実装が正常に動作していることを確認することを意味します。 これら三つのいずれかが壊れている場合、QAはビルドを拒否する必要があります。
#2)統合テスト
このテストは、通常、個々のモジュールが実装され、テストされるときに行われます。, 統合テストレベルでは、このテストは、すべての基本的な統合とエンドツーエンドの機能が期待どおりに正常に機能していることを確認するために
これは、一緒に二つのモジュールまたはすべてのモジュールの統合であってもよいので、煙テストの複雑さは、統合のレベルに応じて異なります。
このテストのための統合実装の次の例を考えてみましょう。
- routeモジュールとstopsモジュールの統合を実装しました。
- 到着ステータス更新の統合を実装し、停止画面に同じことを反映します。,
- 配信機能モジュールまでの完全なピックアップの統合を実装しました。
このビルドでは、smoke testはこれら三つの基本的な実装を検証するだけでなく、第三の実装については、いくつかのケースで完全な統合も検証します。 これは、統合で導入される問題と、開発チームが気づかなかった問題を見つけるのに役立ちます。
#3)システムテスト
名前自体が示唆するように、システムレベルでは、スモークテストには、システムの最も重要で一般的に使用されるワークフローのテストが含まれています。, これは、完全なシステムの準備ができた後にのみ行われます&テストされ、システムレベルのこのテストは、回帰テスト前のスモークテ
完全なシステムの回帰を開始する前に、基本的なエンドツーエンド機能が煙試験の一部としてテストされます。 完全なシステム用のsmokeテストスイートは、エンドユーザーが非常に頻繁に使用するエンドツーエンドのテストケースで構成されています。
これは通常、自動化ツールの助けを借りて行われます。,
スクラム方法論における重要性
現在、プロジェクトはプロジェクト実装においてウォーターフォール方法論に従うことはほとんどなく、ほとんど 従来の滝方法、煙の試験は高いているスクラム、アジャイル.
私はスクラムで4年間働いていました。 そして、スクラムでは、スプリントの期間が短いため、失敗したビルドをすぐに開発チームに報告して修正することができるように、このテストを行うこ,
以下は、スクラムにおけるこのテストの重要性についてのいくつかのテイクアウトです。
- 二週間のスプリントのうち、ハーフタイムはQAに割り当てられますが、時にはQAへのビルドが遅れることがあります。
- スプリントでは、問題が早い段階で報告されることがチームにとって最善です。
- 各ストーリーには一連の受け入れ基準があるため、最初の2-3の受け入れ基準をテストすることは、その機能のスモークテストと同じです。 顧客は単一の規準が失敗すれば配達を拒絶します。,
- 開発チームがビルドを提供したのが2日で、デモのために残っているのは3日だけで、基本的な機能の失敗に遭遇した場合、どうなるか想像して
- 平均して、スプリントには5-10のストーリーがあるため、ビルドが与えられたときには、ビルドをテストに受け入れる前に、各ストーリーが期待どおりに実装され
- システム全体がテストされ、退行されるとき、スプリントはアクティビティに専念します。, したがって、回帰を開始する前に最も基本的な機能を検証することは非常に重要です。
煙テスト対ビルド受け入れテスト
煙テストは、直接ビルド受け入れテスト(BAT)に関連しています。BATでは、ビルドが失敗していないか、システムが正常に動作しているかどうかを確認するために、同じテストを行います。 ビルドが作成されたときにいくつかの問題が導入され、配信されたときにビルドがQAで機能しないことがあります。,システムが失敗した場合、QAとしてテスト用のビルドをどのように受け入れることができるので、BATはスモークチェックの一部であると言いますか? 機能だけでなく、QAが詳細なテストを進める前にシステム自体が機能しなければなりません。
煙テストサイクル
以下のフローチャートは、煙テストサイクルを説明しています。
ビルドがQAにデプロイされると、smokeテストに合格すると、ビルドはQAチームによって受け入れられ、さらなるテストが行われますが、失敗すると、報告された問題が修正されるまでビルドが拒否されるという基本的なサイクルが続きます。,
テストサイクル
誰が煙テストを実行する必要がありますか?
すべてのQAの時間の無駄を避けるために、チーム全体がこのタイプのテストに関与しているわけではありません。
スモークテストは、QAリーダーによって、さらなるテストのためにビルドをチームに渡すか拒否するかについて、結果に基づいて決定されるのが理想的です。 または、リードがない場合、QA自身もこのテストを実行できます。
時には、プロジェクトが大規模なものである場合、QAのグループはこのテストを実行してshowstoppersをチェックすることもできます。, なぜなら、スクラムはリードやマネージャーがいないフラットな構造であり、各テスターは自分のストーリーに対して独自の責任を持っているからです。
したがって、個々のQAは、自分が所有するストーリーに対してこのテストを実行します。
なぜ煙テストを自動化する必要がありますか?
このテストは、開発チームによってリリースされたビルドで行われる最初のテストです。 このテストの結果に基づいて、さらなるテストが行われます(またはビルドが拒否されます)。,
このテストを行う最良の方法は、自動化ツールを使用し、新しいビルドが作成されたときにsmoke suiteを実行するようにスケジュールすることです。 なぜ”煙テストスイートを自動化する”べきか考えているかもしれませんか?
私たちは、次のケースを見てみましょう:
のは、あなたが離れてあなたのリリースから一週間であり、合計500のテストケースのうち、あなたの煙のテストスイートは80-90 りますので、実行中のすべてのこれらの80-90のテストケース、手動で想像どのくらいの時間を取りますか? 私は4-5日(最小)だと思います。,
しかし、自動化を使用してスクリプトを作成してこれらの80-90のテストケースをすべて実行する場合、理想的には2-3時間で実行され、すぐに結果 それはあなたの貴重な時間を節約し、大いにより少ない時間造りのについての結果を与えなかったか。
5年前、私はあなたの給料、貯蓄などについての入力を取った財務投影アプリをテストしていました。、そして、あなたの税金、貯蓄、財務ルールに応じて利益を投影しました。 これに伴い、変更に使用された国とその税ルールに依存する国のカスタマイズが行われました(コード内)。,
このプロジェクトでは、800のテストケースがあり、250はsmokeテストケースでした。 Seleniumを使用することで、これらの250件のテストケースの結果を3-4時間で簡単に自動化して取得できます。 それは私たちの時間を節約しただけでなく、showstoppersについてできるだけ早く私たち
したがって、自動化することが不可能でない限り、このテストの自動化の助けを借りてください。
メリットとデメリット
まず、いくつかの欠点と比較して提供することがたくさんある利点を見てみましょう。
利点:
- 簡単に実行できます。
- リスクを軽減します。,
- 欠陥は非常に早い段階で同定される。
- 努力、時間、お金を節約します。
- 自動化されている場合はすぐに実行されます。
- 少なくとも統合のリスクと問題。
- システムの全体的な品質を向上させます。
短所:
- このテストは、完全な機能テストと同等ではなく、完全な機能テストの代わりでもありません。
- スモークテストに合格した後でも、showstopperのバグが見つかることがあります。,
- このタイプのテストは、特に約700-800のテストケースを持つ大規模なプロジェクトで、テストケースを手動で実行するのに多くの時間を費やすことが
煙のテストは、非常に早い段階で大きな失敗とshowstoppersを指摘しているため、すべてのビルドで確実に行う必要があります。 これは、新しい機能だけでなく、モジュールの統合、問題の修正、即興にも適用されます。 これは、実行して正しい結果を得るための非常に簡単なプロセスです。,
このテストは、(全体として)機能またはシステムの完全な機能テストのためのエントリポイントとして扱うことができます。 しかし、その前に、QAチームはどのテストを煙テストとして行うべきかを非常に明確にする必要があります。 このテストは、労力を最小限に抑え、時間を節約し、システムの品質を改善することができます。 それは短距離走の時間がより少しであるので短距離走の非常に重要な場所を保持する。
このテストは、手動でも自動化ツールの助けを借りても行うことができます。 しかし、最良かつ好ましい方法は、自動化ツールを使用して時間を節約することです。,
煙と正気のテストの違い
ほとんどの場合、正気のテストと煙のテストの意味の間で混乱します。 まず第一に、これら二つのテストは”異なる”方法であり、テストサイクルの異なる段階で実行されます。
S.いいえ。Th> スモークテスト 正気テスト 1 スモークテストとは、ビルドで行われた実装が正常に動作していることを(基本)確認することを意味します。, 健全性テストとは、新しく追加された機能、バグなどを確認することを意味します。 正常に動作しています。 2 これは最初のビルドでの最初のテストです。 ビルドが比較的安定しているときに行われます。 3 すべてのビルドで行われます。 安定した回帰後のビルドで行われます。, 以下は、その違いを図式的に表現したものです。
煙のテスト
- このテストは、新しいハードウェアを初めてオンにし、火や煙をキャッチしない場合に成功すると考えるハードウェアテストプラクティスから始まりました。 ソフトウェア業界では、このテストは浅くて広いアプローチであり、アプリケーションのすべての領域が深すぎることなくテストされます。,
- スモークテストは、書かれたテストセットまたは自動テストを使用してスクリプト化されます。
- スモークテストは、アプリケーションのすべての部分に大まかな方法で触れるように設計されています。 それは浅くて広いです。
- このテストは、プログラムの最も重要な機能が機能しているかどうかを確認するために行われますが、より細かい詳細に悩まされません。 (ビルド検証など)。
- このテストは、アプリケーションを詳細にテストする前に、アプリケーションのビルドに対する通常のヘルスチェックです。,
健全性テスト
- 健全性テストは、機能の一つまたはいくつかの領域に焦点を当てた狭い回帰テストです。 正気のテストは通常狭く、深いです。
- このテストは通常、台本なしで行われます。
- このテストは、アプリケーションの小さなセクションが小さな変更後も動作していることを判断するために使用されます。
- このテストは大まかなテストであり、アプリケーションが仕様に従って機能していることを証明するのに大まかなテストで十分であるときはいつ このレベルのテストは、回帰テストのサブセットです。,
- これは、要件が満たされているかどうかを確認し、すべての機能を幅最初にチェックすることです。