+3

Tự học kiểm thử tự động với Appium- Chạy kiểm thử tự động chức năng Login sử dụng Appium và lưu kết quả trong cơ sở dữ liệu (Phần 3)

Trong bài chia sẻ trước, mình đã hướng dẫn các bạn cài đặt các công cụ cần thiếu để tạo môi trường kiểm thử tự động với Appium. Trong bài viết này, mình sẽ chia sẻ cách thiết lập project kiểm thử với Appium:

1. Thiết lập cài đặt cho dự án kiểm thử

Để bắt đầu chạy testscript, cần thiết lập cài đặt liên kết giữa Appium server với thiết bị kiểm thử: Ta dùng hàm @setUp

Thiết lập cài đặt
Đoạn code trên bao gồm thiết lập:

  • deviceName: 781bcc41
  • platformName: Android
  • APP_PACKAGE: com.......
  • APP_ACTIVITY: com.framgia......
  • AppiumDriver: http://0.0.0.0:4723/wd/hub

2. Cài đặt testNG để chạy nhiều bộ kiểm thử trong 1 project

Trước đó, chúng ta đã cài đặt môi trường trong window để chạy project tự động appium, cài đặt SDK, sử dụng các công cụ như UIAutomator Viewer để xác định các thành phần trong ứng dụng android. Ngôn ngữ dùng để viết test script là Java vì vậy cần cài đặt cấu hình project trong Eclipse cho Appium.
Cài đặt testNG để thực hiện kiểm thử nhiều bộ testcase trong một ca kiểm thử . Truy cập Help/Eclipse Marketplace và tìm kiếm từ khóa “TestNG” rồi tiến hành cài đặt.
Đây là một framework mã nguồn mở tự động; trong đó NG của TestNG có nghĩa là Next Generation - Thế hệ tiếp theo. TestNG tương tự như JUnit nhưng mạnh hơn Junit, nhưng nó vẫn được lấy cảm hứng từ JUnit.
Ưu điểm chính của TestNG là:

  • Cho phép tạo ra các bản báo cáo HTML của tiến trình thực thi.
  • Có các chú thích giúp việc kiểm thử dễ dàng hơn.
  • Các trường hợp kiểm thử có thể được nhóm lại và được ưu tiên dễ dàng hơn.
  • Có thể kiểm thử song song.
  • Tạo ra các bản ghi.
  • Có thể tham số hóa dữ liệu.

3. Kiểm thử chức năng Login

Ở đây, mình sẽ hướng dẫn các bạn lấy testdata từ cơ sở dữ liệu để chạy testscript kiểm thử chức năng Login.

3.1 Tạo các trường hợp kiểm thử

  • Đăng nhập thành công
  • Đăng nhập không thành công
    • Email sai định dạng
    • Email rỗng
    • Email không tồn tại
    • Mật khẩu quá ngắn
    • Mật khẩu rỗng
    • Mật khẩu không chính xác
      Mỗi trường hợp kiểm thử sẽ có kết quả là hiển thị nội dung thông báo lỗi đúng theo mong đợi. Tuy nhiên, có 1 hạn chế của Appium là không thể lấy được nội dung message lỗi dạng popup, ví dụ như hình dưới
      Với những trường hợp này, chúng ta cần kiểm thử tự động theo một cách khác chứ không thể so sánh text trong message lỗi với text kết quả mong muốn trong cơ sở dữ liệu được.

      Dựa vào các testcase, ta tạo bảng testdata tương ứng trong cơ sở dữ liệu như sau:


      Tạo test script cho chức năng Login
  • Login không thành công: thực hiện kiểm thử các test_id từ 1 đến 22:
Select * FROM tc_result WHERE tc_id < 23;
while ( exist tc_id){
get tc_id, username, password, expected_result;
find element username;
input username;
find element password;
input password;
click button login;
find element text_error.gettext();
try{
text_error.gettext() == expected_result;
UPDATE actual_result = PASSED ;
UPDATE date, tester, attachment;
}cache{
update actual_result = FAILED;
UPDATE date, tester, attachment;
}
clear username & password;
}

Vòng lặp này thực hiện từ tc_id 01 đến tc_id 22

  • Login thành công
Select * FROM tc_result WHERE tc_id = 23;
get tc_id, username, password, expected_result;
find element username;
input username;
find element password;
input password;
click button login;
find element label.gettext();
try{
label.gettext() == expected_result;
UPDATE actual_result = PASSED ;
UPDATE date, tester, attachment;
}cache{
update actual_result = FAILED;
UPDATE date, tester, attachment;
}

Đây là hai đoạn mã giả code tạo testscript cho hai lớp tương đương của chức năng đăng nhập. Đoạn mã đăng nhập không thành công sẽ được thực hiện trước, đoạn mã đăng nhập thành công thực hiện sau để tiếp tục kiểm thử các chức năng khác bên trong ứng dụng.

3.2 Kết nối cơ sở dữ liệu

Để lấy dữ liệu kiểm thử ta cần kết nối cơ sở dữ liệu, và đây là đoạn mã kết nối cơ sở dữ liệu:

Ngoài ra, để update thời gian kiểm thử và lưu hình ảnh lỗi vào cơ sở dự liệu, chúng ta có đoạn mã sau:

3.3 Chạy test script cho chức năng Login lấy dữ liệu kiểm thử và in ra kết quả vào cơ sở dữ liệu

Sau khi kết nối cơ sở dữ liệu thành công, thực hiện lấy data trong bảng để kiểm thử chức năng Login.
Thay vì phải nhập liệu bằng tay từng trường hợp kiểm thử, với testscript trên, Appium sẽ chạy tự động lấy dữ liệu ở từng testcase nhập vào trường username và password tương ứng, rồi so sánh với kết quả mong đợi và in ra kết quả vào cơ sở dữ liệu. Trong quá trình chạy kiểm thử, chúng ta có thể làm những công việc khác và ghi nhận kết quả một cách tự động, chính xác.

  • Trường hợp đăng nhập không thành công

  • Trường hợp đăng nhập thành công

    Run file với testNG và đây là Appium server đang chạy test

    Sau khi chạy hết các bộ kiểm thử, chúng ta có được bảng cập nhật kết quả trong cơ sở dữ liệu như sau:

    Chức năng Login có 3 trường hợp lỗi và ảnh chụp màn hình được lưu trong thư mục screenshots của project kiểm thử. Dựa vào kết quả hiển thị trong cơ sở dữ liệu, chúng ta có thể biết được case nào đang lỗi và có attachment đính kèm, rất thuận tiện cho việc log bug.
    Vậy là mình đã chia sẻ xong phần kiểm thử tự động với Appium trong 1 chức năng đơn giản và dùng cơ sở dữ liệu để lưu kết quả test. Trong bài chia sẻ tiếp theo, mình sẽ hướng dẫn các bạn tạo nhiều nhức năng kiểm thử liên hoàn giúp kiểm tra luồng hoạt động trong integration testing hoặc system testing hiệu quả hơn. See you!

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí