ソフトウェアテスト技術 (7) 自動テスト

自動テスト

自動テストの定義: 自動テスト ツールを使用して、テスト アクティビティの管理と実装、テスト スクリプトの開発と実行など、さまざまなソフトウェア テストの要件を検証します。

自动化测试只是测试工作的一部分,是对手工测试的一种补充;
自动化测试绝不能代替手工测试;多数情况下,手工测试和自动化测试应该相结合,以最有效的方法来完成测试任务。

自動テストの意味

通常、ソフトウェア テストの作業負荷は非常に大きくなります (統計によると、テストは開発時間の 40% を占めます。非常に高い信頼性要件が要求されるソフトウェアによっては、テスト時間が開発時間の 60% を占めることもあります)。しかし、テストの多くの操作は反復的で、非知性的かつ非創造的であり、正確かつ細心の注意を必要とするため、このようなタスクを完了するには人間の代わりにコンピューターが最適です。

ソフトウェア自動テストは手動テストに対して存在し、主に開発されたソフトウェアテストツールやスクリプトなどによって実現され、操作性、再現性、効率が高いという特徴があります。
自動テストが必要な理由を理解するには、次の 2 つの側面を考慮してください。

  1. 手動テストの制限
  2. 自動ソフトウェアテストの利点

手動テストの制限

  • 手動テストではすべてのコード パスをカバーすることはできません。
  • 単純な機能テストケースはテストの各ラウンドで不可欠ですが、ある程度機械的かつ反復的であり、作業負荷が大きいことがよくあります。
  • タイミング、デッドロック、リソースの競合、マルチスレッドなどに関連する目に見えないロジック エラーの多くは、手動テストでは検出することが困難です。
  • システム負荷テストやパフォーマンステストを実行する際、大量のデータや多数の同時ユーザーなど、さまざまなアプリケーションシナリオをシミュレートする必要がある場合、手動テストでは実行が困難です。
  • システムの信頼性試験を行う場合、長期継続試験では、システムが安定して動作するかどうかを10年、数十年にわたってシミュレーションして検証する必要があり、手動試験では再現できません。
  • 短期間 (1 日) で完了する必要があるテスト ケースが多数 (数千) ある場合、手動テストはほとんど不可能です。

自動テストの利点

  • ソフトウェアの開発とテストのサイクルを短縮すると、製品をより早く市場に投入できるようになります。
  • テスト効率が高く、ハードウェアリソースが最大限に活用されます。
  • 人的資源を節約し、テストコストを削減します。
  • テストの安定性と信頼性が向上しました。
  • ソフトウェア テストの精度と精度を向上させ、ソフトウェアの信頼性を高めます。
  • ソフトウェア テスト ツールを使用すると、テストが比較的簡単になり、より高品質のテスト結果が得られます。
  • 自動テストでは、負荷テストやパフォーマンス テストなど、手動では実行できないことを実行できます。

自動テストの前提条件

自動テストを実装する前に、ソフトウェア開発プロセスを分析して、自動テストの使用に適しているかどうかを確認する必要があります。通常、次の条件を同時に満たす必要があります。

  1. 要件の変更が頻繁にない
    テスト スクリプトの安定性によって、自動テストのメンテナンス コストが決まります。ソフトウェア要件が頻繁に変更される場合、テスターは要件の変化に応じてテスト ケースと関連テスト スクリプトを更新する必要があり、スクリプトのメンテナンス自体はコード開発のプロセスであり、必要に応じて変更、デバッグ、テストの自動化を行う必要があります。コストが、それを使用することで節約されたテスト コストより低くない場合、自動テストは失敗します。
    プロジェクト内の一部のモジュールは比較的安定していますが、一部のモジュールの要件は非常に変わりやすいです。これにより、比較的安定したモジュールのテストを自動化できますが、比較的大きな変更については依然として手動テストが必要です。
  2. プロジェクトサイクルは十分に長い
    自動テスト要件の決定、自動テストフレームワークの設計、テストスクリプトの作成とデバッグはすべて完了するまでに長い時間がかかる このようなプロセス自体がテストソフトウェア開発プロセスであり、完成まで長い時間がかかります。プロジェクトのサイクルが比較的短く、そのようなプロセスをサポートする十分な時間がない場合、自動テストは冗談になります。
  3. 自動テスト スクリプトは再利用できます。
    多大な努力を払ってほぼ完璧な自動テスト スクリプトのセットが開発されたものの、スクリプトの再利用率が非常に低く、プロセス中に費やされるコストが生み出される経済的価値よりも大きくなる場合、自動テストはテスターの選択となっていますが、これは練習作業であり、実際にメリットを生み出すことができるテスト方法ではありません。
  4. 手動テストでは完了できず、多くの時間や人手がかかる場合には、自動テストの導入も検討する必要があります。性能テスト、構成テスト、大容量データ入力テストなど。

自動テストへのアプローチ

ソフトウェアテスト自動化の基本は、専用のプログラムを設計することでテスターの動作プロセスや動作挙動をコンピュータ上でシミュレートしたり、コンパイルシステムのようにコンピュータプログラムをチェックしたりすることです。

ソフトウェアテスト自動化の原理と方法には主に次のようなものがあります。

  1. コード上で直接静的および動的分析を行う
  2. テストプロセスのキャプチャと再生
  3. テストスクリプトテクノロジー
  4. 仮想ユーザー技術とテスト管理技術。

自動テストの欠点

  • 間違った信念や非現実的な期待
  • 資格のある経験豊富な試験担当者の不足
  • テストツール自体の問題はテストの品質に影響します
  • 不十分かつ効果的なトレーニング
  • 企業の実情を考慮せず、やみくもにテストツールを導入する
  • 良好なテストツール環境が形成されていない
  • その他の技術的および組織的問題

自動テストの適用方向

自動テストと手動テストにはそれぞれ特徴があり、テスト対象やテスト範囲が異なりますが、
システム機能ロジックテスト、受け入れテスト、適用性テスト、物理的相互作用テストなどでは、手動テスト手法であるブラックボックステストが採用されることが多いです。中古です。

自動テストには、単体テスト、統合テスト、システム負荷テスト、パフォーマンステスト、安定性テスト、信頼性テストなどが適しています。
不安定なソフトウェア、開発サイクルの短いソフトウェア、および 1 回限りのソフトウェアのテストは、自動テストには適していません。

典型的なオープンソース自動テストツール

機能テストツール

ツール名 序章 URL
Abbot Java GUI テスト フレームワーク Java GUIテストツール http://abbot.sourceforge.net/
シャープロボ dotNet の WinForm アプリケーションを記録/再生するためのテスト ツール http://gforge.public.thoughtworks.org/projects/sharprobo/
石鹸 HTTP プロトコルを介して Web サービスをテストする http://www.soapui.org/
httpユニット Web アプリケーションへのアクセスと機能テストをコードを通じて制御する http://httpUnit.sourceforge.net
サミー Perl ベースの Web 機能テスト ツール http://samie.sourceforge.net/
Ruby に基づいた、IE のオートメーション インターフェイス実装を呼び出す Web 機能テスト ツール http://wtr.rubyforge.org/
Linuxテストプロジェクト Linux用カーネルテストツール http://ltp.sourceforge.net/

パフォーマンステストツール

ツール名 序章 URL
オープンスタ HTTP/HTTPSプロトコルに対応し、多くのユーザーが利用するWEBパフォーマンステストツール http://opensta.org/
Jメーター HTTP/HTTPS、FTP、Socket、その他のプロトコルをサポートできる Java ベースのパフォーマンス テスト ツール http://jakarta.apache.org/jmeter/
グラインダー J2EE アプリケーションをテストするためのパフォーマンス テスト ツール http://grinder.sourceforge.net/
テストメーカー HTTP、HTTPS、SOAP、XML-RPC、SMTP、POP3、IMAP プロトコルをサポートできる、WEB アプリケーションをテストするためのパフォーマンス テスト ツール http://www.pushtotest.com/ptt/
DBモンスター データベースのベースデータを生成するためのツール http://dbmonster.kernelpanic.pl/
データベース オープンソース テスト スイート データベースのパフォーマンスをテストするためのスイート http://ltp.sourceforge.net/

欠陥ライブラリ

ツール名 序章 URL
バグジラー 最も有名な欠陥ライブラリの 1 つで、強力で、構成ツール CVS とよく統合されています。 http://www.mozilla.org/projects/bugzilla/
カマキリ 欠陥管理ツールの基本機能を網羅した使いやすい欠陥ライブラリ http://mantisbt.sourceforge.net/
トラック 優れた欠陥およびインシデント管理ツール。Subversion と適切に統合でき、各欠陥の解決の追跡を維持できます。 http://projects.edgewall.com/trac/
バグフリー それはマイクロソフトの欠陥管理システムの合理化されたバージョンであり、中国人自身のオープンソースツールであると主張しています http://bugfree.1zsoft.com/

単体テストツール

ツール名 序章 URL
JUnit Java の回帰テスト フレームワークは、さまざまな拡張機能を通じて巨大なテスト フレームワークになりました http://www.junit.org/index.htm
カクタス ServerSide をテストするための単体テスト ツール。サーブレット、EJB などをテストできます。 http://jakarta.apache.org/cactus/index.html
Cppユニット C++ 用の単体テスト ツール http://cppunit.sourceforge.net/
尼僧 dotNet の単体テスト ツール http://www.nunit.org/
DbUnit 異なるテスト間でデータベース環境を維持するために使用されます。 http://dbunit.sourceforge.net/

おすすめ

転載: blog.csdn.net/lichukuan/article/details/126861918