Testing Techniques の翻訳版です。
テストの技法
2023年4月26日
Nandish Kumar / Testing Engineer
前回のブログでは、テスターが持つべき基本的なテストの特長について述べました。今日は、技術そのものに焦点を当てます。もし見逃したら、前のブログへのリンクはこちらです: 「テスト」と「チェック」の違い
私たちテスティングセンターオブエクセレンス(TCoE)は、このプロセスを Five-fold Testing System (五重のテストシステム) と呼んでいます。あなたが行うあらゆるテストは、5つの次元で説明できます。
ほとんどのテストは、5つの次元すべてに関与しています。ある次元に焦点を当てたテクニックと、他の次元に焦点を当てたテクニックを組み合わせることで、望む結果を得ることができるのです。
実際にどのような効果があるのか、見てみましょう。
ある人が「ファンクションテスト(すべての機能を徹底的にテストすること)をしてください」と言うかもしれません。これは、何をテストすべきかを示しています。しかし、誰がテストを行うのか、どのようなバグを探すのか、各機能をどのようにテストするのか、そしてプログラムの合否をどのように判断するのかを決めなければなりません。
誰かが、 extreme-value テスト(変数に極値を入力したときのエラー処理をテストする)をするように言うかもしれません。これは、どのような種類の問題を探すべきかを教えてくれます。しかし、誰がテストを行うのか、どの変数をどのようにテストするのか、そして結果をどのように評価するのかを決めなければなりません。
最後に、誰かがあなたにベータテスト(市場の外部代表者にソフトウェアをテストしてもらうこと)を依頼するかもしれません。これで、誰がテストするのかがわかります。あなたはまだ、彼らに何を伝えるか(そしてどのくらい伝えるか)、製品のどの部分を見るか、どんな問題を探すか(そしてどんな問題を無視するか)を決めなければなりません。また、ベータテストでは、ある種の問題の見分け方を具体的に伝えたり、特定のテストを特定の方法で実施するよう求めたりすることもあります。
人ベースのテクニックは、「誰が」テストを行うかに焦点を当てます。
ユーザーテスト。製品を使用する一般的な人々を対象としたテストです。ユーザーテストは、開発中のいつでも、お客様のサイトでもお客様のサイトでも、慎重に指示された練習でも、ユーザーの自由裁量でも行われることがあります。タスク分析など、ユーザーテストの中には、一人で行うテストというよりも、(少なくとも一人のユーザーとあなたの会社のテストチームの少なくとも一人のメンバーが参加する)共同探求のようなものもあります。
アルファテスト - テストチーム(と、場合によっては興味を持つ、友好的な内部関係者)が行う社内テスト。
ベータテスト - ユーザーテストの一種で、組織外のテスターを使用する。テスト対象の製品は、通常、完成に非常に近い状態です。多くのテストセンターでは、ベータテストとして「プレリリースコード」を顧客に公開する。
バグバッシュ - プログラマーや技術顧問など、手の空いている人を使って行う社内テスト。一般的なバグバッシュは半日程度で終了し、ソフトウェアのリリースが間近に迫っているときに行われる。
専門家によるテスト - ソフトウェアが扱ういくつかの問題についての専門家に製品を渡し、フィードバック(バグ、批判、褒め言葉など)を求める。
ペアテスト - 2人のテスターが協力してバグを見つけます。通常、2人は1台のコンピューターを共有し、テスト中にそのコンピューターの制御を交換します。
カバレッジベースの手法は、「何を」テストするかに重点を置いています。
機能テスト
すべての機能を1つずつテストします。その機能が動作すると確信できる程度に、徹底的にテストする。ホワイトボックスの機能テストは、通常ユニットテストと呼ばれ、コードの中で見たままの機能に集中する。
等価クラス分析。等価クラスとは、ある変数に対して、同等と考えられる値の集合のことです。テストケースは、次のような場合に等価となります:
(a) すべてが同じものをテストしている
(b) 一人がバグをとれば、他の人もバグをとるだろう。
(c)一人がバグをとらえなければ、他の人もおそらくとらえられない。
等価クラスを見つけたら、そのメンバーのうち1つか2つだけをテストする。
境界のテスト
等価クラスは、値の集合です。それらを数直線上にマッピングすることができれば、境界値はクラスの最小と最大のメンバーです。境界テストでは、この境界値をテストします。また、テストするクラスの最小のメンバーよりちょうど小さく、テストするクラスの最大のメンバーよりちょうど大きい、近くのクラスの境界値もテストします。
例えば、10~50の整数を受け付ける入力フィールドを考えてみましょう。注目すべき境界値は、10(最小)、9(小さすぎる最大の整数)、50(最大)、51(大きすぎる最小の整数)です。
ロジックテスト
変数には、プログラムの中での関係があります。たとえば、「PERSON-AGEが50より大きく、SMOKERがYESなら、OFFER-INSURANCEはNOでなければならない」という決定ルールがプログラムにあるとします。決定ルールは、論理的な関係を表現している。論理テストは、プログラム内のすべての論理関係をチェックしようとするものです。
仕様に基づくテスト
仕様書に記載されている製品に関する事実上の主張をすべて検証することに焦点を当てたテスト。これには、マニュアル、マーケティング文書や広告、顧客に送付する技術サポート文書に記載されているすべての主張が含まれることが多い。
組み合わせのテスト
2つ以上の変数を互いに組み合わせてテストすること プログラムによって提供されるほとんどの恩恵は、多くの変数の相互作用に基づいています。テストでそれらを共同で変化させなければ、個々の値ではなく、難しい組み合わせによって引き起こされるエラーを見逃すことになります。
アクティビティベースのテクニック
「どのように」テストするかに重点を置いています。
リグレッションテスト
リグレッションテストでは、同じテストを再利用することで、変更があった後に(これを用いて)再テストを行えます。リグレッションテストには2種類あります:
その目的は、変更によって、以前は動作していたものが壊れてしまったことを証明することです。
スモークテスト
このタイプの副作用リグレッションテストは、新しいビルドがテストする価値があることを証明することを目的として行われます。これはビルド検証テスト(BVT)とも呼ばれます。スモークテストは、しばしば自動化され、あるビルドから次のビルドへと標準化されます。動作すると思われるものをテストし、動作しない場合は、プログラムが間違ったファイルでビルドされたか、基本的な何かが壊れているのではないかと疑うことになります。
探索的テスト。テスターには、プロジェクトを通して、製品、市場、リスク、以前のテストに失敗した方法などについて学ぶことを期待します。新しいテストは常に作成され、使用されます。新しいテストは、テスターの継続的な知識に基づいているため、古いテストよりも強力です。
シナリオ・テスト。シナリオ・テストには通常、以下の属性が含まれます。
ユースケースから派生したテストは、シナリオテストやユースケースフローテストとも呼ばれます。以上のような属性を持つテストは説得力があり、プログラムに失敗してもバグフィックスをもたらす可能性が高い。
インストールテスト
ソフトウェアをインストールできる様々な方法、様々な種類のシステムにインストールする。ディスク上のどのファイルが追加、変更されたかを確認する。インストールしたソフトは動作するか?アンインストールするとどうなるか?
負荷テスト
テスト対象のプログラムやシステムは、リソースに対する多くの要求に直面しているシステム上で実行されることにより、攻撃されます。十分な負荷がかかると、システムはおそらく故障しますが、故障に至る事象のパターンから、テスト対象のソフトウェアやシステムの脆弱性が指摘され、テスト対象のソフトウェアをより通常通りに使用した場合に悪用される可能性があります。
ロングシーケンステスト
テストは一晩、あるいは数日、数週間にわたって行われる。その目的は、短いシーケンステストでは見逃されるようなエラーを発見することです。この方法で発見されることが多いエラーの例としては、メモリリーク、スタックオーバーフロー、2つ以上の機能の間の悪い相互作用などが挙げられます。これは、期間テスト、信頼性テスト、耐久性テストと呼ばれることもあります。
パフォーマンステスト
このテストは通常、プログラムの実行速度を測定し、最適化が必要かどうかを判断するために実行されます。しかし、このテストによって、他の多くのバグが発見されることがあります。以前のリリースからパフォーマンスが大きく変化した場合、コーディングエラーの影響を示すことがあります。
例えば、簡単な関数テストの実行にかかる時間を今日テストし、明日同じマシンで同じテストを実行した場合、テストの実行速度が3倍以上速くなったり遅くなったりしたら、プログラマーに確認するかバグレポートを書くことになるでしょう。どちらの場合も、プログラムの基本的な部分が変更されていることが疑われるからです。
評価ベースの技術は、テストが成功したか失敗したかをどのように見分けるかに焦点を当てます。
データの自己検証
テストに使用するデータファイルには、出力データが壊れているかどうかを判断するための情報が含まれています。
保存した結果との比較
今日出た結果と先週の結果を比較して「合格か不合格か」を判断する回帰テスト。先週は正しい結果が出たのに、今は違うということは、その違いが新たな不具合を反映している可能性があります。
仕様書などの権威ある文書との比較
仕様書との不一致は(おそらく)エラーである。
一貫性
一貫性は、プログラムを評価するための重要な基準です。矛盾はバグを報告する理由になるかもしれませんし、意図的な設計の変化を反映しているかもしれません。
上記の手法に加えて、テスティングセンターオブエクセレンス(TCoE)は、現在、組織全体に対して「アクセシビリティ・アズ・ア・サービス」を提供しています。これは、HCLSoftwareのデジタル製品が、障害を持つ人を含むすべての人にとってアクセシブルであることを保証するために、HCLSoftwareが支援できることを意味します。HCLSoftwareのアクセシビリティ・テスト・サービスの活用にご興味をお持ちの方は、ぜひお問い合わせください。
New HCL RTist 11.3 2023.13 Release Is Out の翻訳版です。
HCL RTist 11.3 2023.13 をリリースしました
2023年4月25日
著者: HCLSoftware / HCLSoftware - a division of HCL Technologies, fuels the Digital+ economy and fulfills clients transformative needs with AI and Automation, Data and Analytics, Digital Transformation, and Enterprise Security.
HCLSoftwareは、最新のHCL RTistのリリースで、技術の進歩の最前線に立ち続けています。HCL RTistはC++のための開発環境です。ソフトウェアエンジニアに、リアルタイムアプリケーションの設計、分析、構築、デバッグ、デプロイのための強力なツールを提供します。イベント駆動型のリアルタイム・アプリケーションを作できます。
RTist開発チームは、11.3 2023.13と呼ばれるRTistの別のリリースを確定させました。これらの改善には、バグフィックスと新機能の両方が含まれています。
モデルデバッガが個々のポートインスタンスのトレースをサポートするようになりました。デバッグビューからドラッグ/ドロップするか、Add ボタンを使用して、トレースエディタのキャプチャテーブルにポートインスタンスを追加します。ポートインスタンスで送受信されるイベントは、トレースタブに表示されます。
Show Source in Editor コマンドを使用してコードエディターを開くと、選択した要素のすべてのコードスニペットが含まれるようにできます。要素のすべてのコードを1つのエディタに表示することで、開いているエディタの数を減らせます。これにより、要素に関連するすべてのコードの概要をよりよく把握できます。現在、これは実験的な機能であり、これを使用するには、まず Experimental Features の環境設定ページでこれを有効にする必要があることに注意してください。
ダイアグラムのコンテキストメニューから、継承された状態、遷移、ポートに移動できるようになりました。以前は、このコマンドは再定義された要素に対してのみ有効でしたが、再定義されていない継承された要素に対しても機能するようになりました。プロジェクト・エクスプローラーに移動し、そこからコンテキスト・メニューの Navigate – Navigate to Diagram コマンドを使用して、継承された要素を示すダイアグラムに移動できます。
モデルコンパイラは、デフォルト値を持つ属性で、プロパティ Initializer Kind が Constructor に設定されているが、コンストラクタが生成されないものを検出した場合に警告を表示するようになりました。これにより、矛盾したプロパティを早期に検出することができ、属性が期待通りに初期化されない状況によるランタイムの驚きを回避できます。
新機能の詳細については、Sprint Demo YouTube Playlist にあるビデオをご覧ください。
HCL OneTest Delivers New Software Features の翻訳版です。
HCL OneTest 10.5.2 の新機能
2023年4月21日
著者: Martin Lescuyer / HCL OneTest Product Manager
HCLSoftwareは、ソフトウェアテストツールの新バージョン、HCL OneTest - 10.5.2 を発表します。HCLSoftwareのOneTestポートフォリオは、お客様の強化要望を実現し続けています。これらの機能は、変化するテクノロジー環境をサポートし、DevOpsライフサイクルを向上させるものです。
では、バージョン10.5.2では何が新しくなったのでしょうか?プラットフォーム別に見ていきましょう。
HCL OneTest ServerからHCL OneTest APIエージェントで仮想サービスを実行する HCL OneTest APIエージェントが、HCL OneTest Serverのチームスペースに登録するように設定できるようになりました。これを行うには、サーバーのホスト名、チームスペース名、およびセキュリティトークンが必要です。その後、ユーザーはその場所に仮想サービスをデプロイできます。
HCL OneTest ServerでSeleniumテストを実行する Maven プロジェクト内にある Selenium テストを HCL OneTest Server から実行できるようになりました。
機能テストスクリプトを実行するためのWeb UIエンジンの自動選択 OneTest UIでは、機能テストスクリプトを再生する際に、デフォルト機能としてWeb UIエンジンが自動的に選択されるようになりました。
ユニファイドレポートの詳細パネルの強化 テスト再生後のユニファイドレポートの詳細パネルのStart applicationセクションで、プロファイル名の表示、キャッシュのクリア、履歴値のクリアができるようになりました。
テストでのドラッグドロップ操作に対応 テストステップにドラッグ&ドロップの操作ができるようになりました。
IBM Instana Observabilityの統合 Enable Instanaオプションを選択すると、HCL OneTest Performanceはテスト中のリクエストに特定のHTTPヘッダーを追加して、ページとトランザクションに関するデータを照合します。
コマンドラインオプションの強化 コマンドラインオプションが強化され、引用符で囲まれたワイルドカード文字*を使用して、一度に複数のテスト資産を実行することができるようになりました。を異なる組み合わせで使用することで、フォルダ内にある任意のテスト資産またはすべてのテスト資産を指定できます。
外部で記録されたイベントからテストリソースをインポートして作成する 外部アプリケーションで記録され、HTTPアーカイブファイルとして保存されたイベントをRecording Studioにインポートすることができるようになりました。イベントをインポートした後、テストやスタブを作成し、HCL OneTest APIで実行できます。
エンコード設定の自動検出 フィールドのバイナリコンテンツからエンコード設定を自動的に決定するかどうかを制御する新しいオプションが、環境設定として利用できるようになりました。
ソフトウェアテストツールの詳細、無料トライアル をご覧ください。
HCL Secure DevOps will be at Agile International Conference! の翻訳版です。
HCL Secure DevOps が Agile International Conferenceに参加します
2023年3月13日
著者: Ryley Robinson / Project Marketing Manager, HCLSoftware
Agile International Conference は、3月9日(木)~10日(金)にフロリダ国際大学にて開催されます。参加者は3月9日の午後1時から行われる私たちの講演セッションに参加する機会があり、そこで私たちはバリューストリーム管理の採用が組織にもたらす機会について議論し、技術的パイプラインを越えて、チームを本当に望ましいビジネス成果を提供するように調整します。
また、HCLSoftware は独自のポッドキャストをライブで配信する予定です。このポッドキャストでは、Renaissance Software の創設者である James Grenning と Allvue Systems のソフトウェアエンジニアである David Ralph と話をする予定です。
私たちのチームのエキスパートが、ソフトウェアの機能を実演し、質問に答え、DevOpsとバリューストリームマネジメントの現状についての洞察を提供する予定です。
ぜひご参加ください。詳細はこちら でご確認ください。
Join us at Embedded World 2023! の翻訳版です。
Embedded World 2023に参加しませんか
2023年3月13日
著者: Ryley Robinson / Project Marketing Manager, HCLSoftware
組込みシステム開発者、スペシャリスト、プロジェクトマネージャー、プロダクトマネージャーは、「組込みインテリジェンス」についての理解を深めたいと考えていますか?
Embedded World 2023で、HCL OneTest と HCL RTist に参加しませんか?
HCL OneTestは、プロジェクトのライフサイクルを通して、UI、パフォーマンス、APIのテストをサポートします。スクリプトレス、ウィザード駆動のテストオーサリング環境を特徴とし、100以上の技術やプロトコルをサポートしています。
Embedded Worldは、3月14日(火)~16日(木)にニュルンベルクのMessezentrumで開催される予定です。このカンファレンスは、組み込みコミュニティのダイナミックな環境の一部であり、プロの組み込み開発者コミュニティのためのTHE international meeting placeです。
私たちのチームのエキスパートが、ソフトウェアの機能のデモンストレーション、質問への回答、HCL OneTestとHCL RTistの現状についての洞察を提供するために、会場にいます。
私たちと一緒に参加しませんか?詳細はこちらでご確認ください。
HCL RTist Announces Two New Releases
HCL RTist、2 つの新しいリリースを発表
2023年2月10日
著者: Mattias Mohlin / Senior Solutions Architect for HCLSoftware
HCL RTist 開発チームは、2つの新しいリリースを発表します。
HCL RTist 11.3 は、Eclipse 2022.06 と Java 17 で動作し、現在、実稼働環境での使用を推奨しています。2022.06では、Eclipseのコアの改良に加え、CDT(C/C++ Development Tooling)とEGitの新バージョンが登場し、いくつかの重要な改良が加えられています。
CDTとEGitの改善点については、こちらのプレゼンテーションをご参照ください。What's Newプレゼンテーション
RTist特有の新機能として、Pure Virtual Operations with Bodies、Make Space Tool、Diagram Appearance Improvementが両リリースで利用可能です。各機能の詳細については、こちらをご覧ください。
HCL RTist、2つの新リリースを発表
コードビューまたはコードエディタを使用して、純粋仮想操作の実装ボディを提供することが可能になり、モデルコンパイラによってC++に変換されます。このような実装は、再定義されたオペレーションから呼び出すことができるため、純粋な仮想オペレーションを実装すると便利な場合があります。
ほとんどのダイアグラムで、パレットに新しい "Make Space "ツールが追加されました。このツールは、シンボルや線を図の特定のポイントから移動させ、コンテンツを追加するためのスペースを確保するために使用します。シンボルはクリックしたポイントから放射状に移動し、図に十分な空きスペースができるまでクリックし続けることができます。必要であれば、ダイアグラムのサイズを自動的に大きくして、コンテンツを配置することができます。
ステートマシン図において、継承された要素と再定義された要素の外観が改善されました。このような要素は、デフォルトで破線で描かれるようになりました。再定義された要素には、特別なスタイルの破線が使用され、継承された要素とより簡単に区別することができるようになりました。
継承された要素と再定義された要素の線の太さも以前より太くなりましたが、新しい環境設定「リアルタイム開発-ダイアグラム-状態図-継承された要素の外観-線幅」があり、以前の外観を好む場合は「小さい」に設定することが可能です。逆に、これらの要素をさらに強調したい場合は、環境設定を "大" に設定することができます。
RTistの新機能については、Sprint Demo YouTube Playlistにあるビデオをご覧ください。
API Testing Kubernetes: Transparent Remoting Using HCL OneTest の翻訳版です。
Kubernetes の API テスト - HCL OneTest を使ったトランスペアレント・リモーティング
2023年2月14日
著者: HCLSoftware - a division of HCL Technologies, fuels the Digital+ economy and fulfills clients transformative needs with AI and Automation, Data and Analytics, Digital Transformation, and Enterprise Security.
Kubernetes の API テスト - HCL OneTest を使ったトランスペアレントリモーティング 講演者: Chris Haggan, Head of Product – DevOps, HCL Software and Martin Lescuyer, HCL OneTest Product Manager
クラウドやコンテナ化された世界でのテストは、しばしば非常に困難です。テスターが直面しなければならないつらい作業の1つは、コンテナがデプロイされると、一部のAPIはアクセス可能なままかもしれませんが、他のAPI(内部のもの)にはもうアクセスできなくなることです。たとえAPIの一部がアクセス可能なままであっても、アプリケーションの外部から送信されたリクエストは、いくつかの管理レイヤーを通過しなければならない。テスターはこれらのレイヤーを取り除き、テストしたいサービスに直接リクエストを送りたいと思うかもしれない。
典型的なKubernetesアプリケーションは、通常、いくつかのコンテナと、それらのコンテナ内のサービスで構成されています。これらは通常、Egress/Ingressコントローラと多くのセキュリティレイヤーの背後に配置されているため、アプリケーションとのやり取りは、公開されているかどうかにかかわらず、アプリケーション全体のAPIに制限されます。HCL OneTest は、これらの制限に対するソリューションを提供します。HCL OneTest を使用した透過的リモーティングは、Kubernetes クラスター内の個々のサービスに、あたかもローカルであるかのように直接? Ingress コントローラーを経由するのではなく、テスターはコンテナ化されたサービスと直接対話することができるのです。
HCL Software Head of Product- DevOps の Chris Haggan と HCL OneTest Product Manager の Martin Lescuyer が、HCL OneTest を使った Transparent Remoting の仕組み、実際の使用感、そしてなぜそれがユーザーにとってそれほど重要なのかを、最新の TestGuild 自動化ポッドキャストに出演していますので聞いてください。
A New Release: RTist 11.2 2022.48 の翻訳版です。
新しいリリース: HCL RTist 11.2 2022.48
2023年1月27日
著者: Mattias Mohlin / Senior Solutions Architect for HCLSoftware
HCL RTist 開発チームは、2つの新しいリリースを確定しました。
これらのリリースの新機能のいくつかを見てみましょう。
Inheritance Rearrangement ダイアログが大幅に改善され、継承の再配置によって影響を受ける参照のリストを表示することができるようになりました。各参照の処理方法を選択でき、ダイアグラム・エディター、プロジェクト・エクスプローラー、プロパティ・ビューで参照する要素を表示するように移動することが可能です。
継承の再配置ダイアログは、リファクタリング後、サブカプセル内の少なくとも1つの参照が現在のターゲット要素にバインドできない場合にのみ表示されます。すべてのターゲット要素にアクセスできる場合(新しいスーパーカプセルはすでに古いスーパーカプセルを継承しているため)、ダイアログは表示されず、継承の再配置は簡単に実行できるようになります。これは、既存の継承階層にカプセルを追加または削除する一般的なシナリオを最小限の労力で実行できるようにするための重要な改善点です。
新しい環境設定 Modeling - Automatically restore modeling editors on startup は、Eclipse の再起動後に以前に開いていたモデリング・エディターを自動的にリストアするように設定できます。これは、Eclipse に組み込まれたエディタのリストアの拡張であり、モデリング・エディタはワークベンチ・エディタ・エリア で通常の Eclipse エディタの後に配置されます。
MinGw 12.2 コンパイラーは RTist で直接使用できるようになりました。このコンパイラー用のターゲット構成が提供され、以前の MinGw 8.1 用の構成を置き換えます。このコンパイラのためのプリビルドライブラリ(TargetRTS、Connexis、LibTCPServer)も利用可能です。
この作業の一環として、Connexisにおける64ビットアプリケーションのサポートも改善されました。
継承された複合状態に移動すると、継承されたステートマシンを開くか、状態を再定義してローカルのステートマシン図を作成するかを尋ねるプロンプトが表示されます。この選択は記憶されるため、何度もプロンプトが表示されることはありません。対応する環境設定は、RealTime Development - Diagrams - State Chart - When going inside inherited composite state(リアルタイム開発 - ダイアグラム - ステート・チャート - 継承された複合状態の内部に入るとき)です。
新機能の詳細については、Sprint Demo YouTube Playlist にあるビデオをご覧ください。