CHƯƠNG 2. KỸ THUẬT LÀM TĂNG TÍNH KHẢ KIỂM THỬ
2.5 Khung và công cụ hỗ trợ kiểm thử
Tính khả kiểm thử của hệ thống có thể đƣợc triển khai dễ dàng hơn nếu có khung hỗ trợ kiểm thử (test framework). Khung hỗ trợ kiểm thử sẽ cung cấp
các chức năng nền tảng hỗ trợ việc viết và thực hiện (chạy) kiểm thử. Một khung hỗ trợ kiểm thử thường là một ứng dụng tách biệt với ứng dụng ta đang kiểm thử.
Hình 7 Công cụ hỗ trợ lấy thông tin về ứng dụng
Khung ứng dụng là (application framework) là khung phần mềm với một số mã nguồn cung cấp sẵn làm sườn cho ứng dụng để người phát triển chỉ cần cài đặt thêm một số mã nguồn là có thể tạo thành ứng dụng hoàn chỉnh. Ví dụ để phát triển ứng dụng cho hệ điều hành Android người phát triển có thể sử dụng Android Application Framework 4 , hay để phát triển ứng dụng web, người phát triển có thể sử dụng Ruby on Rails 5 , khi đó kiến trúc của ứng dụng đƣợc tạo sẵn cùng một loạt các thành phần chuẩn, người phát triển chỉ cần thêm một số hàm xử lý ở mỗi thành phẩn để tạo thành ứng dụng.
4 http://developer.android.com/guide/faq/framework.html
5 http://rubyonrails.org/
Các khung kiểm thử là một loại khung ứng dụng chuyên dụng thiết kế sẵn để phục vụ cho việc phát triển mã kiểm thử. Có thể hiểu nó là một phần mềm kiểm thử bán hoàn chỉnh, có thể tái sử dụng và chuyên dùng để tạo ra các ứng dụng kiểm thử hoàn thiện. Với hai ví dụ về Android và Ruby on Rails nêu trên chúng có sẵn khung kiểm thử hỗ trợ viết mã kiểm thử từ mức đơn vị, tích hợp và đến mức chức năng người dùng (functional) 6 . Bên cạnh các chức năng chạy mã kiểm thử, kiểm tra kết quả, các khung kiểm thử còn có thể có các công cụ hỗ trợ đi kèm giúp người kiểm thử lấy được nhiều thông tin về ứng dụng để viết mã kiểm thử. Ví dụ nhƣ Hình 7 là công cụ cho phép lấy thông tin về các phần tử trên màn hình giao diện của Android, giúp người kiểm thử gửi hoặc lấy các thông tin về các phần tử giao diện, hỗ trợ việc kiểm thử ngay cả khi không có mã nguồn của các ứng dụng này.
Bên cạnh một số khung kiểm thử đi kèm các khung ứng dụng nhƣ hai ví dụ trên còn có nhiều khung kiểm thử độc lập, cho phép sử dụng với nhiều loại ứng dụng khác nhau. Một ví dụ khá phổ biến là JUnit 7 . Khung kiểm thử này tuy khá đơn giản nhƣng hỗ trợ rất tốt các công việc kiểm thử ở mức đơn vị cho các chương trình Java. Mã kiểm thử lúc này được viết ngắn gọn do sử dụng các tiện ích khung kiểm thử JUnit cung cấp, nhƣ việc thêm annotation @Test để đánh dấu hàm nào là hàm kiểm thử, hay các hàm thƣ viện (ví dụ assertThat trong đoạn
6 http://guides.rubyonrails.org/testing.html
7 http://junit.org/
@Test
public void newArrayListsHaveNoElements() { assertThat(new ArrayList().size(), is(0));
}
@Test
public void sizeReturnsNumberOfElements() { List instance = new ArrayList();
instance.add(new Object());
instance.add(new Object());
assertThat(instance.size(), is(2));
}
mã) để kiểm tra kết quả.
Ngoài JUnit có rất nhiều khung kiểm thử tương tự và có rất nhiều khung kiểm thử, công cụ kiểm thử ở mức cao hơn, chuyên biệt hơn cho các thuộc tính chất lƣợng cần kiểm thử hay các công cụ quản lý kiểm thử nhƣ trong Hình 8. Ví dụ SOAP UI chuyên để kiểm thử dịch vụ web.
Test Management Tools – HP Quality Centre (QC), HP Application Lifecycle Management (ALM), Tricentis TOSCA, IBM Rational Quality Manager, Microsoft Team Foundation Server (TFS), Silk Test Manager, T- Plan, Atlassian JIRA
Automated Testing Tools – HP Unified Functional Tester (UFT), HP Quick Test Professional (QTP), HP Service Test, HP Service Virtualisation, Tricentis TOSCA, IBM Rational Functional Tester (RFT), Selenium, Cucumber, Ruby, JUnit, JBehave, WATIR, SOAP UI, Test Complete, SILK Test, Microsoft Coded UI
Performance Testing Tools – HP Performance Centre, HP LoadRunner, Facilita Forecast, HP SiteScope, Apache JMeter, CA (ITKO) LISA, IBM Rational Performance Tester, Microsoft Visual Studio, YourKit, Silk Performer Workbench, WebDriver, Compuware dynaTrace, Quest JProbe, Java VisualVM, WebLOAD
Security Testing Tools – Fortify, Tipping Point, ArcSight, Metasploit, w3af, Core Impact, BeFF, Nessus, OpenVAS, Nexpose, Burp, Nikto, WebScarab, Webinspect
Bảng 2 Một số công cụ và khung kiểm thử
Trong qui trình kiểm thử có một khối lượng công việc thường phải làm đi làm lại nhiều lần là việc thực hiện kiểm thử. Để tăng tính khả kiểm thử cho một hệ thống, việc tự động hóa và khai thác công cụ là một yếu tố then chốt để giảm chi phí thực hiện kiểm thử. Hiểu biết và khai thác đƣợc tối đa các công cụ hỗ trợ là một trong những công việc giúp làm tăng tính khả kiểm thử của một hệ thống. Hiểu được khả năng công cụ đến đâu, có thể làm giúp con người những
việc gì, chi phí tự động hóa bao nhiêu sẽ giúp dự án áp dụng các kỹ thuật, công cụ hỗ trợ phù hợp để tăng tính khả kiểm thử của hệ thống.