Webアプリケーションのテストについて

ソフトウェアテストは、開発のすべてのライフサイクルに関与するプロセスあり、製品要件の検証と計画 、開発されたシステムの変更の準備と実装に関与します。 その結果、要件とエラーに矛盾があり、使用されたツールが評価されます。

また、注意をそらして体系的に検討する場合、テスターの役割は実際にはすべての人にあります。 プロジェクトを人として見ると、役割



品質保証はテストと同義と見なされることよくありますが、実際には、エラーを見つけて修正するのではなく、エラーを防ぐ方法です。 この意味での品質は、作られた製品の特徴です。



正式に言えば、テスターは、プログラムのコードやインターフェイスだけでなく、 技術的なタスク、プロジェクト計画、分析でも一貫性と明確さを確認する必要があります。 ソフトウェア開発の一般的な流れにおける独立した分野としてのテストは、聴衆(クライアント)、品質、および開発時間がより重要になった90年代初頭に登場しました。

ソフトウェアテストの重要性は、重要なシステムでは特に重要です。 たとえば、 Therac放射線治療装置(1985)は、コードと検証でユニットの状態を検証できないため、6人に致命的な放射線を照射しました。 あるいは、1999年のローバーは、開発チーム間の統一された測定システムの思考不足により、1億2500万ドルの損失をもたらしました。 そしてエストニアでさえ、不十分な負荷テストによる電子選挙に問題があった。

テストの基本原則は、小さなISTQB文書および「ソフトウェアテストの基礎」に具体化されています。

テスターの専門分野全体の「魅力」は、原則として、プログラミングに大きな知識を必要とせず、Web構築から遠く離れた人がこの役割に挑戦できることです。



組織プロセス



プロジェクトに関する会社の作業の一部としてのテストは、プロジェクトの最後にのみテスターの下で行われるウォーターフォールアプローチ、または各反復で完成バージョンが展開されるアジャイル手法に従って実行できます。









テストの反復は、次の項目で構成されます

  1. 計画中。 目標、ツール、時間、順序が決定されます。 最も技術的に難しい部分は、特に技術的なタスク、ドキュメント、および責任のあるプロジェクトマネージャーがいない場合に、システムどのように機能するかを理解して覚えることです(以下の探索的テストを参照)



    したがって、テスターに​​は少なくとも内部がありますが、分析は...

    • 条件
    • インタラクションストーリー(ケース)
    • 仕様、アーキテクチャ、およびその他のドキュメント(存在する場合)へのリンクを含むドキュメント(基本)の形式の実施形態


  2. チェック。 アクセス不能および理解不能の場合-いつ、誰と連絡を取り、タスクが忘れられないこと。

    • テストケースの優先順位付け(通常、1ケース= 1要件= 1 Webページ)。 最も重要なシナリオは何ですか? 開発で最も危険なのはどれですか?
    • 共通モジュールごとにテストをキット(スイート)にグループ化する
    • 検証と要件との比較(実際にエラーを検索)
    • レポートの作成(バグと全体像の両方-カバレッジ率)
    • 変更部分の再確認(確認、再テスト)または未変更部分への影響( 回帰テスト


  3. 完了。 テストのアーカイブ、学習した教訓の保存。




テストレベル



テストには、独自のレベル、階層、およびクラスがあります(hello RPGプレイヤー!)。 アプリケーションのさまざまな部分(つまり、エリアごと、ページごと)と、このセクションのさまざまなプロパティ(つまり、深さ、品質の程度)の両方を確認できます。 ここでは、サイトの規模に応じて、テストをカテゴリに分類できます...



テストの種類



今、実際には、本質的にテスト..



テスターと自己監視用の「テクニカルタスクライター」は、略語SMARTを常に覚えておく必要があります。これにより、より実践的な人々がそれらを正しく理解できるようになります。













ブラックボックス技術者



アドホック (猿)-特定の戦略なしのランダムテスト

探索的テスト (探索的テスト)-ドキュメントの大部分が欠落している場合の製品の調査

エラーを同等のクラスごとにグループ化します同等のパーティション分割 )。 最も人気のある手法。 各入力の要件(文字の長さ、可能な値による)がチェックされます。 テストの数を最小化するために、さまざまな入力のクラスを組み合わせて、エラーを最大限にカバーします。

主に整数値用の別の手法があります。 通常、エラーは境界値で発生するため、この手法が呼び出されます( 境界値分析 )。 境界付近で2つまたは3つの値が選択されます。 たとえば、ヘッダーの最大長が250文字の場合、249、250、および251の値でどのようにエラーが生成されますか?

動的システムにより近い状態遷移テスト手法があります。 状態は入力と以前の状態に依存します。 状態と遷移はグラフ( 有限状態マシン )で記述されます。

アプリケーションのビジネスルールが非常に複雑で、大規模な数学的計算を必要とする場合、意思決定表のテストはそれ自体で思い浮かびます。 テーブルを使用して、一意の組み合わせの数を最小限に抑えます。

シナリオ (ユースケースベース)のテストは 、分析で作成されたシナリオに従って、さまざまな役割、代替フローを考慮して実行されます。

直観的に経験されたテスト (経験ベース)は、すでに理解されているように、時間の経過とともに人に付属し、コードの変更を考慮して、設計、プログラマ、データフローの体系的なエラーを見つけることができます。

ホワイトボックス(構造)テクニック



構造的手法の目的は、可能な限りコードカバレッジをカバーすることです。また、白いボックスはシナリオテクニックへの追加として使用されるため、シナリオまたはより正確には分岐(ステートメント&決定カバレッジ)の最大カバレッジがあることが論理的です。

数学的にカバー率= 100%* カバーされたユニットの数/すべてのユニットの数。 これは、すべてがテストされることを意味するのではなく、選択されたテストユニット( カバレッジアイテム )のみがテストされます。 各ロールのテストユニットは異なって見えます-開発者にとっては、データベーステーブル、コード内の関数、外部コンポーネントへのリクエスト、テスターやアナリストにとってはスクリプト内のアクション、同等クラスです。

テストユニットの上に上がると、 を見ることができ、それに応じてそれらをカバーできます( ステートメントカバレッジ )。 ブラックボックステクニックを使用した適切なテストは、最大60〜75%のオファーをカバーできます。 コードに関しては、これは特定の行です

意思決定カバレッジはすでにより高いレベルであり、すべてのタイプの階層(if-else、switch、メソッド呼び出しなど)が含まれています。 ブラックボックスメソッドは40〜60%をカバーできます。 周期的な複雑さ -二次、指数、および対数の複雑さについてすべてのコンピューター科学者に知られているテストアルゴリズム。

次の範囲のカバレッジには、分岐をたどることができる可能なパスが含まれます。 理論的には、すべてのサイクルを考慮すると、これらのパスは無限に多くなります。

ツール





プログラマーが最もよく知っているツールは、もちろん、バグ/問題追跡システム( MantisBugzillaTrac)です。 いくつかのIDEはそれらと統合できるため、バージョンシステムリポジトリ(SVN / CVS / Git / Mercurial)のコミットアクションは、ブラウザで動作せずにバグを更新できます。





要件の準備、シナリオのグループ化など、より一般的な工業製品があります-HP(Mercury)Quality CenterおよびIBM Rational Quality Manager





自動インターフェイステストは、 SeleniumSilkTestHP QuickTest Pro 、QF-Test、 Rational RobotTestCompleteWatir 、TestPartnerで最も人気があります。 soapUIのようなもっとエキゾチックなテストがあります。

















追加のマシンが必要になるため(たとえば、1台のマシンで300人のユーザー接続をシミュレートする)、負荷テストはもう少し複雑になります。通常、1台のマシンで3000接続を実行することはできません。 ツール:









オリジナル記事



All Articles