Nghiên cứu một số kỹ thuật và công cụ kiểm thử ứng dụng trong kiểm thử tự động ứng dụng web Nghiên cứu một số kỹ thuật và công cụ kiểm thử ứng dụng trong kiểm thử tự động ứng dụng web Nghiên cứu một số kỹ thuật và công cụ kiểm thử ứng dụng trong kiểm thử tự động ứng dụng web Nghiên cứu một số kỹ thuật và công cụ kiểm thử ứng dụng trong kiểm thử tự động ứng dụng web Nghiên cứu một số kỹ thuật và công cụ kiểm thử ứng dụng trong kiểm thử tự động ứng dụng web
ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG NGUYỄN THỊ KIM TUYẾN NGHIÊN CỨU MỘT SỐ KỸ THUẬT VÀ CÔNG CỤ KIỂM THỬ ỨNG DỤNG TRONG KIỂM THỬ TỰ ĐỘNG ỨNG DỤNG WEB Chuyên ngành: Khoa học máy tính Mã số: 848 01 01 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Người hướng dẫn khoa học: TS Nguyễn Văn Núi THÁI NGUYÊN, 2018 I LỜI CAM ĐOAN Tôi xin cam đoan kết đạt luận văn sản phẩm riêng cá nhân Trong toàn nội dung luận văn, điều trình bày cá nhân tổng hợp từ nhiều nguồn tài liệu Tất tài liệu tham khảo có xuất xứ rõ ràng trích dẫn hợp pháp Tơi xin hồn tồn chịu trách nhiệm chịu hình thức kỷ luật theo quy định cho lời cam đoan Tác giả luận văn Nguyễn Thị Kim Tuyến II LỜI CẢM ƠN Luận văn Thạc sĩ thực Đại học Công Nghệ Thông Tin & Truyền Thông hướng dẫn TS Nguyễn Văn Núi Xin gửi lời cảm ơn sâu sắc đến thầy định hướng khoa học, liên tục quan tâm, tạo điều kiện thuận lợi suốt trình nghiên cứu hồn thành luận văn Tơi xin gửi lời cảm ơn đến các thầy giáo, cô giáo giảng dạy cung cấp cho kiến thức bổ ích thời gian học, giúp tơi có tảng tri thức để phục vụ nghiên cứu khoa học sau Tôi xin bày tỏ lịng cảm ơn đến gia đình bạn bè, người ln quan tâm, động viên khuyến khích tơi giúp tơi có thêm nghị lực, cố gắng để hoàn thành luận văn Cuối cùng, xin gửi lời cảm ơn chân thành đến bạn học K15A, bạn đồng nghiệp giúp đỡ suốt năm học tập Tác giả luận văn Nguyễn Thị Kim Tuyến III DANH MỤC HÌNH ẢNH Hình 1 Minh họa sử dụng quy trình kiểm chứng thẩm định trình phát triển phần mềm Hình Các nguyên nhân gây lỗi phần mềm Hình Quy trình kiểm thử phần mềm Hình Cấu trúc Selenium i Hình Thao tác mở Selenium IDE công cụ iv Hình Giao diện Selenium IDE iv Hình 4 Download cài đặt JDK xiii Hình Download Eclipse IDE xiv Hình Download Selenium Java Client Driver xiv Hình Tạo project xv Hình Đặt tên chọn tạo phương thức xv Hình Tên Class Eclipse xvi Hình 10 Thêm Selenium Java Client Driver (.jar) vào project xvi Hình 11 Đăng nhập thành công Firefox 38 Hình 14 Giao diện báo cáo kết kiểm thử thất bại 38 Hình 15 Bảng tóm tắt trường hợp testcase chạy 39 IV MỤC LỤC LỜI CAM ĐOAN I LỜI CẢM ƠN III DANH MỤC HÌNH ẢNH IV MỤC LỤC V CHƯƠNG 1: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM VÀ VẤN ĐỀ ĐẢM BẢO CHẤT LƯỢNG PHẦN MỀM Sản phẩm phần mềm kiểm thử phần mềm 1.1 Sản phẩm phần mềm gì? 1.2 Khái niệm kiểm thử phần mềm Vấn đề đảm bảo chất lượng phần mềm 2.1 Lỗi phần mềm gì? 2.2 Tại lỗi phần mềm xuất 2.3 Chi phí cho việc sửa lỗi Quy trình kiểm thử phần mềm CHƯƠNG 2: MỘT SỐ KỸ THUẬT VÀ CÔNG CỤ KIỂM THỬ PHẦN MỀM 10 2.1 Nguyên tắc kiểm thử 10 2.1.1 Mục tiêu kiểm thử 10 2.1.2 Luồng thông tin kiểm thử 10 2.2 Một số kỹ thuật kiểm thử phần mềm 11 2.2.1 Kỹ thuật kiểm thử hộp trắng (White - Box Testing) 11 2.2.2 Kỹ thuật kiểm thử đường dẫn (Basic Path Testing) 12 2.3 Kỹ thuật kiểm thử hộp đen (Black – Box Tesing) 15 2.3.1 Phân hoạch tương đương 16 2.3.2 Phân tích giá trị biên (BVA - Boundary Value Analysis) 17 2.3.3 Kỹ thuật đồ thị nhân-quả (Cause-Effect Graph) 18 2.3.4 Kiểm thử so sánh 18 2.4 Kiểm thử tự động 19 V 2.4.1 Kiểm thử hàm 21 2.4.2 Kiểm thử dòng điều khiển 22 CHƯƠNG 3: MỘT SỐ CÔNG CỤ KIỂM THỬ PHẦN MỀM 25 3.1 Công cụ kiểm thử Jmeter 25 3.1.1 Giới thiệu chung Jmeter 25 3.1.2 Đặc trưng Jmeter 25 3.1.3 Các thành phần Jmeter 25 3.2 Công cụ kiểm thử QuickTest Pro 26 3.2.1 Giới thiệu chung QuickTest Pro 26 3.2.2 Đặc trưng QuickTest Pro 26 3.2.3 Các thành phần QuickTest Pro 27 3.3 Công cụ kiểm thử Katalon Studio 28 3.3.1 Giới thiệu chung Katalon Studio 28 3.3.2 Đặc trưng Katalon Studio 28 3.3.3 Các thành phần Katalon Studio 29 3.4 Công cụ kiểm thử Selenium Webdriver 30 CHƯƠNG 4: ỨNG DỤNG CÔNG CỤ HỖ TRỢ KIỂM THỬ SELENIUM WEBDRIVER TRONG KIỂM THỬ ỨNG DỤNG WEB 33 4.1 Lý chọn toán ứng dụng 33 4.2 Kiểm thử tự động ứng dụng Gmail 35 4.2.1 Giới thiệu toán 35 4.2.2 Chuẩn bị testcase cho toán 36 4.2.3 Xây dựng kịch kiểm thử tự động 37 KẾT LUẬN 40 PHỤ LỤC i Phụ lục - Giới thiệu Selenium i Phụ lục - Selenium IDE iii VI Giới thiệu Selenium IDE iii Hướng dẫn cài đặt Selenium IDE iii Các câu lệnh Selenium IDE v Locator (Xác định đối tượng UI) vii Phụ lục - Selenium WebDriver x Giới thiệu Selenium WebDriver x Cài đặt Selenium WebDriver xiii Các câu lệnh sử dụng Selenium WebDriver xx TÀI LIỆU THAM KHẢO i VII MỞ ĐẦU Chúng ta chứng kiến tăng trưởng đáng kinh ngạc ngành công nghiệp phần mềm vài thập kỷ qua Nếu trước phần mềm máy tính sử dụng để tính tốn khoa học kỹ thuật xử lí liệu ngày ứng dụng vào mặt đời sống hàng ngày người, từ ứng dụng nhỏ để điều khiển thiết bị dùng gia đình thiết bị nghe nhìn, điện thoại, máy giặt, lị vi sóng, nồi cơm điện, đến ứng dụng lớn trợ giúp điều khiển phương tiện hệ thống giao thơng, trả tiền cho hố đơn, quản lí tốn tài chính, Vì người ngày phụ thuộc chặt chẽ vào sản phẩm phần mềm Do đòi hỏi chất lượng sản phẩm phần mềm ngày cao, tức phần mềm phải sản xuất với giá thành hạ, dễ dùng, an toàn tin cậy Kiểm thử có phương pháp hoạt động khơng thể thiếu quy trình sản xuất phần mềm để đảm bảo yếu tố chất lượng nêu sản phẩm phần mềm Bên cạnh đó, ứng dụng Web phát triển trở thành tảng kết nối thông tin thiết yếu doanh nghiệp, đóng vai trị định thương mại điện tử, trao đổi thông tin Để đạt điều này, ứng dụng Web cần phải có hiệu cao, đáng tin cậy,… Việc đưa ứng dụng Web tốt cho người dùng sử dụng ứng dụng trở thành thách thức vấn đề đảm bảo chất lượng Selenium WebDriver công cụ kiểm thử ứng dụng Web tiêu biểu Đây công cụ mã nguồn mở, mạnh mẽ hỗ trợ Web, nhiều platform trình duyệt phổ biến Selenium WebDriver có lẽ cơng cụ tốt thị trường cho ứng dụng Web Những lợi ích cơng cụ kiểm thử tự động mang lại lớn nên hy vọng luận văn “Nghiên cứu số kỹ thuật công cụ kiểm thử ứng dụng kiểm thử tự động ứng dụng Web” mang lại cho người đọc tài liệu hỗ trợ hữu ích trước định sử dụng kiểm thử tự động cho ứng dụng Web Nội dung luận văn gồm chương: Chương 1: Tổng quan kiểm thử phần mềm vấn đề đảm bảo chất lượng phần mềm Chương 2: Một số công cụ kiểm thử phần mềm Chương 3: Một số cộng cụ kiểm thử phần mềm Chương 4: Ứng dụng công cụ hỗ trợ kiểm thử Selenium Webdriver kiểm thử ứng dụng Web CHƯƠNG 1: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM VÀ VẤN ĐỀ ĐẢM BẢO CHẤT LƯỢNG PHẦN MỀM Sản phẩm phần mềm kiểm thử phần mềm 1.1 Sản phẩm phần mềm gì? Phần mềm (bộ) chương trình cài đặt máy tính nhằm thực nhiệm vụ tương đối độc lập nhằm phục vụ cho ứng dụng cụ thể việc quản lý họat động máy tính áp dụng máy tính họat động kinh tế, quốc phịng, văn hóa, giáo dục, giải trí,… Việc tạo sản phẩm phần mềm phải trải qua nhiều giai đoạn, người ta gọi qui trình phát triển phần mềm, bắt đầu có ý tưởng đưa sản phẩm phần mềm thực thi Khối lượng công việc giai đoạn trình sản xuất phần mềm thay đổi theo thời gian 1.2 Khái niệm kiểm thử phần mềm Kiểm thử phần mềm công việc thực nhằm tìm lỗi, thiếu sót phần mềm chứng minh phần mềm hoạt động đắn Kiểm thử phần mềm có vai trị quan trọng việc cải thiện chất lượng phần mềm làm giảm chi phí kiểm thử khắc phục lỗi Kiểm thử phần mềm sử dụng quy trình kiểm chứng thẩm định chất lượng phần mềm trình thực việc kiểm thử Quy trình kiểm chứng đảm bảo phần mềm phát triển với đặc tả quy trình thẩm định đảm bảo phần mềm thỏa mãn yêu cầu người dùng cuối Quy trình kiểm chứng thực trước quy trình thẩm định sản phẩm phần mềm cần với đặc tả trước Nếu thực quy trình thẩm định trước quy trình đặc tả, xảy lỗi, khó xác định lỗi đặc tả sai hay lập trình sai so với đặc tả Tuy nhiên, thẩm định thực muộn phát lỗi thiếu sót kéo theo chi phí khắc phục lỗi tăng đồng thời khiến ID Name Link Text CSS Selector Tag/ID Tag/class Tag/attribute Tag/class/attribute Inner text XPath ID: Được coi thuộc tính đơn ổn định hệ thống phần mềm=>Việc sử dụng ID cho việc xác định UI cực tốt Tuy nhiên trình xây dựng sản phẩm, nhà phát triển thường gắn ID cho tất đối tượng UI Name: Được xem lựa chọn thứ hai sau ID Tuy nhiên thuộc tính Name đơi khơng đơn theo chuẩn W3C khơng có ràng buộc bắt buộc thuộc tính Name phải đơn Link Text: Chỉ áp dụng để xác định thành phần liên kết (Hyperlink) giao diện Webpage Thuộc tính Link Text không đơn không ổn định trang web có nhiều liên kết đến trang khác hay thay đổi từ ngữ không thay đổi ý nghĩa, hay vấn đề Đa ngôn ngữ v.v CSS Selector: Sử dụng CSS phụ thuộc vào cách thiết kế web nhà phát triển Và hiển nhiên CSS Selector không đơn không nhà phát triển tạo CSS để dùng cho đối tượng Do sử dụng CSS Selector phải kết hợp CSS với Tag/ID, Tag/Class v.v viii Cuối cùng, XPath: Đây xem thuộc tính hay dùng Selenium Tuy nhiên cách lại thiếu xác, thiếu đơn thiếu ổn định tất cách xác định đối tượng UI Phương thức Cấu trúc Ví dụ ID Name id= id_của_đối_tượng id=email name=name_của_đối_tượng name=username Name name=name_của_đối_tượng name=tripType Link Text link=link_text link=REGISTER Tag/ID css=tag#id css=input#email Tag/Class css=tag.class css=input.inputtext Tag/Attribute css=tag[attribute=giá trị] css=input[name=lastName] Tag/Class/Attribute css=tag.class[attribute=giá trị] css=a:contains(value) Inner text css=input.inputtext[tabinde x=1] css=a:contains('Log Out') Xpath //html/body//bookstore/boo k/title XPath ix Phụ lục - Selenium WebDriver Giới thiệu Selenium WebDriver a Lịch sử Selenium Với ứng dụng web trở thành phương pháp defacto để phát triển ứng dụng người dùng cuối, cần giải pháp cho việc test Điều có nghĩa nhiều trọng vào framework tự động hóa trình duyệt để giúp kiểm tra trang web Nhiều năm qua, người sử dụng Selenium IDE Selenium RC để dẫn dắt nhiều loại trình duyệt khác Selenium tạo ban đầu Jason Huggins, giải vấn việc trình duyệt tương tác với người dùng Đây framework tự động hóa tốt, nhiên bị giới hạn JavaScript sandbox trình duyệt JavaScript sandbox thực thi sách bảo mật JavaScript thực để ngăn chặn mã độc máy khách hàng Chính sách bảo mật mà người thơng qua Same Origin Policy Nếu bạn cần chuyển từ HTTP sang HTTPS, trình duyệt ngăn chặn hành động lúc khơng cịn gốc Điều khiến người phát triển trung bình bạn phẫn nộ! Selenium API thiết kế để làm việc từ bên máy chủ Người phát triển hay tester viết test phải làm HTML cách sử dụng thiết kế cột dựa FIT Bạn thấy điều mở Selenium IDE có input box cần hồn thành cho dịng thực thi nhiên có nhiều vấn đề Patrick Lightbody Paul Hammant nghĩ cách tốt để điều khiển test họ với cách họ sử dụng ngơn ngữ phát triển mà họ thích Họ tạo Selenium Remote Contral sử dụng Java máy chủ web Phần ta tìm hiểu kĩ thuật WebDriver x b Kỹ thuật Cấu trúc WebDriver khơng theo phương pháp Selenium RC viết hồn tồn JavaScript cho tất tự động hóa trình duyệt JavaScript Selenium RC mô hành dộng người dùng JavaScript tự động hóa trình duyệt từ trình duyệt WebDriver mặt khác cố gắng để kiểm sốt trình duyệt từ bên ngồi Nó sử dụng khả tiếp cận API để điều khiển trình duyệt Khả tiếp cận API sử dụng số lượng lớn ứng dụng truy cập kiểm soát ứng dụng chúng sử dụng người dùng bị chặn WebDriver sử dụng phương pháp thích hợp để truy cập khả tiếp cận API Nếu bạn nhìn vào Firefox, sử dụng JavaScript để truy cập API Nếu bạn nhìn vào Internet Explorer, sử dụng C++ Phương pháp có nghĩa ta điều khiển trình duyệt cách tốt có nhược điểm với trình duyệt thị trường không hỗ trợ phương pháp với Selenium RC Những nơi phương pháp khơng làm việc, ta dùng JavaScript trang Ví dụ tìm thấy HTML5 WebDriver API WebDriver API phần hệ thống mà bạn tương tác suốt trình xi Nhiều thứ thay đổi từ API có độ dài 140 dịng mà Selenium RC API có Cái dễ quản lý thực phù hợp hình thông thường Điều tạo thành từ WebDriver đối tượng WebElement driver.findElement(By.name("q")) element.sendKeys("I love cheese"); Những lệnh sau dịch sang SPI Điều thấy phần WebDriver SPI Khi mã code vào Stateless Programming Interface hay SPI, sau gọi đến chế phá vỡ nhân tố sử dụng ID sau gọi lệnh có liên quan Tất API gọi sau gọi dưới, ví dụ: findElement(using="name", value="q") sendKeys(element="webdriverID", value="I love cheese") Từ gọi đến giao thức JSON Wire Ta sử dụng HTTP chế vận chuyển Ta liên lạc tới trình duyệt kĩ thuật vận chuyển client server đơn giản mà người phát triển tạo JSON Wire Protocol JSON Wire protocol Những người phát triển WebDriver tạo chế vận chuyển gọi JSON Wire Protocol Giao thức vận chuyển tất yếu tố cần thiết tới code điều khiển Nó sử dụng REST giống API cách để giao tiếp Sát nhập dự án Cả Simon Stewart Jason Huggins nghĩ việc sát nhập dự án với thực ý kiến tốt, sau gọi Selenium Các nhà phát triển cứng Selenium làm việc để đơn giản hóa sở mã code xóa bỏ nhiều trùng lặp tốt Ta tạo Selenium Atoms mà sau chia sẻ dự án xii Cài đặt Selenium WebDriver Để phát triển kịch webdriver, cần đảm bảo mơi trường cài đặt hồn tất Thiết lập mơi trường bao gồm bước sau đây: Bước 1: Download cài đặt Java Development Kit (JDK) - Link download: http://www.oracle.com/technetwork/java/javase/downloads/index-jsp138363.html - Cài đặt bình thường, click Next, Install hồn tất Hình Download cài đặt JDK Bước 2: Download cài đặt Ecilpse IDE • Link download: http://www.eclipse.org/downloads/ • Tùy vào hệ thống máy tính để lựa chọn phiên 32/64 bit cho phù hợp Trường hợp này, em lựa chọn để tải Elipse IDE for Java Developers để đáp ứng nhu cầu cơng việc xiii Hình Download Eclipse IDE Bước 3: Download Selenium Java Client Driver: • Link download: http://www.seleniumhq.org/download/ Hình Download Selenium Java Client Driver • Giải nén đặt vào thư mục cố định Nên đặt khác vị trí ổ C để sau cài đặt lại hệ thống, tái sử dụng lại đặt trực tiếp vào project (cài lại máy di chuyển qua máy khác chạy được) Bước 4: Tạo project với ngơn ngữ lập trình Java Eclipse • Click chuột phải vào package tạo Class hình sau: xiv Hình 10 Tạo project • Đặt tên cho class chọn tạo phương thức main -> Finish Hình 11 Đặt tên chọn tạo phương thức xv • Sau click finish, class vừa tạo hiển thị sau: Hình 12 Tên Class Eclipse Bước 5: Thêm Selenium Java Client Driver (.jar) vào project • Right click vào tên Project -> Properties -> Java Build Path -> Libraries -> Add External JARs • Chọn tất file có định dạng jar thư mục [selenium- java-2.43.1] -> OK Hình 13 Thêm Selenium Java Client Driver (.jar) vào project xvi Bước 6: Thêm TestNG plugin vào Eclipse • Chọn Help -> Install New Software • Nhập TestNG vào textbox Name http://beust.com/eclipse vào textbox Location -> Click OK xvii • Click vào TestNG nhấn Next button • Click “I accept the terms of the license agreement” nhấn Finish button: xviii • Nếu popup thông báo Security Warning, nhấn OK để tiếp tục • Hồn thành, click Yes để khởi động lại Eclipse • Sau khởi động xong, cần kiểm tra TestNG cài đặt thành công: Window -> Preferences xix • TestNG plugin tích hợp thành công vào Eclipse Các câu lệnh sử dụng Selenium WebDriver Các câu lệnh trình duyệt Selenium webdrive có số câu lệnh thao tác với trình duyệt mở, đóng, lấy tiêu đề trang web đây: Câu lệnh [Get] Mục đích: Câu lệnh sử dụng để mở trang web trình duyệt Cú pháp: drive.get(URL); URL: Là url để tải trang, nên sử dụng url đầy đủ; xx Ví dụ: driver.get("https://accounts.google.com"); Câu lệnh lấy tiêu đề [getTitle] Mục đích : Câu lệnh sử dụng để lấy tiêu đề trang web Cú pháp: driver.getTitle(); Câu lệnh lấy URL [getCurrentUrl] Mục đích: Câu lệnh dùng để lấy URL trang tải trình duyệt Cú pháp: driver.getCurrentUrl(); Câu lệnh lấy source trang web [getPageSource] Mục đích: Câu lệnh dùng để lấy source trang tải cuối Cú pháp: driver.getPageSource(); Câu lệnh đóng trang web [close] Mục đích: Câu lệnh dùng để đóng cửa sổ trình duyệt Cú pháp: driver.close(); Câu lệnh trình duyệt [quit] Mục đích: Câu lệnh dùng để khỏi trình duyệt tất cửa sổ mở Cú pháp: drive.quit(); Câu lệnh làm [refresh] Mục đích: Câu lệnh dùng để làm trình duyệt Cú pháp: driver.navigate().refresh(); xxi TÀI LIỆU THAM KHẢO Tiếng Việt [1.] Thạc Bình Cường, Bài giảng Kiểm thử đảm bảo chất lượng phần mềm, Nhà xuất Đại học Bách Khoa Hà Nội [2.] Phạm Ngọc Hùng, Trương Anh Hoàng, Đặng Văn Hưng Giáo trình Kiểm thử phần mềm, 2013 [3.] RoGer S.Pressman, Kỹ nghệ phần mềm, Ngô Trung Việt dịch, Tập 3, NXB Giáo dục, 2000 [4.] Bài giảng đảm bảo chất lượng phần mềm, Học viện Bưu Viễn thơng [5.] Nguyễn Quốc Toản, Bài giảng nhập mơn Cơng trình học phần mềm, Khoa Công nghệ - Đại học Quốc gia Hà Nội, trang 59 - 63, 2000 Tiếng Anh [6.] Beier, B (1995), Black- box Testing, Wiley [7.] Cem Kaner, Jack Falk, Hung Ngoc Nguyen (1999), Testing Computer Software, John Wiley & Sons, Inc., p 27- 141 [8] Daniel Galin, Software Quality Assurance, Pearson Education, 2004 Website tham khảo [9.] http://imic.edu.vn/tin-tuc-cong-nghe/3122/kiem-thu-thu-cong-vakiem-thu-tu-dong-giong-va-khac-nhau-nhu-the-nao.html [10.] https://viblo.asia/p/kiem-thu-tu-dong-va-cac-cong-cu-duoc-sudung-trong-kiem-thu-tu-dong-aWj531qbZ6m [11.] http://learntesting123.blogspot.com/2015/04/bat-au-voi-cong-cuquick-test-pro.html [12.] http://www.testingvn.com/viewtopic.php?f=123&t=92573 [13.] https://techblog.vn/tim-hieu-quy-trinh-kiem-tra-phan-mem i ... văn ? ?Nghiên cứu số kỹ thuật công cụ kiểm thử ứng dụng kiểm thử tự động ứng dụng Web? ?? mang lại cho người đọc tài liệu hỗ trợ hữu ích trước định sử dụng kiểm thử tự động cho ứng dụng Web Nội dung... Công cụ kiểm thử Selenium Webdriver 30 CHƯƠNG 4: ỨNG DỤNG CÔNG CỤ HỖ TRỢ KIỂM THỬ SELENIUM WEBDRIVER TRONG KIỂM THỬ ỨNG DỤNG WEB 33 4.1 Lý chọn toán ứng dụng 33 4.2 Kiểm thử. .. VÀ CÔNG CỤ KIỂM THỬ PHẦN MỀM Có thể chia kỹ thuật kiểm thử phần mềm thành hai loại: kỹ thuật kiểm thử hộp đen (black-box testing) kỹ thuật kiểm thử hộp trắng (white-box testing) Kiểm thử sử dụng