歓迎の言葉
こんにちは、Habrausers様! ソフトウェアシステム、その自動化、およびこれに使用するツールのテストに焦点を当てる記事をご紹介したいと思います。
今日、開発されたソフトウェア製品のテストプロセスを実行する可能性を疑う人はほとんどいませんが、残念ながら、テストを正しく実装および適用する方法を誰もが明確に理解しているわけではありません。 著名人-テスターにとって、私の記事は実用的な利点をもたらすものではありませんが、トピックに興味のある新参者を喜ばせるものがあります。
当初、私の目標は問題領域全体をカバーすることではありません。 これは一連の本には十分ではありません。さらに、私は書くのに十分な知識と経験を持っていません。 この記事の主な目的は、ツリー全体にアイデアを広めることではなく、テスト自動化とは何か、いつ、何を使用するかを読者に十分に明確に伝えることです。
基本的な概念
短い理論上の余談から始めましょう。
したがって、 テストとは、ソフトウェアの品質を評価および改善するために実行されるアクティビティを意味すると理解されています。 一般に、テストはソフトウェアシステムの欠陥と問題の検出に基づいています。
自動ソフトウェアテストは、テストの基本的な機能と手順(結果の開始、初期化、実行、分析、出力など)が自動テストツールを使用して自動的に実行されるソフトウェアテストプロセスです。
一方、自動テストツールは、テストスクリプトの実行結果の作成、デバッグ、実行、および分析を実行するソフトウェアです(テストスクリプトは、ソフトウェアの特定の部分を自動的にチェックするための一連の命令です)。
ソフトウェアシステムのテストでは、有限のテストセットでプログラムの動作を動的に検証します。 この場合、テストはアプリケーション領域で通常実行されるアクションから選択され、予想されるシステム動作へのコンプライアンスの検証を提供します。
自動テストアプリケーション
このリストの最初の項目はパフォーマンステストです。 負荷、ストレス耐性、安定性テスト...自動化なしでは、その実装は想像するのが困難です。 このため、不便で機能が不十分なツールの場合でも、さまざまなメーカーの製品の幅広い選択と同様に高い価格があります。
次は回帰テストです。 以前のバージョンでリリースおよびテストされた機能の正確性についてソフトウェアをチェックすることを意味します。 条件に応じて設定される定期的な頻度で実行されます。新しいビルドごとに、および顧客の各バージョンごとに。
構成テスト-異なる条件で同じテストを実行します。 つまり、システムアーキテクチャの1つまたは複数のコンポーネントを異なる環境でテストする必要がある場合、通常は初期要件に記載されています。 例:さまざまなメーカーのDBMSサポート、さまざまなクライアントブラウザでの作業、複数のOSでの使用など。 つまり、回帰テストの特定の類似物ですが、システムの1つのバージョンのフレームワーク内です。
機能テスト。 ここで、新しい機能のテストについて話していることは明らかです。 場合によっては、自動化なしではできないことがあります。 テストを1回だけ実行する必要がある場合でも。 通常、これらのテストはその後回帰に使用されます。
インストールテストは、顧客の特定のシステム要件を考慮して、製品のインストール(および構成)の条件を検証するために実行されます。
「なんで?」
...誰かが尋ねます。 質問は非常に合理的です。 ご存じのとおり、テストは手動で、または自動化ツールを使用して実行できます。 いずれかのアプローチの方向に選択を行うには、その長所と短所を理解する必要があります。
テスターにとっての自動化の利点は何ですか? そして、ここにいくつかあります:
- 「ヒューマンファクター」を除外。 強い尊厳。 私たちはすべて人間であり、私たちは誰も間違いから免れません。 実行するテストスクリプトは不注意テストを逃すことはなく、結果を台無しにしません。
- 高速実行-自動化されたスクリプトは、指示やドキュメントを参照する必要がありません。
- サポートコストの削減-スクリプトが既に作成されている場合、通常、同じ量のテストを手動で実行するよりも、サポートと結果の分析にかかる時間が短くなります。
- レポート-テストの結果に関するレポートを自動的に送信および保存します。
- 介入なしの実行-テストの実行中に、テスターエンジニアが他の有用なタスクに従事したり、テストが数時間後に実行されたりする場合があります。
ただし、次のような多くの欠点があります。
- 再現性-すべての書面によるテストは常に均一に実行されます。 これは、テストを手動で実行するテスターが詳細に注意を払い、発生した欠陥を見つけることができるため、欠点でもあり利点でもあります。 悲しいかな、スクリプトはこれを行うことができません。
- サポートコスト-アプリケーションが頻繁に変更されるほど高くなります。
- 高い開発コスト-自動テストの開発は複雑なプロセスです。実際、別のアプリケーションをテストしているアプリケーションの開発があるからです。
- 自動化ツールのコスト-ライセンスソフトウェアを使用する場合、そのコストは非常に高くなる可能性があります。 自由に配布されるツールは、原則として、より控えめな機能と使いやすさの点で異なります。
- マイナーエラーのスキップ-自動スクリプトは、プログラムされていないマイナーエラーをスキップできます。
テストを自動化する方法は?
むしろ、それはこう言うでしょう:彼らの活動におけるテスト自動化プロセスの実装にどのようにアプローチするか?
最初に、自動化ツールがアプリケーション内のコントロールをどの程度認識しているかに注意する必要があります。 要素が認識されない場合、プラグインまたは対応するモジュールを探す価値があります。 ない場合は、ツールを拒否することをお勧めします。
次に、選択したツールを使用して記述されたスクリプトをサポートするために必要な時間を覚えておく必要があります。 これを行うには、メニュー項目を選択する簡単なスクリプトを記述し、選択するメニュー項目が変更されたと想像できます。 スクリプトを復元するためにスクリプト全体を書き直す必要がある場合、実際のスクリプトははるかに複雑であるため、ツールは最適ではありません。
最後に注意すべきことは、ツールが新しいスクリプトを書くのにどれほど便利かということです。 これにどれくらいの時間が必要か、コードをどれだけ構造化できるか、コードをどれだけ読み込めるかなど。
フィニッシュラインで
自動化の使用の適切性に関する最終決定を下すために、通常、特定の状況で自然に発生する質問に答えることをお勧めします。 特定の場合の欠点が受け入れられない場合は、自動化を控えるべきです。
ツール選択
ほとんどの場合、テストツールはテストオブジェクトとテストシナリオの要件に依存します。これは、テストツールがアプリケーションの開発に使用されるテクノロジの全範囲をサポートできないためです。 したがって、ツールの選択は試行錯誤の平凡な方法に限定されます。 その結果、多くの場合、テスターはアプリケーション機能をテストするためのいくつかのツールを選択します。
いくつかの一般的なテスト自動化ツールを詳しく見て、簡単なテストスクリプトを作成する例を示すのが論理的です。
HP QuickTest Professional
Hewlett-Packardキャンペーンの自動化ツール。 有料で配布(8000〜10000 USD)。 このメーカーの機能テストを自動化するための主要なツールです。 テストアプリケーションで作業する際のユーザーアクションを記録することにより、機能テストと回帰テストを自動化し、ソフトウェアの操作性を検証するために記録されたアクションを実行できます。
記録されたアクションはスクリプトとして保存されます。
スクリプトは、ツール内でVBScript(エキスパートビュー)として、またはアクションを伴う視覚的な連続ステップ(キーワードビュー)として表示できます。
各ステップを編集し、そこにチェックポイントを追加して、予想される結果と結果を比較できます。
IBM Rational Functional Tester
それも支払われますが、それほど多くはありません( "ちょうど何か" 6000 USD)。
Rational Functional Testerは、機能テスト、回帰テスト、ユーザーインターフェイステスト、データ駆動テストを可能にする自動テストツールをテスターに提供します。
それについて多くの説明的な情報を提供するのではなく、実際的な例を提供します。
使用例
IBM Rational Functional TesterとMicrosoft Visual Studio開発環境との統合が使用されます。 機能テストを作成するには、次を実行する必要があります。
1)Microsoft Visual Studio開発環境で、新しい「機能テストプロジェクト」プロジェクトを作成します。
![](https://habrastorage.org/storage2/d75/10f/a13/d7510fa1378b44a7d21746259f03c774.png)
2)テスト対象のアプリケーションでのユーザーアクションを記録します。
![](https://habrastorage.org/storage2/488/446/83d/48844683d8534c42ca4745fa1192e00e.png)
3)記録中にテストポイントを作成します。 チェックポイントは、ドロップダウンリストの値もチェックします。
![](https://habrastorage.org/storage2/07b/6a6/ed2/07b6a6ed2c87fff4485e4fd6a65e68e1.png)
4)記録結果を保存します。
![](https://habrastorage.org/storage2/ef7/2bc/c37/ef72bcc376d485b79efc41e1d7be3327.png)
次に、実行用のテストスクリプトを呼び出して結果を確認するbatファイルを作成する必要があります。
rational_ft.exe -datastore “< VS>\DemoTestRFT” -playback uml2cqtestscript
findstr failed “< VS>\DemoTestRFT_logs\uml2cqtestscript\rational_ft_logframe.html”
if %errorlevel% == 1 goto end
exit -1
:end
exit 0
batファイルは次のアクションを実行します。
IBM Rational Functional Testerは、次のパラメーターで呼び出されます。
-datastore “< VS>\DemoTestRFT”
-プロジェクトのあるディレクトリへのパス。
-playback uml2cqtestscript
テストスクリプトを実行します。
IBM Rational Functional Testerは、結果をHTML形式でレポートに書き込みます。 テストスクリプトの実行中に少なくとも1つのステップが失敗したかどうかを判断するには、レポートで「失敗」という単語を見つける必要があります。
検索結果に応じて、結果は0または-1です。
実行結果
![](https://habrastorage.org/storage2/1e0/ad4/cb2/1e0ad4cb2569f1d48b217066c06f9df0.png)
セレン
そして、これはOpenQA.org社の無料パッケージです。
Seleniumの中核は、JavaScriptで実装され、ブラウザを使用して直接チェックを実行するWebアプリケーションテスト環境です。 Seleniumプロジェクトのフレームワーク内で、3つのツールが生成されます。各ツールには、Selenium Core、Selenium IDE、Selenium RC、およびSelenium GRIDという独自の特性と範囲があります。
サポートされるテクノロジー:DHML、JavaScript、Ajax
サポートされているOS:Mac OS、Microsoft Windows、Linux、Solaris
テスト言語:HTML、Java、C#、Perl、PHP、Python、およびRuby
テスト済みアプリケーション:Webアプリケーション。