Framework là một thư viện các lớp đã được xây dựng hoàn chỉnh , bộ khung để phát triển các Phần mềm ứng dụng. có thể ví framework như tập các “Vật liệu” ở từng lĩnh vực cho người lập trình viên, thay vì họ phải mất nhiều thời gian để tự thiết kế trước khi dùng.
Các automated testing framework cung cấp một kiến trúc riêng cho project kiểm thử của chúng ta, điều mà nền tảng của các công cụ test mà chúng ta sử dụng thì lại thường không cung cấp. Mỗi kiểu framework lại có những quy tắc riêng, các hướng dẫn, giao thức và thủ tục riêng dành cho các công việc như tạo test case, tổ chức và thực thi các test case.
Dưới đây là 8 loại framework dành cho kiểm thử tự động thường gặp nhất.
Thứ tự được sắp xếp tăng dần theo độ phức tạp và các mức độ trong việc định hướng để đạt được các mục tiêu kiểm thử. Và các khía cạnh dùng để đánh giá việc đó bao gồm khả năng mở rộng, tính tái sử dụng, nỗ lực dành cho việc bảo trì và chi phí đầu tư dành cho các kỹ năng liên quan đến kỹ thuật như là chuyển giao kiến thức, đào tạo nhân lực hay các nỗ lực cần có để học hỏi các công nghệ mới.
Linear Scripting Framework là một khung tự động hóa kiểm tra mức cơ bản ở dạng 'Ghi và Phát lại' theo kiểu tuyến tính.
Khung này còn được gọi là khung 'Ghi và Phát lại'.
Loại khuôn khổ này được sử dụng để kiểm tra các ứng dụng có kích thước nhỏ.
Trong loại này, việc tạo và thực thi các tập lệnh thử nghiệm được thực hiện riêng lẻ cho từng trường hợp thử nghiệm riêng lẻ.
Người kiểm tra nắm bắt từng bước kiểm tra như duyệt, điều hướng, đầu vào của người dùng, thực thi các điểm kiểm tra. Sau đó, người kiểm tra sẽ phát các tập lệnh để thực hiện các bài kiểm tra.
Với framework này, thì ta sẽ xây dựng các test script độc lập, tương ứng với từng module, các compoment hoặc các function của phần mềm ứng dụng. Việc tránh sử dụng các script phụ thuộc nhau là một yếu tố quan trọng đối với sự ổn định và khả năng bảo trì của framework này.
Nói một cách dễ hiểu, người kiểm thử chia ứng dụng thành nhiều mô-đun và tạo các tập lệnh kiểm tra riêng lẻ. Các tập lệnh thử nghiệm riêng lẻ này có thể được kết hợp để tạo ra các tập lệnh thử nghiệm lớn hơn bằng cách sử dụng một tập lệnh chính để đạt được các kịch bản yêu cầu. Tập lệnh chính này được sử dụng để gọi các mô-đun riêng lẻ để chạy các kịch bản thử nghiệm từ đầu đến cuối.
Lý do chính để sử dụng khuôn khổ này là xây dựng một lớp trừu tượng để bảo vệ mô-đun chính khỏi bất kỳ thay đổi nào được thực hiện trong các thử nghiệm riêng lẻ.
Khung kiểm tra kiến trúc thư viện hay còn gọi là “Kịch bản có cấu trúc” hoặc “Phân rã chức năng” nó dựa trên khuôn khổ mô-đun (Module Based Framework) với một số lợi thế bổ sung.
Trong khuôn khổ kiểm thử mô-đun, chúng ta chia ứng dụng đang được kiểm tra thành các mô-đun trong khi ở đây chúng ta xác định các nhiệm vụ chung và nhóm chúng thành các chức năng. Khi các chức năng được nhóm lại thì các nhóm này sẽ được lưu giữ trong thư viện. Các kịch bản thử nghiệm sử dụng lại các thư viện này để tạo các trường hợp thử nghiệm mới.
Khung tự động hóa kiểm tra theo hướng dữ liệu tập trung vào việc tách logic các tập lệnh kiểm tra và dữ liệu kiểm tra khỏi nhau.
Nó cho phép chúng ta tạo các kịch bản tự động hóa thử nghiệm bằng cách chuyển các bộ dữ liệu thử nghiệm khác nhau.
Tập dữ liệu thử nghiệm được lưu trong các tệp hoặc tài nguyên bên ngoài như Trang tính MS Excel, Bảng MS Access, Cơ sở dữ liệu SQL, tệp XML, v.v.,
Các kịch bản kiểm tra kết nối với các tài nguyên bên ngoài để lấy dữ liệu kiểm tra.
Bằng cách sử dụng khuôn khổ này, chúng ta có thể dễ dàng làm cho các tập lệnh thử nghiệm hoạt động bình thường cho các bộ dữ liệu thử nghiệm khác nhau.
Khuôn khổ này làm giảm đáng kể số lượng tập lệnh thử nghiệm so với khuôn khổ dựa trên mô-đun.
Khung này cung cấp phạm vi kiểm tra nhiều hơn với các bài kiểm tra có thể sử dụng lại và tính linh hoạt trong việc thực hiện các bài kiểm tra chỉ khi được yêu cầu và chỉ bằng cách thay đổi dữ liệu kiểm tra đầu vào.
Nó đáng tin cậy về mặt không ảnh hưởng đến các bài kiểm tra bằng cách thay đổi dữ liệu kiểm tra nhưng nó có những hạn chế riêng, chẳng hạn như người kiểm tra làm việc trên khuôn khổ này cần phải có kiến thức lập trình thực hành để phát triển các tập lệnh kiểm tra.
Nó còn được gọi là thử nghiệm theo hướng bảng hoặc thử nghiệm dựa trên từ hành động.
Trong thử nghiệm theo hướng từ khóa, chúng tôi sử dụng định dạng bảng để xác định từ khóa hoặc từ hành động cho từng chức năng hoặc phương pháp mà chúng tôi sẽ thực thi.
Nó thực hiện các kịch bản kiểm tra tự động hóa dựa trên các từ khóa được chỉ định trong bảng excel.
Khi sử dụng Khung này, người kiểm thử có thể làm việc với các từ khóa để phát triển bất kỳ tập lệnh tự động hóa kiểm tra nào, người kiểm tra có ít kiến thức lập trình hơn cũng có thể làm việc trên các tập lệnh kiểm tra.
1. Open a Browser
2. Navigate to URL https://anhtester.com
3. Enter username
4. Enter password
5. Click on the Login button
6. Click on the Logout button
7. Close the browser
Thì chúng sẽ đọc các bước từ Excel file với Keyword tương ứng. Các bước xử lý cho các keyword này đã được thiết đặt sẵn trong Library của ActionKeyword rồi. Chỉ việc switch case hoặc if else để mapping nó với tên tương ứng từ excel để gọi ra thực thi cho đúng.
Logic để đọc các từ khóa và gọi hành động bắt buộc được đề cập trong bảng excel. Thử nghiệm theo hướng từ khóa tương tự như thử nghiệm theo hướng dữ liệu.
Mặc dù để làm việc trên khung công tác này không yêu cầu nhiều kỹ năng lập trình nhưng việc thiết lập ban đầu (thực hiện khung công tác) đòi hỏi nhiều kiến thức chuyên môn hơn.
Framework theo hướng Keyword | Framework theo hướng Data |
Dễ bảo trì do có nhiều lớp trừu tượng hơn giữa các tập lệnh thử nghiệm, dữ liệu thử nghiệm, từ khóa, v.v. | Tương đối khó duy trì hơn vì sự trừu tượng chỉ nằm giữa dữ liệu thử nghiệm và tập lệnh thử nghiệm |
Lập kế hoạch phải sâu rộng và chính xác cho các khuôn khổ điều khiển từ khóa | Lập kế hoạch thật dễ dàng vì nó chỉ cần thiết cho dữ liệu thử nghiệm và tập lệnh thử nghiệm |
Có thể viết kịch bản thử nghiệm ngay cả trước khi sản phẩm kết thúc giai đoạn phát triển | Người ta phải đợi quá trình phát triển kết thúc trước khi viết các trường hợp thử nghiệm |
Hybrid test framework là sự kết hợp giữa hai hoặc nhiều các loại framework trên. Điểm cộng lớn ở đây chính là việc phát huy các ưu điểm của các framework mà nó kết hợp sử dụng.
Ví dụ: một hybrid có sự kết hợp giữa common library cùng với một kho dữ liệu test là các dữ liệu đầu vào/ra và các action keyword, lúc này mỗi bộ trong kho dữ liệu sẽ bao gồm tên của đối tượng, mô tả, action keyword, UI locator và test data tương ứng.
Phát triển theo hướng kiểm tra là một kỹ thuật sử dụng các kiểm thử đơn vị tự động để định hướng thiết kế phần mềm và tách nó khỏi bất kỳ phần phụ thuộc nào. Trước đó, với thử nghiệm truyền thống, một thử nghiệm thành công có thể tìm thấy một hoặc nhiều khiếm khuyết, nhưng bằng cách sử dụng TDD, nó sẽ tăng tốc độ thử nghiệm và cải thiện độ tin cậy rằng hệ thống đáp ứng các yêu cầu và hoạt động bình thường khi so sánh với thử nghiệm truyền thống.
Sau đây là những ưu điểm chính của Phát triển theo hướng kiểm thử trong Kỹ thuật phần mềm:
Sau đây là một số khung / công cụ kiểm thử đơn vị phổ biến và được sử dụng nhiều nhất hỗ trợ phương pháp TDD:
Behavior Driven Developmet Framework viết tắt là BDD, framework này không giống như các framework đã kể trên, mục đích của nó là tạo điều kiện cho các bên liên quan trong quy trình phát triển phần mềm như: Business Analysts, Developers, Testes…
Vấn đề trọng tâm đối với framework này đó là việc sử dụng các ngôn ngữ non-technical (không kỹ thuật), semi-formal, hay dễ hiểu hơn là nó sẽ gần giống với ngôn ngữ tự nhiên mà chúng ta vẫn thường sử dụng để mô tả các test case theo hướng hành vi của người dùng.
Cụ thể là ngôn ngữ Gherkin. Các bạn có thể tìm hiểu qua bài viết dưới đây
Xem thêm: Gherkin là gì? Cấu trúc của một Gherkin trong Cucumber
Có một số công cụ hỗ trợ chúng ta trong việc này như Cucumber, Jbehave, Rbehave…
Xem thêm: Cucumber là gì? Các thành phần của Cucumber
Trình bày ngôn ngữ Gherkin xong generate thành function script để xử lý bên dưới
Và cái hay là khi dùng BDD thì chúng ta sẽ không cần viết Test case riêng mà viết chúng tích hợp chung trong project auto test luôn với ngôn ngữ tự nhiên tiếng Anh.
Khách hàng cần xem là các gherkin này và họ không quan tâm code script bên dưới. Và framework này là framework được dùng nhiều nhất hiện nay. Phổ biến nhất hiện nay. Đặc biệt khách hàng châu Âu và Mỹ rất thích. Vì chúng trình bày test case theo hướng người dùng dễ hiểu và ngắn gọn.
Cái hay là có thêm được tính năng chạy auto test tương ứng với TC đó luôn.
TDD (Phát triển theo hướng thử nghiệm) | BDD (Phát triển theo hướng hành vi) |
Tập trung vào ý kiến của nhà phát triển về cách các chức năng của phần mềm sẽ hoạt động. Về cơ bản nó là cách nhìn của một lập trình viên. | Tập trung vào ý kiến của người dùng về cách họ muốn ứng dụng hoạt động. Về cơ bản đó là cách nhìn của khách hàng. |
Phương pháp tiếp cận cấp thấp | Là một phương pháp tiếp cận người dùng |
Xác minh xem việc triển khai các chức năng có chính xác hay không | Xác minh xem ứng dụng có hoạt động theo cách người dùng muốn nó hoạt động hay không |
Theo quan điểm cá nhân An thì khi nào mình cần code nhanh chỉ phần script thôi để phục vụ cho phần Test case đã viết sẵn riêng hoặc requirements thì chúng ta chọn Data Driven Famework và Keyword Driven Framework kết hợp 2 thằng này chung lại để build FW chỉ viết script mà không có Gherkin.
Framework mẫu do An build với Selenium Java và dùng Framework TestNG để xây dựng. Các bạn có thể tham khảo:
https://github.com/anhtester/AutomationFrameworkSelenium
Và khi mà khách hàng yêu cầu test case dạng Cucumber thì chúng ta dùng BDD Framework là phù hợp nhất. Nhưng nó mất thời gian xây dựng TC dạng Gherkin. Nhưng nó là tốt nhất và hay nhất hiện nay 👍
Framework mẫu do An build với Selenium Java và dùng Framework Cucumber + TestNG để xây dựng. Các bạn có thể tham khảo:
https://github.com/anhtester/AutomationFrameworkCucumberTestNG
Loại Test Automation Framework phổ biến nhất hiện nay là BDD Framework. Hay cụ thể là sử dụng Cucumber với ngôn ngữ Gherkin trong project auto test.
Trên đây là chia sẻ của mình về các loại Test Automation Framework phổ biến nhất hiện nay và ưu nhược điểm của từng loại. Cám ơn các bạn đã đọc, hy vọng bài viết của mình có thể giúp đỡ phần nào những vướng mắc của các bạn trước khi chọn lựa một framework để học và thiết kế automation testing.
Anh Tester
Đường dẫu khó chân vẫn cần bước đi
Đời dẫu khổ tâm vẫn cần nghĩ thấu