LoginSignup
0
0

【UiPath】コード化されたテストケースでテスト自動化(ブラウザ)を試す

Posted at

初めに

2023.10 にて正式リリースとなったコード化されテストケースを使ってテスト自動化してみようと思います。

テストケース概要

1.UiPath Orchestrator に登録されたテストキューアイテム(ローン申請データ)を取得する
2.取得したキューデータに対して、年齢データが18以下のものを省く
3.UiBank(自動化練習用ウェブサイト)を開く(https://uibank.uipath.com/loans/apply)
4.ひたすら申請項目を入力し、申請ボタンを押下
5.承認された金利を画面から取得する
6.取得した金利に対して、判定を行う
  金利=8%の場合、 結果はOK
 上記以外の場合、結果はNG

実際に作ってみたもの

c# LoanApplication.cs
namespace _2024_TestCase
{
    //ローン申請データをクラス化
    public class LoanApplication
    {
        public string age {get;set;}
		public string yearlyIncome {get;set;}
		public string emailAddress {get;set;}
		public string loanAmount {get;set;}
		public string loanTerm {get;set;}
		public string loanRate {get;set;}
		public string loanID {get;set;}
    }
}
c# UiBankLoanApplication.cs


namespace _2024_TestCase
{
    public class UiBankLoanApplication : CodedWorkflow
    {

        LoanApplication newLoan = new LoanApplication();

        //テストケースはここから
        [TestCase]
        public void Execute(System.Collections.Generic.IDictionary<System.String, System.Object> UiBankLoanApplication_TestDataQueue)
        {         
            
            var queueitem = new Dictionary<string,object>();
            
            for(int i = 0; i < 5; i++) {
                // テストキューからテストデータを取得する 
                // キューの名前:UiBankLoanApplication_TestDataQueue
                // キューの格納先フォルダ名:Shared
                queueitem = testing.GetTestDataQueueItem("UiBankLoanApplication_TestDataQueue","Shared");
                
                // 年齢データが18以下のものを省く
                if (Convert.ToInt32(queueitem["Age"].ToString())>18 )
                {
                    // Initialize loan application variables
                    initializeLoanClass(queueitem["Age"].ToString(),queueitem["Email ID"].ToString(),queueitem["Loan Amount"].ToString(),queueitem["Loan Term"].ToString(),queueitem["Yearly Income"].ToString());
                    
                    // UiBankを開き、ローン申請画面に遷移
                    NavigateToLoanApplicationScreen();
                    
                    // 関数ApplyforLoanを呼び出し、ローン申請処理を行い、金利データを取得する
                    newLoan.loanRate = ApplyForLoan();
                    
                    //金利は8%であるかを確認
                    testing.VerifyExpression(newLoan.loanRate.Contains("8"));
                }
                
            }
        }

        //Loanクラスを初期化
        public void initializeLoanClass(string age, string emailAddress, string loanAmount, string loanTerm, string yearlyIncome)
        {
            newLoan.age = age;
            newLoan.emailAddress = emailAddress;
            newLoan.loanAmount = loanAmount;
            newLoan.loanTerm = loanTerm;
            newLoan.yearlyIncome = yearlyIncome;
        }

        //UiBankを開き、UI操作でローン申請画面に繊維
        public void NavigateToLoanApplicationScreen()
        {
            //オブジェクトリポジトリを利用します。
            var homeScreen = uiAutomation.Open(Descriptors.Chrome__UiBank_app.Chrome__UiBank);
            
            homeScreen.Click(Descriptors.Chrome__UiBank_app.Chrome__UiBank.Products);
            homeScreen.Click(Descriptors.Chrome__UiBank_app.Chrome__UiBank.Loans);
            homeScreen.Click("Apply For A Loan");
        }


        //金利申請
        public string ApplyForLoan()
        {

            string loanRate = null;
            
            //オブジェクトリポジトリを利用します。
            var loanScreen = uiAutomation.Attach(Descriptors.Chrome__UiBank_app.Chrome__UiBank);
            
            //文字入力で申請項目を埋める
            loanScreen.TypeInto(Descriptors.Chrome__UiBank_app.Chrome__UiBank.Email_Address,newLoan.emailAddress);
            loanScreen.TypeInto(Descriptors.Chrome__UiBank_app.Chrome__UiBank.Loan_Amount_Requested,newLoan.loanAmount);
            loanScreen.TypeInto(Descriptors.Chrome__UiBank_app.Chrome__UiBank.Loan_Term,newLoan.loanTerm);
            loanScreen.TypeInto(Descriptors.Chrome__UiBank_app.Chrome__UiBank.Current_Yearly,newLoan.yearlyIncome);
            loanScreen.TypeInto(Descriptors.Chrome__UiBank_app.Chrome__UiBank.Age,newLoan.age);
            
            // Submit Applicationボタンをクリック
            ClickOptions co = new ClickOptions();
            // クリック操作はシミュレートで行う
            co.InteractionMode = NChildInteractionMode.Simulate;
            loanScreen.Click(Descriptors.Chrome__UiBank_app.Chrome__UiBank.Submit_Loan_Application,co);loanScreen.Click(Descriptors.Chrome__UiBank_app.Chrome__UiBank.Submit_Loan_Application);
            
            //申請結果画面にアタッチ
            var LoanApprovedScreen = uiAutomation.Attach(Descriptors.Chrome__UiBank_app.Loan_Approved_or_Denied);
            
            //申請結果金利を返却
            return LoanApprovedScreen.GetText(Descriptors.Chrome__UiBank_app.Loan_Approved_or_Denied.Loan_Rate);
            
            
            
        }

    }
}


感想

・ オブジェクトリポジトリとの相性が抜群(UI操作簡単にコード化できる)
・ 開発作業効率ですが、アクティビティでテストケース作成することと比べたら、それほど差はない。(アクティビティの利用に慣れていることが大きいでしょうね)
・ UI操作の調整(シミュレート、Delayなど)を行う場合、少しなれが必要。
・ 成果物が.csファイルとなりましたので、差分管理がしやすくなる想定。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0