Chào các bạn đã đến với chủ đề tiếp theo của mình. Hôm nay, mình sẽ tiếp tục giới thiệu về ReportPortal.io và làm thế nào để integrate nó Katalon Studio.
Ở chủ đề này, mình sẽ hưỡng dẫn những nội dung như sau:
Nội dung
1. ReportPoral.io là gì?
ReportPortal.io là một ứng dụng hỗ trợ phân tích kết quả khi chạy Test Automation và áp dụng nền tảng AI. Với các bạn đang làm Test Automation thì thường sẽ gặp khó khăn trong việc quản lý kết quả sau mỗi lần chạy automation cũng như phân tích kết quả đó. ReportPortal.io ra đời như là một giải pháp để các bạn có thể cảm thấy cuộc sống dễ dàng hơn với những công việc trên. Ngoài ra thì nó còn có kèm theo những tính năng rất hữu ích mà mình sẽ đề cập trong bài viết này
2. Các tính năng cơ bản
- Hiển thị kết quả khi chạy test automation theo thời gian thực. Điều này có nghĩa là khi bạn chạy xong test case nào, bạn có thể xem kết quả của test case đó ngay lập tức
- Quản lý mọi kết quả của những lần chạy test automation và hỗ trợ những thông số để đánh giá chất lượng test script. Ví dụ như thời gian chạy trung bình của 1 test suites, số lượng bug phát hiện được …
- Sử dụng AI để phân tích kết quả sau khi chạy của 1 test script. Bạn nào làm automation nhiều thường sẽ gặp tình trạng chạy 1 bộ test suite và sau đó ngồi phân tích từng test script bị failed để coi thử rằng liệu nó có bug ở application hay là do những nguyên nhân khác khiến test script bị failed và rồi sau đó phải chạy lại những script đó lần nữa. Để giải quyết vấn đề này, ReportPortal.io đã sử dụng AI để tự động phân tích kết quả sau mỗi lần chạy test suite dùm các bạn, nhờ vậy các bạn có thể giảm thiểu thời gian phân tích kết quả đi khá là nhiều, giờ đây thì các bạn sẽ dễ dàng biết được những script nào bị failed là do lỗi môi trường, test script không còn tương thích với version hiện tại của hệ thống.
3. Hướng dẫn cài đặt
Hiện tại thì ReportPortal đã có sẵn file docker-compose.yml, cho nên các bạn cứ theo hướng dẫn bài viết ở trang chủ để có thể cài đặt ReportPortal.io trên máy của mình
4. Một vài khái niệm về ReportPortal.io
LAUNCH
- Như đã định nghĩa trong tài liệu của ReportPortal.io, launch là một đối tượng lưu dữ liệu của một lần thực thi.
- Trong Katalon Studio, khi bạn thực thi (nói trắng ra là bấm nút Run trên IDE ấy) một test suite thì một launch được tạo trên ReportPortal, khi bạn chạy nhiều test suite cùng lúc (dùng tính năng suite collection trong Katalon) thì tương đương nhiều launch sẽ được tạo.
- Trên thực tế, một launch được thiết kế để chứa nhiều suite nhưng do cơ chế hoạt động của Katalon khá vi diệu nên một launch sẽ tương ứng với một suite.
TEST ITEM
- Một launch tập họp nhiều test item, một test item có thể là một test case, test step hoặc test suite, v.v… nó là gì tùy bạn quyết định. Bản thân một test item có thể chứa nhiều test item bên trong nó, khi đó các test item ở bên trong được gọi là test item con (child test item) và test item chứa các con là test item cha (parent test item).
- Ở trên một launch đã tương ứng với một suite, nên theo tính chất bắc cầu thì các test case của một suite được xem là test item của launch và bắc thêm cái cầu nữa thì các test step của test case sẽ là child của test item đó.
ISSUE
- Trong quá trình thực thi, việc test script bị fail là điều không thể tránh khỏi (cuộc sống mà!), lúc đó mình sẽ ra lệnh ReportPortal đánh các test script đó một “thẹo” (nhiều test step bị fail tương ứng với nhiều thẹo). Mặc định, ReportPortal có sẵn 5 loại thẹo (nhưng bạn có thể chế thêm) :
- To Investigate : đây là những lỗi lạ xảy ra trong quá trình thực thi và đang đợi bạn chẩn đoán.
- Product bug : lỗi của app (thấy là submit liền tay).
- Automation bug : lỗi của automation scripts, ví dụ : scripts cũ như chưa từng được cũ.
- System issue : lỗi hệ thống, ví dụ: bị crash, mạng siêu chậm.
- No defect : đây là những lỗi xạo, ban đầu báo lỗi nhưng sau quá trình chẩn đoán pháp y các kiểu thì nó không phải là lỗi.
- Mình muốn giới thiệu sơ lược về mấy loại này để khi gặp mấy hình tròn xanh đỏ vàng trên ReportPortal các bạn biết nó là gì.
5. Tích hợp ReportPortal.io vào Katalon Studio
Đọc tới đây thì chắc các bạn cũng hình dung được ReportPortal.io nó vi diệu như thế nào rồi, giờ tới lúc mình cùng tìm hiểu xem làm sao để “xài” nó, tức làm thế nào để tích hợp nó vào các test framework hoặc các công cụ kiểm thử tự động (automation testing tools).
5.1. Cách thực hiện việc integrate
- Để tạo một đối tượng launch hay test item, các bạn phải gửi 2 request lên server ReportPortal : một request để khởi tạo (start) đối tượng và một request để dừng (finish) đối tượng đó. Lý do vì sao phải gửi 2 request này là do ReportPortal thích thế <(“).
- Trong suốt quá trình một đối tượng được tạo cho đến khi nó dừng, bạn hoàn toàn có quyền ra lệnh ReportPortal làm bất cứ gì với đối tượng bằng cách gửi các request tương ứng cho các tác vụ đó (đánh thẹo cho cái đối tượng đang chạy chẳng hạn). Nhưng một khi đối tượng đã dừng (request finish đã được gửi), bạn không còn quyền tác động đến nó nữa.
- Túm lại, luồng hiện thực của chúng ta sẽ như sau :
- Gửi request tạo launch (Katalon Suites)
- Gửi request tạo test item cha (Katalon Test Cases)
- Gửi request tạo test item con (Katalon Test Steps)
- Gửi request dừng test item con.
- Gửi request dừng test item cha.
- Gửi request dừng launch.
- Ở các bước gửi request finish các test item (4,5), các request đó phải kèm theo trạng thái (status) của test script (Pass, Fail, v.v..). Trong ReportPortal, có 6 loại trạng thái : PASSED, FAILED, SKIPPED, STOPPED, CANCELLED, INTERRUPTED nhưng trong Katalon chỉ có 3 loại : PASSED, FAILED, ERROR. Do đó ta phải xào nấu nhào nặn để cả Katalon và ReportPortal có chung tiếng nói :
- Các bạn theo đường link này để vào xem danh sách các API của ReportPortal để ra lệnh cho nó: https:// [server ReportPortal của bạn]/ui/#api
5.2. Tạo Listener
- Ở bước này, các bạn cần tạo một class (nằm trong thư mục Keyword) hiện thực ExecutionListenerEventHandler interface (cái này của Katalon), sau đó nhét code của bạn vào phương thức handleListenerEvent của interface đó.
@Override
public void handleListenerEvent(ExecutionListenerEvent event, Object[] testParam) {
// TODO : your code here
}
- Trong đó, event tương đương các giai đoạn của quá trình thực thi, và tùy theo giai đoạn thì tham số testParam nhận vào các giá trị khác nhau (đại loại tham số này có thể giúp bạn lấy tên test script, tên step, v.v…) :
switch (event) {
case ExecutionListenerEvent.AFTER_TEST_SUITE:
endSuite()
break
case ExecutionListenerEvent.BEFORE_TEST_CASE:
startTest()
break
case ExecutionListenerEvent.AFTER_TEST_CASE:
endTest(status)
break
case ExecutionListenerEvent.BEFORE_TEST_STEP:
startStep()
break
case ExecutionListenerEvent.AFTER_TEST_STEP:
endStep(status)
break
default:
break
}
5.3 Sử dụng Listener
- Chúc mừng bạn, tới đây thì bạn đã có đầy đủ điều kiện để xài ReportPortal với Katalon rồi, công việc còn lại là tìm chỗ để nhét listener vào thôi, nhét đúng chỗ là ReportPortal auto chạy.
- Bước này đơn giản lắm, bạn mở suite của Katalon lên ở script mode của suite đó và nhét vào câu lệnh này (nhớ thay cái MyListener bằng tên Listener của mấy bạn nha).
@SetUp(skipped = false)
def setUp() {
ExecutionEventManager.getInstance().addListenerEventHandle(new MyListener())
}
- Tận hưởng thành quả nào !!! Dưới đây là một vài hình ảnh minh họa sau khi tích hợp ReportPortal vào Katalon.
6. Tham khảo code mẫu
Các bạn có thể tham khảo code mẫu ở link này, giải nén và copy 2 thư mục bên trong vào project Katalon của bạn. Các bước sử dụng code mẫu như sau :
- Thay giá trị của các biến trong ReportPortal profile bằng thông tin trên ReportPortal server của bạn :
- RP_HOST : API host của ReportPortal. Ex : http://127.0.0.1:8080/api/v1
- RP_TOKEN : ‘Bearer’ + giá trị UUID (bạn có thể tìm thấy giá trị này trong user profile của bạn). Ex : Bearer f974e146-5f90-4912-9332-5b77d7bbd3d8
- RP_NAME : tên project của bạn trên ReportPortal.
2. Vào suite của bạn ở script mode, chèn đoạn code này vào phương thức setUp (nhớ đổi skipped = false). Đoạn code bên dưới có nghĩa nó sẽ tạo ra một launch có tên là API_Sample_Suite mỗi lần bạn chạy cái suite đó.
@SetUp(skipped = false) // Please change skipped to be false to activate this method.
def setUp() {
// Put your code here.
ExecutionEventManager.getInstance().addListenerEventHandle(new ReportPortalListener("API_Sample_Suite"))
}
7. Kết
Như vậy mình đã giới thiệu xong ReportPortal.io và cách để integrate nó Katalon Studio. Cảm ơn các bạn đã theo dõi bài viết của mình. Chúc các bạn thành công. Hẹn gặp lại các bạn ở những chủ đề tiếp theo. Bái bai.
Nguồn: https://toilatester.blog/2018/11/22/gioi-thieu-ve-reportportal-io-part-1/