- 基本情報
- セットアップと構成
- オートメーション プロジェクト
- 依存関係
- ワークフローの種類
- 制御フロー
- ファイルの比較
- オートメーションのベスト プラクティス
- ソース管理との連携
- デバッグ
- ログ
- 診断ツール
- ワークフロー アナライザー
- ワークフロー アナライザーについて
- ST-DBP-002 - 多数の引数
- ST-DBP-003 - 空の catch ブロック
- ST-DBP-007 - 複数のフローチャートレイヤー
- ST-DPB-010 - [ワークフロー] または [テスト ケース] の複数のインスタンス
- ST-DBP-020 - 未定義の出力プロパティ
- ST-DBP-021 - ハードコードされたタイムアウト
- ST-DBP-023 - 空のワークフロー
- ST-DBP-024 - 永続性アクティビティの確認
- ST-DBP-025 - 変数のシリアル化の前提条件
- ST-DBP-026 - [待機] アクティビティの使用
- ST-DBP-027 - Persistence のベスト プラクティス
- ST-DBP-028 - 引数のシリアル化の前提条件
- ST-USG-005 - ハードコードされたアクティビティ引数
- ST-USG-009 - 未使用の変数
- ST-USG-010 - 未使用の依存関係
- ST-USG-014 - パッケージの制限
- ST-USG-017 - パラメーター修飾子が無効です
- ST-USG-020 - 最小ログ メッセージ
- ST-USG-024 - 未使用で保存されたままの値
- ST-USG-025 - 保存した値の誤用
- ST-USG-026 - アクティビティの制限
- ST-USG-027 - 必要なパッケージ
- ST-USG-028 - ファイル テンプレートの呼び出しの制限
- ST-USG-027 - 必須のタグ
- ST-USG-034 - Automation Hub URL
- 変数
- 引数
- インポートされた名前空間
- コード化されたオートメーション
- トリガーベースの有人オートメーション
- レコーディング
- UI 要素
- セレクター
- オブジェクト リポジトリ
- データ スクレイピング
- 画像とテキストの自動化
- Citrix テクノロジの自動化
- RDP の自動化
- VMware Horizon の自動化
- Salesforce の操作の自動化
- SAP のオートメーション
- macOS の UI Automation
- ScreenScrapeJavaSupport ツール
- Webdriver プロトコル
- 拡張機能
- Test Suite - Studio
- トラブルシューティング
Studio ガイド
コード化されたテスト ケース
コード化されたテスト ケースでは、構造化された方法でアプリケーションの動作を自動化および検証します。ローコード テスト ケースに似ており、コードを使用した柔軟なオートメーションが可能です。
- Arrange - このフェーズでは、アプリケーションを準備します。
- Act - このフェーズは、特定のアクションを実行します。
- Assert - このフェーズでは、期待される結果が検証されます。
コード化されたテスト ケースでは、他のローコード ワークフローまたはテスト ケースを呼び出して、コードを再利用することもできます。この連携により、柔軟なテスト シナリオを作成できます。
コード化されたテスト ケースには実行テンプレートを適用することもできます。実行テンプレートの使用方法については、「実行テンプレート」をご覧ください。
コード化されたオートメーションは、名前空間、ヘルパー クラス、およびエントリ ポイントのメソッドを使用した構造化されたデザインを特徴とします。コード化されたオートメーションのフレームワークを使用すると、C# プログラミング言語を使用してオートメーションを記述できます。
コード化されたオートメーションの詳細な構造は、以下のセクションに記載されています。
コード化されたオートメーションを作成すると、Studio プロジェクトの名前を使用して名前空間が自動的に生成されます。たとえば、Studio プロジェクトの名前が「My project」である場合、コード化されたすべてのオートメーションの名前空間は「Myproject」になります。
また、Studio プロジェクトのフォルダー内にコード化されたオートメーションを作成した場合、名前空間はプロジェクトの名前とフォルダーの名前の組み合わせになります。たとえば、Studio プロジェクトの名前が「My project」でフォルダーの名前が「place」である場合、名前空間は「Myproject.place」になります。
CodedWorkflow
部分クラスを使用します。このクラスは、プロジェクトにインストールされているアクティビティ パッケージに基づいて、サービスに必要なインターフェイス (アクティビティ パッケージと同じ) へのアクセス権をオートメーションに付与します。
CodedWorkflow
を継承し、CodedAutomationExample : CodedWorkflow
型のリレーションシップを作成します。つまり、クラス CodedAutomationExample
は、クラス CodedWorkflow
から属性、メソッド、および機能を継承します。これにより、コード化されたオートメーションの基盤となるクラス CodedWorkflow
で定義されている機能にアクセスして利用できるため、オートメーションの動作が構築・カスタマイズしやすくなります。
CodedWorkflow
クラスは部分クラスとして宣言され、コード ソース ファイルで同じ部分クラス CodedWorkflow
を定義することで機能を拡張できます。これにより、新しいフィールドやメソッドを追加して、コード化されたオートメーションの動作をさらにカスタマイズできます。この方法を使用すると、コード化されたテスト ケースのためのBefore インターフェイスと After インターフェイスを実装できます。
CodedWorkflow
部分クラスは CodedWorkflowBase
クラスを継承します。
CodedWorkflowBase
クラスは、コード化されたオートメーションが継承する組み込み機能を保持します。このクラスには、ワークフロー インスタンスの管理、ランタイム アクセス、サービス コンテナーの処理、および環境コンテキストの構成を行うためのメソッドと特定のプロパティが含まれています。CodedWorkflowBase
クラスには、ユーザー自身がカスタマイズできるログ用メソッドも別途用意されています。
CodedWorkflowBase
クラスを表示します。
CodedWorkflowBase
メソッドの説明を確認してください。
メソッド | 説明 |
---|---|
ICodedWorkflowServices services 注:
Log メソッド、BuildClient メソッド、および RunWorkflow メソッドは、すぐに使用可能なスタンドアロンのメソッドとして使用するのではなく、services クラスとそれに対応するサービスを介して使用することをお勧めします。
| 次のような、コード化されたワークフローで利用可能なサービスへのアクセスを提供します。
|
serviceContainer(ICodedWorkflowServiceContainer) 注: これは
ICodedWorkflowServices services で置き換えられました。この構文を引き続き使用する場合は、新しい services.Container 構文を使用するように指示する警告が表示されます。
| 現在のコード化されたワークフローに固有の依存関係インジェクション コンテナーにアクセスできるようにします。このコンテナーは、サービス コンテナーと呼ばれ、コンテナー内に登録されているサービスのインスタンスを取得できるようにします。 |
GetRunningJobInformation() | コード化されたワークフローのコンテキスト内で現在実行中のジョブに関する情報を取得します。このメソッドは、ジョブのステータス、進行状況、パラメーター、およびタイムスタンプに関する情報を保持する executorRuntime オブジェクトの RunningJobInformation プロパティにアクセスします。
|
Log(string message, LogLevel level = LogLevel.Info, IDictionary<string, object> additionalLogFields = null) | 指定した属性を持つログ メッセージにログ フィールドを追加します。 |
RunWorkflow(string
workflowFilePath, IDictionary<string, object> inputArguments = null, TimeSpan? timeout = null, bool isolated = false,
InvokeTargetSession targetSession = InvokeTargetSession.Current) | 特定のワークフロー ランタイムのコンテキスト内でワークフローを実行するための構造を提供します。パラメーターの設定、潜在的な分離の処理、ワークフローの実行開始が可能です。返されるタスクは、実行されたワークフローの結果 (出力および入力/出力引数を含む) を示します。 |
RunWorkflowAsync(string
workflowFilePath, IDictionary<string, object> inputArguments = null, TimeSpan? timeout = null, bool isolated = false,
InvokeTargetSession targetSession = InvokeTargetSession.Current) | 特定のワークフロー ランタイムのコンテキスト内でワークフローを非同期的に実行するための構造を提供します。パラメーターの設定、潜在的な分離の処理、ワークフローの実行開始が可能です。返されるタスクは、実行されたワークフローの結果 (出力および入力/出力引数を含む) を示します。 |
DelayAsync(TimeSpan time) と DelayAsync(int delayMs) | 指定された時間、非同期的に実行を中断します。 |
Delay(TimeSpan time) と Delay(int delayMs) | 指定した期間、実行を中断します。 |
HttpClient BuildClient (string scope = "Orchestrator", bool force = true) | 指定されたスコープとアクセス トークンを使用して HTTP クライアントを構築します。 |
RegisterServices (ICodedWorkflowsServiceLocator serviceLocator) | コード化されたワークフローのサービス ロケーターにサービス (アクティビティ パッケージ) を登録します。これは、カスタム サービスを依存関係インジェクション コンテナーに挿入するときにオーバーライドできます。カスタム サービス (コード化されたアクティビティ パッケージ) の作成および使用方法については、こちらをご覧ください。 |
Execute()
であり、Workflow
または TestCase
のいずれかに属性付けされています。メソッドの名前は、Workflow
または TestCase
のいずれかに属性付けする限り変更できます。
Coded Workflow
クラスを継承する 1 つの Execute()
メソッド ([TestCase]
または [Workflow]
) のみです。
このメソッドでは、入力引数または出力引数を追加できます。これらの引数は、ローコード オートメーションの入力、出力、または入力/出力引数に相当します。コード化されたオートメーションでの引数の使用方法については、「入力引数と出力引数を使用する」のチュートリアルをご覧ください。
Execute()
メソッドによりエントリ ポイントとして簡単に識別されるようになります。