Chào các bạn, hôm nay mình xin gửi đến các bạn bài viết kiểm thử chức năng mua hàng của website bán hàng bằng KarateUI. Bây giờ chúng ta cùng bắt đầu nhé.
Việc đầu tiên mình cần làm đó là tạo sẵn một project Maven, có sẵn tệp riêng bên trong project để chứa các file liên quan của quá trình thử nghiệm.
Tiếp theo mình tiến hành tạo Background thiết lập môi trường Test cho file TestEcomerce.feature.
Bên dưới Screnario mình viết lệnh để chuyển đến WebSite bán hàng mình cần Test.
Sau khi làm các thao tác để chuyển được đến WebSite mình cần Test, thì bây giờ mình sẽ tiến hành truy cập vào WebSite để lấy các phần tử cần thiết cho quá trình Test.
Tiếp theo để mua được sản phẩm thì đầu tiên các bạn sẽ nhấn vào tên sản phẩm đó để trang web hiển thị thông tin chi tiết của sản phẩm. Bây giờ mình sẽ tiến hành lấy địa chỉ Xpath của sản phẩm mà mình muốn Test.
Vậy nên ở bên dưới câu lệnh Given mình sẽ viết một câu lệnh với thao tác click như sau When click(‘Địa chỉ Xpath của sản phẩm mình vừa lấy được’).
Sau khi vào được thông tin chi tiết của sản phẩm, mình lại tiến hành lấy địa chỉ Xpath của các đối tượng cần thiết.
Tại đây mình sẽ lấy ba đối tượng là dấu cộng số lượng, dấu trừ số lượng và Button “THÊM VÀO GIỎ HÀNG”.
Sau khi tiến hành lấy địa chỉ Xpath của các đối tượng, mình thu được kết quả như sau:
- Button “+”: //body/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]/form[1]/div[1]/a[1]
- Button “-”: //body/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]/form[1]/div[1]/a[2]
- Button “THÊM VÀO GIỎ HÀNG”: //button[@id=’button-cart’]
Tiếp theo mình sẽ viết câu lệnh để tương tác với các đối tượng mình vừa lấy.
Sau khi lấy được các đối tượng cần thiết ở trang thông tin sản phẩm, thì bây giờ mình sẽ tiến qua phần giỏ hàng để lấy các phần tử cần thiết.
Tại đây mình sẽ lấy 2 đối tượng cần thiết là Input số lượng và Buton cập nhật số lượng.
Sau khi tiến hành lấy địa chỉ Xpath của các đối tượng, mình thu được kết quả như sau:
- Input số lượng: //input[@id=’quantity_800′]
- Button cập nhật số lượng: //tbody/tr[1]/td[3]/div[1]/span[1]/button[1]
Tiếp theo mình sẽ viết câu lệnh tương tác với các đối tượng mình vừa lấy ở giỏ hàng. Ở đây trước khi sửa dữ liệu nhập vào Input số lượng của khu vực giỏ hàng thì mình sẽ clear dữ liệu bên trong trước qua câu lệnh When clear().
Sau khi mình hoàn tất các thao tác để thêm một sản phẩm vào giỏ thì tiếp theo mình sẽ làm thêm một thao tác phụ nữa để quay lại trang chủ của website. Bây giờ mình sẽ lấy địa chỉ Xpath của Button “Tiếp tục mua hàng”.
Mình viết câu lệnh tương tác với Button “Tiếp tục mua hàng”.
Vậy là mình đã hoàn thành quá trình tự động thêm một sản phẩm vào giỏ hàng tiếp theo mình sẽ chạy Test và kiểm tra kết quả.
Test chạy thành công và không có lỗi.
Đó là mình đã hoàn thành xong bước tự động thêm sản phẩm vào giỏ thì bây giờ mình sẽ tùy biến lại các câu lệnh để thêm cùng lúc nhiều sản phẩm.Đầu tiên để thêm được nhiều sản phẩm mình cần tạo một hàm với tham số là một object tên là data. Mình sẽ tạo hàm này bên dưới câu lệnh Given và nội dung bên trong hàm là quá trình mình thêm sản phẩm vào giỏ hàng từ đầu đến giờ mình làm được.
Tiếp theo mình tạo một file data.json.
Và mình thiết kế dữ liệu của file data.json như sau. Bên trong dữ liệu chứa một thuộc tính tên là product và có giá trị là một mảng, bên trong mảng chứa ba đối tượng dữ liệu khác dạng object và bên trong mỗi object chứa các thuộc tính như xpathname, inputamount, amountdata, buttonupdate. Đây là những thuộc tính chứa địa chỉ xpath các phần tử của từng sản phẩm mà mình muốn thêm vào giỏ trong quá trình Test, các bạn xem hình bên dưới để hiểu rõ hơn nhé.
Mình tiến hành đọc dữ liệu từ Background.
Sau đó mình tạo một biến bên trong function chứa data.product(mảng dữ liệu) và tạo vòng for bao ngoài quá trình thêm sản phẩm như sau.
Tiếp đó mình bắt đầu sửa tham số của các hàm thao tác. Ở đây các thông số chung mình sẽ không sửa nhé.
Dưới cuối vòng for mình cho hai câu lệnh if else nếu là sản phẩm trong mảng thì mình sẽ tiến hành điền thông tin vào form và nhấn Button hoàn tất mua hàng còn nếu không mình sẽ nhấn vào Button tiếp tục mua hàng. Muốn làm được điều đó thì điều đầu tiên mình cần làm đó là lấy địa chỉ Xpath các đối tượng ở form và Button hoàn tất đặt hàng và bây giờ mình sẽ tiến hành lấy địa chỉ Xpath từng đối tượng.
Sau khi lấy địa chỉ Xpath từng đối tượng mình thu được kết quả như sau:
- Xpath EditText “Họ và tên”: //tbody/tr[1]/td[2]/input[1]
- Xpath EditText “SĐT”: //tbody/tr[2]/td[2]/input[1]
- Xpath EditText “Email”: //tbody/tr[3]/td[2]/input[1]
- Xpath EditText “Địa chỉ”: //tbody/tr[4]/td[2]/input[1]
- Xpath EditText “Ghi chú”: //tbody/tr[5]/td[2]/textarea[1]
- Xpath Button “Hoàn tất đặt hàng”: //button[contains(text(),’Hoàn tất đặt hàng’)]
Sau khi lấy được địa chỉ Xpath mình qua bên file data.json tạo thêm một trường dữ liệu nữa tên là user.
Sau khi tạo dữ liệu user mình tiến hành viết câu lệnh để tương tác.
Đây là toàn bộ code mà mình làm được.
Và đây là file dữ liệu data.json.
Cuối cùng minh nhấn Run As để chạy Test.
Mình kiểm tra lại kết quả sau khi chạy Test.
Đó là toàn bộ bài viết kiểm thử chức năng mua hàng của website bán hàng bằng KarateUI. Nếu có bất kì thắc mắc nào, các bạn có thể để lại phần bình luận phía bên dưới bài viết mình sẽ giải đáp. Cảm ơn các bạn đã dành thời gian đọc bài chia sẻ của mình.
Chúc các bạn thành công.
Nam Ngọc – PLT SOLUTIONS