この記事を読むことができて幸運な学生は、この記事を注意深く読んでください(何度か読むことを忘れないでください)。この記事はインターフェースのテストスキルを向上させることができるからです。
前面に書かれている_は、最初にテストフィールドのインターフェイスのステータスについて話す必要があります。
企業における実用的なテストスキルの現在のアプリケーションでは、機能テストとインターフェイステストが最も広く使用されています。ただし、機能テストと比較すると、インターフェイステストのギャップは非常に大きくなります。
また、インターフェイステストは、テスト分野で非常に高いステータスを持っており、プライマリソフトウェアテストエンジニアと中間ソフトウェアテストエンジニアの境界線です。したがって、テスターがインターフェーステストを理解している限り、彼らは良い給料で仕事を見つけることができます。
したがって、テストワーカー(つまり、質問者の目から見たQA)は、インターフェイステストの強度を向上させるために最善を尽くす必要があります。
ポイントに戻る
インターフェイステストのコードカバレッジを改善したい場合。まず、コードカバレッジが低い理由を知っておく必要があります。そうすれば、コードカバレッジを改善するためのより良い対策を講じることができます。4部構成で説明します。[記事の最後にある研究ノートを共有する]
1.従来のインターフェイステストのコードカバレッジが低いのはなぜですか?
2.コードカバレッジを改善する方法は?
3.インターフェースのテストケース方法の理解を容易にするために、例を示します。
4.インターフェイステストカバレッジを確保する際に発生する可能性のある問題の分析。
1.従来のインターフェイステストでコードカバレッジ率が低いのはなぜですか?
インターフェイスQAはまだブラックボックスです。QAは、インターフェイスの内部ロジックには関係しません。自分の理解に基づいて、ユースケースとしてさまざまなパラメータの組み合わせを設計するだけです。
実際、対象はすでにコードカバレッジの低さの根本原因を明らかにしています。インターフェイステストの場合、この種のブラックボックステストケースのデザイン思考は比較的一般的です。
ブラックボックステスターのテストケース設計を確認するために、例として単純なインターフェイスシナリオを取り上げましょう。
以http协议为例
单接口:
验证 URL
* 针对URL 路径上存在一些特殊的path需要验证
验证 查询参数,请求头、请求体参数
* 针对参数:正则类的参数校验(正常和异常数据)
* 针对业务:单接口功能覆盖(正向需求和反向需求)
验证 响应数据
* 正常接口响应覆盖
* 异常接口响应覆盖(错误信息)
验证 业务场景:
* 覆盖应用的业务场景
* 通过接口,模拟用户可能的操作流程
インターフェイステスト用のこのブラックボックス設計では、次の4つのカテゴリが見落とされることがよくあります。
脱落分類1.不明確または非標準のテストによって引き起こされたシーンの脱落
インターフェイスのテストケースの設計アイデアが不明確または非標準である場合、シナリオを見逃しがちです。つまり、前述のように、ブラックボックステストケースのデザイン思考でカバーする必要のあるシナリオには省略があり、コードカバレッジが確実に減少します。
分類2が欠落しており、カバーするのが容易ではないブランチが含まれています
インターフェイスの実装ロジックはさまざまで、多くのブランチが含まれます。いくつかの一般的なポイントを以下に示します。もっと追加していただければ幸いです。
1.インターフェースには非同期タスクが含まれます
インターフェイスに非同期タスクが含まれる場合。従来のインターフェイステストケースの設計アイデアは、通常、非同期タスクの通常の実行のみをトリガーします。また、非同期タスクは失敗し、再試行し、定期的にこれらの非同期プロセスをプルアップしますが、これは見逃される可能性があります。したがって、コードカバレッジが減少します。
2.インターフェースにはトランザクションが含まれます
インターフェイスにトランザクションが含まれる場合、従来のインターフェイステストケースの設計では、通常、通常のトランザクションプロセスのみがトリガーされます。ただし、実際の開発者は、ロールバックの特定のステップとロールバック後に必要な処理のために、いくつかの特別なビジネス実装を行っています。これらのシナリオは見逃しやすく、コードカバレッジにも影響します。
3.インターフェースにはロックが含まれます
インターフェイスにロックが含まれる場合、見逃しやすいテストシナリオもいくつかあります。例として、読み取りと書き込みのロックを取り上げます(読み取りと読み取りの共存、読み取りと書き込みの非共存、および書き込みと書き込みの非共存)。従来のインターフェイステストケースの設計では、読み取りと読み取りの共存、読み取りと書き込みの非共存、および書き込みと書き込みの非共存のシナリオが見落とされる可能性があります。これらのシナリオがカバーされている場合でも、ロックの有効期限が切れてロックの取得に失敗した後に待機するシナリオをカバーすることは困難です。明らかに、これによりコードカバレッジが減少します。
4.インターフェースにはキャッシングが含まれます
インターフェイス、特にクエリインターフェイスでキャッシュテクノロジを使用するのが一般的です。バッチクエリなど。インターフェイスにキャッシングが含まれる場合、従来のインターフェイステストケースの設計におけるキャッシングの影響を無視するのは簡単であり、インターフェイスのキャッシングを具体的に検証しません。これにより、コードカバレッジも減少します。
省略分類3.異常なシーンを無視する
理論的には、各インターフェイスには異常なシナリオがある可能性があります
インターフェイスに異常なシナリオがある場合、フレームワークのエラーがスローされますが、これは通常は許可されていません。言い換えれば、プログラマーは通常、インターフェースに現れる可能性のある異常なシナリオに対処する必要があります。一部のシナリオは厳しく、表示が困難であり、テスターは簡単に無視できます。カバレッジがなくなると、コードのカバレッジが確実に減少します。例えば:
シナリオ1:ダウンストリームインターフェイスがタイムアウトを返す
アップストリームサービスがこのサービスによって提供されるインターフェイスを呼び出す場合、このサービスはこのインターフェイスビジネスを処理するときに他のサービスにアクセスする必要があり、他のサービスの戻りがタイムアウトする可能性があり、このサービスは通常、すべてを待機しません時間。
シナリオ2:データベース接続のタイムアウト
特定のインターフェイスがデータを操作する必要がある場合、データベースサーバーのパフォーマンスは確実であり、いくつかのデータベース例外シナリオが必要です。これらのシナリオでは、開発は通常、いくつかのコード処理を行います。
シナリオ3:キャッシュサーバーの例外
キャッシュサービスに保存されている場合、ユーザーのログインステータス。キャッシュサービスが異常または再起動された場合、多くのインターフェイスが影響を受けます。これらのシナリオもカバーする必要があります。
分類がありません4.その他の関連-プロジェクト構成
多くのプロジェクトのビジネスロジックは、構成を通じて制御できますが、これも非常に一般的です。一部の機能が有効になっているかどうか、開始モード、および特定のビジネスコンテンツの制御は、構成アイテムを使用して処理できます。
例えば:
- 機能有効化スイッチ
の設定スイッチがオフになっていると、この機能のビジネスコードをカバーできません。このタイプのコードをカバーするには、関連する営業担当者を有効にしてテストする必要があります。 - スケジュールされたタスク
の構成構成に従って、スケジュールされたタスクの実行ポリシーを設定します。一部のスケジュールされたタスクは、さまざまな状態でデータを処理します。特定のタスクモードがテストされていない場合、または特定のモードのデータ状態カバレッジが不完全な場合、サイドシーンが失われます。コードカバレッジを減らします。
次に、コードカバレッジを改善する方法は?
全体的な考え方:最初の部分で分析した理由から、コードを理解していないテスターがインターフェイスをより適切にテストし、これらのシナリオをカバーできるように、いくつかの対策を講じてください。最終的にコードカバレッジを改善します。
解決策1.ブラックボックステストシナリオの省略
この種の省略は、より良い解決策です。具体的な対策:ユースケースの設計方法とプロセスを標準化すると、基本的なテスターが有能になります。
解決策2.インターフェイスで特別な分岐点、異常なシナリオ、およびプロジェクト構成に関連するシナリオをカバーします
インターフェイス設計のユースケースからこれらのシナリオをカバーする場合は、これらのビジネスロジックを理解して理解する必要があります。この目標を達成するために、次の4つのステップから保証することができます。
- 開発では、インターフェイスドキュメントの提供に加えて、インターフェイス実装ドキュメントも提供されます。このドキュメントでは、インターフェイスの実装プロセスを明確に説明する必要があります。たとえば、インターフェイスに関連する構成アイテム、非同期タスク、トランザクション、ロック、キャッシュなどを明確に説明する必要があります。フローチャートまたはタイミング図を出力できることが最善です。これは非常に重要です。ノーコードベースのテスターがインターフェイスビジネスと実装の詳細を理解するのに大いに役立ちます。
- 要件レビューに参加することに加えて、テスターはプロジェクト要件をマスターします。また、インターフェースの具体的なビジネス理解を深めるために、開発要件設計レビュー会議に参加する必要があります。テスターが一人で読んで学ぶことは難しいので、テスターはビジネスの実装を理解するために、より多くの対応する開発者を見つけることができます。
- 要件が変更された場合、またはビジネス実装が変更された場合は、関連するドキュメントをタイムリーに伝達および更新してください。
- テスターは、インターフェイスの実装ビジネスシナリオをカバーするために、ビジネス実装の把握に基づいてテストケースを設計します。
3.コードカバレッジを改善する方法の理解を容易にするために、例を示します。
例1.例として非同期task_takeバッチ削除
プロジェクトでユーザーに優れたエクスペリエンスを提供するために、一部のインターフェイスでクラスを削除して非同期の削除タスクを実行するのが非常に一般的です。
例:注文のバッチ削除(eコマース会社)、ファイルのバッチ削除(ディスク)など。これらのデータバッチ削除サービスの多くは、非同期タスクを介して実装されます。
データ削除 の想定ロジックを大まかに書いてみましょう
バッチ削除
分析:
通常のインターフェーステストケースカバレッジでは、これらの非同期タスクの他のブランチを無視するのは簡単です。理由も非常に単純です。QAはこれらのロジックを認識していません。これらのシナリオは、インターフェイスが呼び出されたときにも簡単にトリガーされません。
開発者がこのフローチャートを提供すると、テスターはフローチャートに従ってテストケースを完全に設計し、すべてのブランチをカバーできます。
シナリオの例:
- 非同期タスクの書き込みに失敗しました
- 固定ユーザーの固定データを事前に書き込むことでデータ書き込みを防ぐことができます(主キー競合などの処理)
- データベース接続の数を変更し、削除インターフェイスをバッチで実行します
- 非同期タスクの実行に失敗しました
- エラーデータは事前に事前設定されているため、実行が失敗する可能性があります(一部のフィールドが欠落している、一部のフィールド値が間違ったデータです)
例2.トランザクション
プロジェクトには、いくつかのトランザクションを含むいくつかのインターフェース実装がありますが、これも非常に一般的です。
事務
分析:
インターフェイステストケースの設計プロセスでは、ビジネスプロセス全体で可能な限り各ステップの例外をカバーすることを検討し、ビジネスプロセス全体をカバーするようにさまざまなテストシナリオを設計します。
シナリオの例:
- トランザクション内で例外が発生し、ロールバックは成功しました。
例3.ロック
このプロジェクトでは、Web側、App側、アプレットなどのマルチターミナル操作も比較的一般的です。次に、インターフェイスがデータの同じ部分で動作するシナリオがいくつかあります。
ロック
分析:
インターフェイスのテストケースを設計するときは、コードカバレッジを改善するためにロック関連のシナリオを検討してください。
シナリオの例:
- ロックを取得する
- ロックなし
- 書き込みロックを取得する
- 読み取りロックを取得する
- 書き込みロックが存在します
- 読み取りロックを取得する
- 書き込みロックを取得する
- 読み取りロックが存在します
- 読み取りロックを取得する
- 書き込みロックを取得する
- ロックなし
- ロックを解除する
- 読み取りロック
- ロックを正常に解放します
- ロックを解除できませんでした
- 書き込みロック
- ロックを正常に解放します
- ロックを解除できませんでした
- 読み取りロック
例4.スケジュールされたタスク
データをバッチで処理する必要があるプロジェクトがある場合、それは通常、低ピーク期間中に時間指定されたタスクを介して実装されます。
例:データバージョンの移行、期限切れデータのクリーンアップなど。
時限タスク
分析:
サーバーインターフェイスをテストするときは、これらのタイミングタスクも確認する必要があります。コードカバレッジを効果的に改善できます。
ここでの主な重点は、タスク実行のデータステータスです。データの包括性を確保するには、タスクの処理ロジックをカバーできるように、ライフサイクル全体のデータ表現が存在し、特定の大きさである必要があります。 。
シナリオの例:
- スケジュールされたタスクが開始されているかどうか
- スケジュールされたタスクが実行されるかどうか
- タスクが実行される前に、データは包括的です(ライフサイクル全体のすべてのタイプのデータをカバーします)
4.インターフェイステストカバレッジを確保する際に発生する可能性のある問題の分析
難易度1.開発で提供されたインターフェース実装ドキュメントが標準化されていない
開発および実装ドキュメントには、特定のテンプレートと記述仕様が必要であり、開発者はドキュメントを出力する必要があります。管理措置を講じる。
難易度2.テスターが理解しにくい
- ドキュメントは、プロセスの説明と少ないコードに焦点を当てる必要があります。
- これは栽培可能で、難易度は特に大きくありません。このテスターが進歩したくない場合を除いて。
難易度3.設計されたユースケースはテストできません
- いくつかの異常なシナリオがあります、テストを実行することは本当に難しいです、あなたは助けを求めることができます。
- テスターとして、ユースケースを設計する際に、テストを実施できるかどうかを考える必要がないことをますます感じています。主にスキルが不足しているため、テストできません。したがって、ユースケースは通常設計されており、ユースケースの実行は上司によって支援されます。
V.最終的な要約
特定の実装要件
-
- 開発者は、インターフェイスの実装ロジックをコードのアイデアからドキュメントの説明に変換します。これは、ノーコード開発プラットフォームがプロジェクトのビジネスを理解するための前提です。ドキュメントは標準化され、レビューは明確であり、変更はタイムリーに同期されている必要があります。
- テスターは、ドキュメントの読み取り、レビュー学習、コンサルティング開発、およびビジネス実装の理解を通じて、学習を強化する必要があります。
- テスターはビジネスを深く理解し、より包括的なテストシナリオを設計してテストを実装します。
意義
-
- コードカバレッジが改善され、プロジェクトは自然により完全にテストされます。より多くの隠れた問題を見つけることができます。
- これにより、コーディング能力のないテスターが急速に成長し、十分にテストできるようになります。
- 開発と実装のプロセスを標準化し、プロジェクトの開発と管理も促進します。
欠点
-
- 特に部門を超えた運用では、最初は実装が困難になります。
- テストと開発には、より多くの通信コストがかかります。
最後に、私の記事を注意深く読んでくださった皆様に感謝申し上げます。ファンの注目を集める中、常に礼儀正しい交流が必要です。あまり価値のあるものではありませんが、ご利用いただければ幸いです。あなたはそれを直接取ることができます。
これらの資料は、[ソフトウェアテスト]を行う友人にとって最も包括的で完全な準備倉庫である必要があります。この倉庫は、最も困難な旅にも同行しました。これもお役に立てば幸いです。特にテクノロジー業界では、すべてをできるだけ早く行う必要があり、技術基盤を改善する必要があります。お役に立てば幸いです……。