Bạn đã làm theo những chiến lược nào trong khi xây dựng khung Selenium từ đầu?

Trong bước tiếp theo, bạn sẽ muốn thiết lập các xác minh của mình - áp dụng logic giống như cách bạn cấu trúc dữ liệu của mình, nghĩa là chúng phải có thể chia sẻ được. Giả sử bạn đang kiểm tra chức năng của ứng dụng và các yêu cầu thay đổi trên một trường văn bản. Nếu bạn đang xác minh rằng trường văn bản chỉ chấp nhận các ký tự số chứ không phải văn bản, thì các bài kiểm tra của bạn sẽ cần được cập nhật

Trong những trường hợp như thế này, bạn không muốn gặp khó khăn khi cập nhật từng bài kiểm tra, đặc biệt nếu bạn vẫn đang thực hiện việc này theo cách thủ công. Tốt nhất là bạn cập nhật phần xác minh của trường văn bản của mình tại một điểm để bạn có thể có 50 bài kiểm tra kiểm tra một số tình huống khác nhau vẫn hoạt động. Bất kỳ xác minh giao diện người dùng nào bạn tích hợp vào hành động của mình đều phải là tùy chọn, để trong trường hợp trường chấp nhận đầu vào đúng cách và kiểm tra vượt qua, thì không cần phải xác minh hành động đó mỗi lần

Dữ liệu xác minh của bạn cũng nên được chia sẻ. Các tiện ích đầu vào khác nhau sẽ có thể chấp nhận các đối tượng dữ liệu được tạo trong các bước trước để bạn có thể xâu chuỗi các mục lại với nhau. Điều này cũng sẽ cho phép bạn thực hiện cập nhật trong một khu vực khi cần, sau đó có thể được phổ biến trên tất cả các khu vực khác nhau trong khung của bạn – một lần nữa nhấn mạnh tầm quan trọng của việc tách dữ liệu khung khỏi dữ liệu thử nghiệm thực tế

Trong phần hướng dẫn trước, chúng tôi đã giúp bạn làm quen với những kiến ​​thức cơ bản về Framework tự động hóa kiểm thử, các thành phần và loại của nó. Các khung được minh họa trong hướng dẫn trước là một vài trong số các khung phổ biến nhất được sử dụng bởi nhóm thử nghiệm

Chúng tôi đã thảo luận ngắn gọn về Khung dựa trên mô-đun, Khung dựa trên Kiến trúc thư viện, Khung dựa trên từ khóa, Khung hướng dữ liệu và Khung kết hợp. Có nhiều khuôn khổ khác cũng ở nơi này

Vui lòng lưu ý rằng chúng tôi sẽ áp dụng Khung tự động hóa thử nghiệm theo hướng dữ liệu cho phần còn lại của hướng dẫn

Trong hướng dẫn hiện tại của loạt bài này, chúng tôi sẽ giúp bạn làm quen với một khung mẫu, Excels sẽ lưu trữ dữ liệu thử nghiệm và các thao tác Excel của chúng. Đồng thời, chúng tôi sẽ tiến lên phía trước và giới thiệu các chiến lược và nguồn lực mới để hoàn thiện khuôn khổ của chúng tôi

Bạn đã làm theo những chiến lược nào trong khi xây dựng khung Selenium từ đầu?

Vì vậy, hãy học hỏi

  • Chiến lược tạo khung sử dụng một dự án mẫu
  • Truy cập dữ liệu thử nghiệm được lưu trữ trong nguồn dữ liệu ngoài

Tiếp theo, chúng tôi sẽ bắt đầu với mô tả về hệ thống phân cấp dự án mà chúng tôi sẽ tạo để tách biệt các thành phần dự án khác nhau

Tham khảo hình ảnh bên dưới để biết hệ thống phân cấp dự án được tạo cho dự án mẫu. Dự án java bên dưới có thể được tạo dễ dàng trong nhật thực theo cách chúng ta đã tạo các dự án trong các hướng dẫn trước đó

Bạn đã làm theo những chiến lược nào trong khi xây dựng khung Selenium từ đầu?

Bạn sẽ học được gì

  • Cấu trúc thư mục dự án Selenium – Hướng dẫn
  • Tạo dữ liệu thử nghiệm
  • Sự kết luận
  • đề xuất đọc

Cấu trúc thư mục dự án Selenium – Hướng dẫn

#1) src – Thư mục chứa tất cả các tập lệnh kiểm tra, thuốc generic, trình đọc và tiện ích. Tất cả những tài nguyên này không là gì ngoài các lớp java đơn giản. Trong thư mục nguồn (src), chúng tôi đã tạo một hệ thống phân cấp các thư mục

a) kiểm tra – Thư mục “kiểm tra” được cấu thành từ hai thành phần chính – bộ kiểm tra và các thư mục đại diện cho các mô-đun khác nhau của ứng dụng được kiểm tra. Do đó, mỗi thư mục này chứa các tập lệnh kiểm tra dành riêng cho mô-đun mà nó được liên kết. Testsuite là sự kết hợp hợp lý của nhiều tập lệnh kiểm tra. Do đó, người dùng có thể đánh dấu mục nhập của bất kỳ tập lệnh kiểm tra nào trong bộ kiểm tra mà họ muốn thực hiện trong các lần chạy tiếp theo

b) tiện ích – Thư mục “tiện ích” được cấu thành từ nhiều loại chung, hằng số, Trình đọc và lớp để triển khai các ngoại lệ do người dùng định nghĩa. Mỗi thư mục trong các tiện ích đều có ý nghĩa riêng

  • Trình đọc Excel – Một lớp chung và phổ biến đã được tạo để đọc dữ liệu thử nghiệm (tham số đầu vào và kết quả mong đợi) từ trang tính Excel
  • Môi trườngConstants – Thư mục là sự tích hợp của các lớp java lưu trữ các biến tĩnh tham chiếu đến các đường dẫn và các chi tiết môi trường khác. Những chi tiết này có thể là URL ứng dụng, URL tới Cơ sở dữ liệu, Thông tin xác thực cho Cơ sở dữ liệu và URL tới bất kỳ công cụ bên thứ ba nào đang được sử dụng. Các URL ứng dụng khác nhau có thể được đặt cho các môi trường khác nhau (dev, prod, test, master, Slave, v.v.)
  • DataSetters – Thư mục kết hợp các lớp triển khai getters và setters của dữ liệu thử nghiệm được tìm nạp từ Excels. Để tải nhiều bộ dữ liệu Kiểm tra, chúng tôi tạo ArrayLists
  • UserRoles – Thư mục chứa các lớp đảm nhiệm các tiêu chí truy cập dựa trên vai trò nếu có cho người dùng bản năng
  • FunctionLibrary – Thư mục được cấu thành từ các lớp chứa các hàm và phương thức có thể được chia sẻ và sử dụng giữa nhiều lớp. Rất thường xuyên, chúng ta phải thực hiện một số quy trình nhất định trước và sau khi thực hiện kiểm tra thực tế như đăng nhập vào ứng dụng, thiết lập môi trường, các hoạt động liên quan đến cuộn, thao tác dữ liệu, viết kết quả, các phương thức tạo điều kiện trước/sau cho các phương thức khác. Vì chúng tôi có xu hướng thực hiện các hoạt động này cho tất cả hoặc hầu hết kịch bản thử nghiệm. Do đó, luôn luôn khuyến nghị tạo một lớp riêng biệt cho các hoạt động như vậy thay vì mã hóa chúng lặp đi lặp lại trong mỗi tập lệnh kiểm tra
    • Phương thức tiền điều kiện
    • PostConditionalMethods

Thông thường, chúng ta phải thực hiện một số quy trình nhất định trước và sau khi thực hiện kiểm tra thực tế như đăng nhập vào ứng dụng, thiết lập môi trường, các hoạt động liên quan đến vai trò người dùng, thao tác dữ liệu, viết kết quả, các phương thức tạo điều kiện trước/sau cho các điều kiện khác. . Vì chúng tôi có xu hướng thực hiện các hoạt động này cho tất cả hoặc hầu hết tập lệnh kiểm tra, do đó, nên tạo một lớp riêng cho các hoạt động đó thay vì mã hóa chúng lặp đi lặp lại trong mỗi tập lệnh kiểm tra

Phương pháp chung

Giống như tiền điều kiện và hậu điều kiện, có thể có các phương thức và chức năng có thể được sử dụng bởi nhiều tập lệnh thử nghiệm. Vì vậy, các phương thức này được nhóm lại với nhau trong một lớp. Tập lệnh kiểm tra có thể truy cập các phương thức này bằng cách sử dụng đối tượng của lớp chung

#2) tệp excel – Các tệp excel được coi là nguồn dữ liệu/nhà cung cấp dữ liệu để thực thi tập lệnh thử nghiệm. Các tệp này lưu trữ dữ liệu thử nghiệm thành các cặp khóa-giá trị. Lưu ý rằng chúng tôi tạo một bảng excel riêng cho từng tập lệnh kiểm tra tôi. e. mỗi tập lệnh thử nghiệm có tệp dữ liệu thử nghiệm riêng. Tên của kịch bản thử nghiệm và các tệp dữ liệu thử nghiệm/bảng excel tương ứng đã được giữ nguyên cho phối cảnh truy xuất nguồn gốc. Kiểm tra định dạng dữ liệu thử nghiệm mẫu bên dưới

Định dạng dữ liệu thử nghiệm

Bạn đã làm theo những chiến lược nào trong khi xây dựng khung Selenium từ đầu?

Mỗi cột đại diện cho một khóa và mỗi hàng đại diện cho một dữ liệu/giá trị thử nghiệm. Chỉ định nhiều hàng để thực thi cùng một tập lệnh thử nghiệm với nhiều bộ dữ liệu

Đánh dấu rằng các định dạng dữ liệu thử nghiệm chỉ do người dùng xác định. Do đó, dựa trên yêu cầu của bạn, bạn có thể tùy chỉnh các tệp dữ liệu thử nghiệm

#3) thư viện – Thư mục hoạt động như một kho lưu trữ/nhân tạo cho tất cả các tệp jar, thư viện, trình điều khiển, v.v. cần thiết để xây dựng thành công môi trường thử nghiệm và thực thi các tập lệnh thử nghiệm. Tham khảo hình dưới đây để kiểm tra các thư viện chúng tôi sẽ sử dụng trong dự án của chúng tôi

Bạn đã làm theo những chiến lược nào trong khi xây dựng khung Selenium từ đầu?

#4) nhật ký – Thư mục chứa một. txt lưu trữ thông tin ghi nhật ký sau mỗi lần thực hiện

#5) tài liệu kiểm tra – Thư mục chứa dữ liệu kiểm tra thực tế cần được tải lên nếu có. Thư mục này sẽ xuất hiện khi chúng tôi gặp các tình huống thử nghiệm trong đó người dùng được yêu cầu tải lên các tệp, tài liệu, hình ảnh, báo cáo, v.v.

#6) xây dựng. xml – Tệp xml được “Ant Server” sử dụng để tự động hóa toàn bộ quá trình xây dựng

#7) log4j. xml – Tệp xml này được sử dụng bởi tiện ích dựa trên Java có tên là “Log4j” để tạo nhật ký thực thi

Ghi chú. Chúng tôi sẽ nghiên cứu thêm về nhật ký, ngoại lệ do người dùng xác định và Ant một cách chi tiết trong các hướng dẫn sắp tới. Vì vậy, đừng hoảng sợ nếu bạn bị nhầm lẫn giữa các khái niệm

Bây giờ, khi chúng ta tiếp tục, hãy để chúng ta hiểu hiện tượng khi chúng ta truy cập tệp excel và điền dữ liệu thử nghiệm vào tập lệnh thử nghiệm của mình

Để hiểu quy trình dễ dàng hơn, chúng tôi sẽ chia quy trình thành các bước sau

Tạo dữ liệu thử nghiệm

Bước 1 . Bước đầu tiên và quan trọng nhất là tạo dữ liệu thử nghiệm mà chúng tôi sẽ thực thi các tập lệnh thử nghiệm. Xem xét định dạng dữ liệu thử nghiệm đã nói ở trên, chúng ta hãy tạo một tệp excel có tên là “TestScript1”. Cung cấp các giá trị trong các phần tử.

Bạn đã làm theo những chiến lược nào trong khi xây dựng khung Selenium từ đầu?

Bước 2 . Bước tiếp theo là tải xuống API/Thư viện dựa trên java tiêu chuẩn có tên là “Thư viện Java excel” (jxl) để có thể truy cập các phương thức chung đã được tạo cho Thao tác Excel.

Bước 3 . Tạo một lớp trình đọc excel chung có tên là “ExcelReader. Java”. Sao chép mã dưới đây trong ExcelReader. java.

package Utilities;
import java.io.File;
import java.io.IOException;
import java.util.Hashtable;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

/**
 * This is a utility class created to read the excel test data file before performing the test steps.
 * This class loads the excel file and
 * reads its column entries.
 *
 */

public class ExcelReader {
                /**
                 * The worksheet to read in Excel file
                 */

                public static Sheet wrksheet;
                /**
                 * The Excel file to read
                 */

                public static Workbook wrkbook = null;
                /**
                 * Store the column data
                 */

                public static Hashtable<String, Integer> dict = new Hashtable<String, Integer>();
                /**
                 * Create a Constructor
                 *
                 * @param ExcelSheetPath
                 * @throws BiffException
                 * @throws WeblivException
                 */

                public ExcelReader(String ExcelSheetPath) throws IOException, BiffException {

                            // Initialize
                                try {
                                               wrkbook = Workbook.getWorkbook(new File(ExcelSheetPath));
                                               wrksheet = wrkbook.getSheet("Sheet1");
                                } catch (IOException e) {
                                                throw new IOException();
                                }
                }
                /**
                 * Returns the Number of Rows
                 *
                 * @return Rows
                 */

                public static int RowCount() {
                                return wrksheet.getRows();
                }
                /**
                 * Returns the Cell value by taking row and Column values as argument
                 *
                 * @param column
                 * @param row
                 * @return Cell contents
                 */

                public static String ReadCell(int column, int row) {
                                return wrksheet.getCell(column, row).getContents();
                }
                /**
                * Create Column Dictionary to hold all the Column Names
                 */
                public static void ColumnDictionary() {
                                // Iterate through all the columns in the Excel sheet and store the
                                // value in Hashtable
                                for (int col = 0; col < wrksheet.getColumns(); col++) {
                                                dict.put(ReadCell(col, 0), col);
                                }
                }
                /**
                 * Read Column Names
                 *
                 * @param colName
                 * @return value
                 */

                public static int GetCell(String colName) {
                                try {
                                                int value;
                                                value = ((Integer) dict.get(colName)).intValue();
                                                return value;
                                } catch (NullPointerException e) {
                                                return (0);
                                }
                }
}

Bước 4 . Tạo một lớp chung – “CommonMethods. Java”. Tạo một phương thức phổ biến trong lớp để đọc các ô từ trang tính excel bằng cách sử dụng các phương thức được triển khai trong ExcelReader. java.

/**
* Read the test data from excel file
*
* @param data The TestData data object
*/

public void readExcelData (TestData data) {
       ArrayList<String> browser = new ArrayList<String>();
       ArrayList<String> username = new ArrayList<String>();
       ArrayList<String> password = new ArrayList<String>();
       ArrayList<String> element1 = new ArrayList<String>();
       ArrayList<String> element2 = new ArrayList<String>();
       ArrayList<String> element3 = new ArrayList<String>();

       // Get the data from excel file
       for (int rowCnt = 1; rowCnt < ExcelReader.RowCount(); rowCnt++) {
       browser.add(ExcelReader.ReadCell(ExcelReader.GetCell("Browser"), rowCnt));
       username.add(ExcelReader.ReadCell(ExcelReader.GetCell("User ID"), rowCnt));
                     password.add(ExcelReader.ReadCell(ExcelReader.GetCell("Password"), rowCnt));
                     element1.add(ExcelReader.ReadCell(ExcelReader.GetCell("Element1"), rowCnt));
                     element2.add(ExcelReader.ReadCell(ExcelReader.GetCell("Element2"), rowCnt));
       element3.add(ExcelReader.ReadCell(ExcelReader.GetCell("Element3"), rowCnt));
       }
       data.setBrowser(browser);
       data.setLoginUser(username);
       data.setPassword(password);
       data.setElement1(element1);
       data.setElement2(element2);
       data.setElement3(element3);
       }

Bước 5 . Tạo một lớp java mới có tên là “TestData. Java”. Lớp này sẽ hoạt động như một getter và setter cho dữ liệu excel. Sao chép và dán đoạn mã sau vào TestData. lớp java.

package Utilities.dataSetters;
import java.util.ArrayList;
public class TestData {
       private ArrayList<String> loginUser = null;
       private ArrayList<String> password = null;
       private ArrayList<String> browser = null;
       private ArrayList<String> element1 = null;
       private ArrayList<String> element2 = null;
       private ArrayList<String> element3 = null;
       /**
        * @return loginUser
        */
       public ArrayList<String> getLoginUser() {
              return loginUser;
       }
       /**
        * @param loginUser
        */
       public void setLoginUser(ArrayList<String> loginUser) {
              this.loginUser = loginUser;
       }
       /**
        * @return password
        */
       public ArrayList<String> getPassword() {
              return password;
       }
       /**
        * @param password
        */
       public void setPassword(ArrayList<String> password) {
              this.password = password;
       }
       /**
        * @return browser
        */
       public ArrayList<String> getBrowser() {
              return browser;
       }
       /**
        * @param browser
        */
       public void setBrowser(ArrayList<String> browser) {
              this.browser = browser;
       }
       /**
        * @return element1
        */
       public ArrayList<String> getElement1() {
              return element1;
       }
       /**
        * @param element1
       */
       public void setElement1(ArrayList<String> element1) {
              this.element1 = element1;
       }     
       /**
        * @return element2
        */
       public ArrayList<String> getElement2() {
              return element2;
       }
       /**
        * @param element2
        */
       public void setElement2(ArrayList<String> element2) {
              this.element2 = element2;
      }
       /**
        * @return element3
        */
       public ArrayList<String> getElement3() {
              return element3;
       }
       /**
        * @param element3
       */
       public void setElement3(ArrayList<String> element3) {
              this.element3 = element3;
       }     
}

Bước 6 . Bước tiếp theo là tạo các phiên bản của “TestData. java” và “CommonMethods. java” các lớp java trong tập lệnh thử nghiệm để truy cập và điền dữ liệu thử nghiệm. Tham khảo đoạn mã dưới đây để khởi tạo đối tượng, đọc dữ liệu excel và điền các giá trị bất cứ nơi nào được yêu cầu.

// Create Objects
public ExcelReader excelReaderObj;
CommonMethods commonMethodobj = new CommonMethods();
TestData td = new TestData();

// Load the excel file for testing
excelReaderObj = new ExcelReader(Path of the excel);

// Load the Excel Sheet Col in to Dictionary for use in test cases
excelReaderObj.ColumnDictionary();

// Get the data from excel file
commonMethodobj.readExcelData (td);

// Populate the username
driver.findElement(By.id("idofElement")).sendKeys(data.getLoginUser().get(0));

Do đó, sử dụng thể hiện của testData. lớp java kết hợp với getters, bất kỳ giá trị dữ liệu thử nghiệm nào cũng có thể được điền trong tập lệnh

Sự kết luận

Hướng dẫn chủ yếu xoay quanh các khái niệm như Tạo khung và Truy cập dữ liệu thử nghiệm từ excel. Chúng tôi đã giúp bạn làm quen với chiến lược tạo Framework bằng một dự án mẫu. Chúng tôi đã trình bày ngắn gọn về các thành phần và khía cạnh khác nhau trong khuôn khổ của chúng tôi

Chiến lược dự án của bạn trong Selenium là gì?

Các phương pháp hay nhất để tự động hóa Selenium
Sử dụng đúng bộ định vị
Triển khai mô hình đối tượng trang
Chạy thử nghiệm Selenium trên thiết bị thực
Chụp ảnh màn hình khi Kiểm tra không thành công
Sử dụng Ma trận tương thích trình duyệt
Kết hợp các lệnh chờ
Lập kế hoạch và thiết kế các trường hợp thử nghiệm trước

Phải viết một framework tự động hóa Bước đầu tiên của bạn là gì Bạn sẽ xây dựng một framework như thế nào?

7 bước để xây dựng khung kiểm tra tự động giao diện người dùng thành công .
Cấu trúc, tổ chức và thiết lập kiểm soát nguồn. .
Làm quen với ứng dụng. .
Xác định môi trường thử nghiệm của bạn và thu thập dữ liệu. .
Thiết lập dự án thử nghiệm khói. .
Tạo tiện ích cho hành động trên màn hình. .
Xây dựng và quản lý xác minh

Một người nên xem xét những nguyên tắc nào trong khi phát triển khung tự động hóa để làm cho nó có thể sử dụng được trên nhiều tính năng và sản phẩm?

Những tính năng nào nên được đưa vào khuôn khổ? .
Xử lý các tập lệnh được thực thi và các tham số đầu vào riêng biệt
Thư viện để chứa tất cả các thành phần có thể tái sử dụng
Báo cáo kết quả
Tích hợp với các công cụ của bên thứ ba
Kích hoạt tự động không có sự can thiệp của con người i. e. tự thực hiện và tự làm sạch

Bạn có thể nghĩ ra những phương pháp hay nhất nào để cải thiện độ mạnh của thử nghiệm Selenium?

6 Phương pháp hay nhất cho Selenium .
Sử dụng mẫu PageObjects. Đối tượng trang là một Mẫu thiết kế đã trở nên phổ biến trong tự động hóa thử nghiệm để tăng cường bảo trì thử nghiệm và giảm trùng lặp mã. .
Hãy mạnh mẽ và di động
tránh chủ đề. ngủ thích Chờ đợi. Thay vì ngủ. .
Sử dụng jre 1. 6. .
Cách đóng trang bắt đầu Firebug. .
IE không hoạt động