Luận văn: Kỹ thuật kiểm thử đột biến và ứng dụng cho chương trình Java

Luận văn thạc sĩ: Kỹ thuật kiểm thử đột biến & ứng dụng kiểm thử chương trình Java. Nghiên cứu chuyên sâu, phương pháp, thực nghiệm & kết quả.

Chuyên ngành

Công nghệ thông tin

Người đăng

Ẩn danh

Thể loại

Luận văn thạc sỹ

2010

76
0
0

Phí lưu trữ

30 Point

Mục lục chi tiết

CÁC THUẬT NGỮ VÀ CÁC TỪ VIẾT TẮT

DANH SÁCH CÁC HÌNH

DANH SÁCH CÁC BẢNG

1. CHƯƠNG 1: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM

1.1. Kiểm thử phần mềm là gì?

1.2. Các mức kiểm thử phần mềm

1.3. Kiểm thử đơn vị

1.4. Kiểm thử tích hợp

1.5. Kiểm thử hệ thống

1.6. Kiểm thử chấp nhận

1.7. Thiết kế trường hợp kiểm thử

1.8. Kỹ thuật kiểm thử hộp trắng

1.9. Kiểm thử đường dẫn cơ sở

1.10. Kiểm thử cấu trúc điều khiển

1.11. Kỹ thuật kiểm thử hộp đen

1.12. Phân hoạch tương đương

1.13. Phân tích giá trị biên

2. CHƯƠNG 2: KỸ THUẬT KIỂM THỬ ĐỘT BIẾN

2.1. Khái niệm kiểm thử đột biến

2.2. Cơ sở của kiểm thử đột biến

2.3. Toán tử đột biến

2.4. Quy trình kiểm thử đột biến

2.5. Một số vấn đề của kiểm thử đột biến

3. CHƯƠNG 3: CÁC CẢI TIẾN KỸ THUẬT KIỂM THỬ ĐỘT BIẾN

3.1. Giảm chi phí tính toán

3.2. Lấy mẫu đột biến

3.3. Đột biến ràng buộc

3.4. N - đột biến lựa chọn

3.5. Phương pháp tạo lược đồ đột biến

3.6. Làm thông minh hơn

3.7. Đột biến yếu

3.8. Tăng tự động hóa

3.9. Tạo dữ liệu thử tự động

3.10. Xác định các đột biến tương đương tự động

4. CHƯƠNG 4: ỨNG DỤNG KỸ THUẬT KIỂM THỬ ĐỘT BIẾN ĐỂ KIỂM THỬ CÁC CHƯƠNG TRÌNH JAVA

4.1. Công cụ MuJava

4.2. Mô tả công cụ MuJava

4.3. Các toán tử đột biến cho MuJava

4.4. Các toán tử đột biến mức phương thức

4.5. Các toán tử đột biến mức lớp

4.6. Phương pháp thực thi của MuJava

4.7. Công cụ Junit

4.8. Quy trình ứng dụng kiểm thử đột biến để kiểm thử các chương trình Java

4.9. Ứng dụng kỹ thuật kiểm thử đột biến để kiểm thử chương trình SXQSort

4.10. Đặc tả của chương trình sắp xếp dãy số tăng dần

4.11. Thuật toán của chương trình SXQSort

4.12. Thiết kế các trường hợp kiểm thử cho chương trình SXQSort

4.13. Thiết kế các trường hợp kiểm thử cho module FindPivot

4.14. Thiết kế các trường hợp kiểm thử cho Module Partition

4.15. Thiết kế các trường hợp kiểm thử cho Module QuickSort

4.16. Kiểm thử chương trình SXQSort.java với JUnit

4.17. Tạo và phân tích đột biến cho chương trình SXQSort.java bằng MuJava

4.18. Tạo các đột biến

4.19. Phân tích đột biến

TÀI LIỆU THAM KHẢO

MỞ ĐẦU

Tóm tắt

I. Tổng Quan Kiểm Thử Phần Mềm Cơ Sở Cho Kiểm Thử Đột Biến

Kiểm thử phần mềm đóng vai trò then chốt trong việc đảm bảo chất lượng và độ tin cậy của phần mềm. Nó không chỉ đơn thuần là tìm lỗi, mà còn xác minh phần mềm hoạt động đúng theo đặc tả và môi trường dự kiến. Mục tiêu là phát hiện lỗi sớm nhất có thể và đảm bảo chúng được sửa chữa. Tuy nhiên, kiểm thử gặp nhiều thách thức, bao gồm chi phí cao, mất mát thông tin trong quá trình phát triển, thiếu chú trọng trong đào tạo và sự không thể khẳng định một phần mềm hoàn toàn không có lỗi. Để đánh giá khả năng phát hiện lỗi của bộ dữ liệu thử, khái niệm chất lượng bộ dữ liệu thử được sử dụng. Các tiêu chuẩn chất lượng như bao phủ dòng lệnh và kiểm thử quyết định tập trung vào việc thực hiện chương trình với số lượng kiểm thử tăng dần. Tuy nhiên, chúng ít chú trọng đến nguyên nhân thất bại của chương trình – chính là các lỗi. Kiểm thử đột biến (mutation testing) là một tiêu chuẩn như vậy, tạo ra các phiên bản lỗi của chương trình và tìm ra các kiểm thử để chỉ ra dấu hiệu của lỗi. Nếu bộ dữ liệu thử chất lượng làm lộ ra các dấu hiệu này ở tất cả phiên bản bị lỗi, sự tin tưởng vào tính đúng đắn của chương trình sẽ tăng. Kiểm thử đột biến đã được áp dụng cho nhiều ngôn ngữ lập trình, bao gồm Java, và cả ở mức thiết kế để kiểm thử các đặc tả hoặc mô hình.

1.1. Các Mức Độ Kiểm Thử Phần Mềm Từ Đơn Vị Đến Chấp Nhận

Chiến lược kiểm thử phổ biến nhất là kiểm thử từ mức thấp đến cao, bao gồm bốn mức: kiểm thử đơn vị, kiểm thử tích hợp, kiểm thử hệ thống và kiểm thử chấp nhận. Kiểm thử đơn vị (unit testing) tập trung vào các thành phần phần mềm nhỏ nhất. Kiểm thử tích hợp (integration testing) kết hợp các thành phần này và kiểm tra sự giao tiếp giữa chúng. Kiểm thử hệ thống (system testing) kiểm tra xem toàn bộ hệ thống có đáp ứng yêu cầu hay không. Kiểm thử chấp nhận (acceptance testing) được thực hiện bởi khách hàng để đảm bảo sản phẩm đáp ứng mong đợi của họ. Theo tài liệu gốc, hình 1.1 minh họa rõ ràng bốn mức độ cơ bản này, nhấn mạnh sự tiến triển từ các bộ phận đơn lẻ đến toàn bộ hệ thống.

1.2. Kỹ Thuật Kiểm Thử Hộp Trắng và Hộp Đen Ưu và Nhược Điểm

Kiểm thử có thể được thực hiện theo hai cách: kiểm thử hộp đen và kiểm thử hộp trắng. Kiểm thử hộp trắng (white-box testing) cho phép kiểm tra cấu trúc bên trong của phần mềm. Kiểm thử đường dẫn cơ sở (basis path testing) là một kỹ thuật kiểm thử hộp trắng phổ biến. Kiểm thử hộp đen (black-box testing) xem phần mềm như một hộp đen và tập trung vào các yêu cầu chức năng. Mỗi cách tiếp cận có những ưu và nhược điểm riêng. Theo tài liệu gốc, kiểm thử hộp trắng phù hợp cho các mô-đun nhỏ, trong khi kiểm thử hộp đen thích hợp cho các hệ thống lớn hoặc các thành phần quan trọng. Tuy nhiên, việc kết hợp cả hai phương pháp sẽ mang lại hiệu quả cao nhất.

II. Kỹ Thuật Kiểm Thử Đột Biến Java Cơ Sở Lý Thuyết Và Quy Trình

Kiểm thử đột biến là một kỹ thuật đánh giá và cải thiện chất lượng dữ liệu thử bằng cách chèn các lỗi vào chương trình. Các phiên bản lỗi này được gọi là đột biến (mutants), mỗi đột biến chỉ chứa một lỗi duy nhất. Các đột biến được tạo ra bởi các toán tử đột biến (mutation operators), mô phỏng các lỗi mà lập trình viên thường mắc phải. Mục tiêu là tạo ra dữ liệu thử có thể phát hiện ra các đột biến này. Dữ liệu thử càng phát hiện được nhiều đột biến, chất lượng càng cao. Kiểm thử đột biến dựa trên ba giả thuyết: lập trình viên giỏi, hiệu ứng liên kết và dựa vào dự đoán. Giả thuyết lập trình viên giỏi cho rằng lập trình viên tạo ra các chương trình gần đúng. Hiệu ứng liên kết cho rằng dữ liệu thử có khả năng xác định các lỗi đơn giản thì cũng có thể xác định các lỗi phức tạp. Giả thuyết dựa vào dự đoán (oracle) cho rằng kết quả đầu ra khi thực hiện kiểm thử được xác định là đúng hay không.

2.1. Toán Tử Đột Biến Java Các Loại Và Ứng Dụng Thực Tiễn

Các toán tử đột biến được thiết kế để làm lộ ra các lỗi trong chương trình. Ví dụ, toán tử thay thế toán tử quan hệ (ROR) tạo ra các đột biến bằng cách thay thế một toán tử quan hệ bằng một toán tử quan hệ khác. Theo tài liệu gốc, Bảng 2.1 liệt kê 22 toán tử đột biến chuẩn được sử dụng trong Mothra. Các nghiên cứu gần đây tập trung vào phát triển các toán tử đột biến mới cho môi trường hướng đối tượng, đặc biệt là Java. Các ngôn ngữ lập trình hướng đối tượng có nhiều khác biệt so với các chương trình truyền thống, đặc biệt là trong cấu trúc và mô hình như tính kế thừa và tính đa hình. Các khác biệt này gây ra nhiều tiềm năng xuất hiện các lỗi mới, mà cần phải được biểu diễn trong các hệ thống kiểm thử đột biến hướng đối tượng để có hiệu quả.

2.2. Quy Trình Kiểm Thử Đột Biến Các Bước Thực Hiện Chi Tiết

Kiểm thử đột biến là một quy trình lặp đi lặp lại để cải thiện dữ liệu thử. Quy trình này bao gồm các bước: tạo đột biến, thực hiện đột biến với dữ liệu thử, so sánh kết quả đầu ra và loại bỏ các đột biến bị diệt. Tỷ lệ đột biến (mutation score) là thước đo chất lượng của dữ liệu thử, được tính bằng số lượng đột biến bị diệt chia cho tổng số đột biến không tương đương. Theo tài liệu gốc, hình 2.2 minh họa quy trình kiểm thử đột biến, nhấn mạnh các bước được thực hiện tự động và thủ công.

2.3. Đột Biến Tương Đương Thách Thức và Cách Xử Lý

Một vấn đề khó khăn trong kiểm thử đột biến là đột biến tương đương (equivalent mutants). Đây là những đột biến có ngữ nghĩa giống với chương trình gốc và luôn tạo ra kết quả đầu ra giống nhau, bất kể dữ liệu thử nào được sử dụng. Việc xác định đột biến tương đương là một vấn đề khó và thường phải được thực hiện thủ công. Tuy nhiên, việc loại bỏ đột biến tương đương là rất quan trọng để đánh giá chính xác chất lượng của dữ liệu thử. Theo tài liệu gốc, hình 2.3 minh họa ví dụ về đột biến tương đương.

III. Cải Tiến Kỹ Thuật Kiểm Thử Đột Biến Giảm Chi Phí Và Tăng Tốc

Kiểm thử đột biến gặp phải một số vấn đề khó khăn, chủ yếu liên quan đến chi phí tính toán và tự động hóa. Để giảm chi phí tính toán, các nghiên cứu tập trung vào ba lĩnh vực: làm ít hơn, làm nhanh hơn hoặc làm thông minh hơn. Làm ít hơn bao gồm giảm số lượng đột biến cần thực hiện bằng các phương pháp như lấy mẫu đột biến, đột biến ràng buộc và N-đột biến lựa chọn. Làm nhanh hơn bao gồm tạo ra và chạy các đột biến nhanh hơn bằng các kỹ thuật như biên dịch riêng rẽ và tạo lược đồ đột biến. Làm thông minh hơn bao gồm sử dụng các phương pháp thông minh để cải thiện khả năng thực hiện, ví dụ như đột biến yếu.

3.1. Lấy Mẫu Đột Biến Phương Pháp Giảm Số Lượng Đột Biến

Lấy mẫu đột biến là một phương pháp đơn giản lựa chọn ngẫu nhiên một tập con nhỏ các đột biến từ tập toàn bộ các đột biến. Nghiên cứu của Acree và Budd đề nghị rằng tỷ lệ lấy mẫu 10% có thể xác định trên 99% tất cả đột biến không tương đương trong khi cung cấp tiết kiệm chi phí đáng kể. Tuy nhiên, lựa chọn các đột biến cho kiểm thử có ảnh hưởng đến các dữ liệu thử được tạo ra và tỷ lệ đột biến. Các đột biến có thể được phân loại dựa trên tập các dữ liệu thử diệt chúng. Đột biến mạnh là rất khó phát hiện, đòi hỏi dữ liệu thử đặc biệt để diệt nó. Ngược lại, đột biến yếu có thể dễ dàng phát hiện bởi bất kỳ dữ liệu thử nào.

3.2. Đột Biến Yếu Weak Mutation So Sánh Trạng Thái Ngay Sau Đột Biến

Đột biến yếu là một kỹ thuật so sánh các trạng thái của đột biến và chương trình gốc ngay sau câu lệnh đột biến. Điều này giúp giảm chi phí tính toán so với kiểm thử đột biến mạnh, vốn tiếp tục thực hiện đột biến cho đến khi hoàn thành và so sánh các kết quả đầu ra cuối cùng. Theo nghiên cứu của Offutt và Lee, đột biến yếu có thể làm giảm đáng kể chi phí tính toán, với tiết kiệm thường vượt trên 50% số lần thực hiện.

IV. Ứng Dụng MuJava và JUnit Kiểm Thử Đột Biến Java Thực Tế

Để đảm bảo các ứng dụng Java hoạt động ổn định, chất lượng và hiệu quả, chương này giới thiệu quy trình kiểm thử các chương trình Java ứng dụng kỹ thuật kiểm thử đột biến sử dụng hai công cụ mã nguồn mở miễn phí MuJavaJUnit. MuJava hỗ trợ toàn bộ quá trình đột biến cho các chương trình Java, trong khi JUnit là một framework kiểm thử đơn vị phổ biến.

4.1. MuJava Mô Tả Chức Năng và Các Thành Phần Chính

MuJava (mutation system for Java) hỗ trợ toàn bộ quá trình đột biến cho các chương trình Java. Nó sản sinh các đột biến một cách tự động, thực thi các đột biến với các dữ liệu thử và báo cáo tỷ lệ đột biến của dữ liệu thử đó. Tất cả đều có giao diện người dùng đồ họa để giúp các kiểm thử viên và các nhà nghiên cứu thực hiện kiểm thử đột biến. Công cụ này bao gồm ba thành phần chính: mutants generator (bộ tạo đột biến), mutants viewer (biểu diễn đột biến) và mutants executor (bộ thực thi đột biến).

4.2. Quy Trình Ứng Dụng Kiểm Thử Đột Biến Với MuJava và JUnit

Quy trình ứng dụng kiểm thử đột biến để kiểm thử các chương trình Java sử dụng MuJava và JUnit bao gồm các bước: (1) Viết mã chương trình Java cần kiểm thử, (2) Sử dụng JUnit để viết các trường hợp kiểm thử đơn vị cho chương trình, (3) Sử dụng MuJava để tạo ra các đột biến cho chương trình, (4) Thực thi các trường hợp kiểm thử JUnit trên các đột biến bằng MuJava, (5) Phân tích kết quả và cải thiện các trường hợp kiểm thử nếu cần thiết.

24/09/2025

Trích đoạn nội dung tài liệu

MỞ ĐẦU Kiểm thử phần mềm là một hoạt động giữ vai trò rất quan trọng để bảo đảm chất lượng phần mềm và là hoạt động mang tính sống còn trong các dự án sản xuất hoặc gia công phần mềm. Vì vậy, kiểm thử phần mềm đã trở thành qui trình bắt buộc trong các dự án phát triển phần mềm trên thế giới. Ở Việt Nam, ngành công nghiệp phần mềm đang phát triển thì không thể xem nhẹ việc kiểm thử phần mềm vì xác suất thất bại sẽ rất cao, hơn nữa, hầu hết các công ty phần mềm có uy tín đều đặt ra yêu cầu nghiêm ngặt là nếu một phần mềm không có tài liệu kiểm thử đi kèm thì sẽ không được chấp nhận. Tuy nhiên, hoạt động kiểm thử thường gặp nhiều khó khăn.

Thứ nhất, kiểm thử các hệ thống phức tạp đòi hỏi rất nhiều nguồn tài nguyên và chi phí cao. Thứ hai, tiến trình phát triển phần mềm luôn trải qua nhiều hoạt động biến đổi thông tin, sự mất mát thông tin trong quá trình biến đổi là yếu tố chính làm cho hoạt động kiểm thử khó khăn. Thứ ba, kiểm thử chưa được chú trọng trong đào tạo con người. Cuối cùng, không tồn tại kỹ thuật kiểm thử cho phép khẳng định một phần mềm hoàn toàn đúng đắn hay không chứa lỗi.

Với mục đích phát hiện lỗi, kiểm thử phần mềm thường phải trải qua các bước: tạo dữ liệu thử, thực thi phần mềm trên dữ liệu thử và quan sát kết quả nhận được. Trong các bước này, bước tạo dữ liệu thử đóng vai trò quan trọng nhất, bởi vì chúng ta không thể tạo ra mọi dữ liệu từ miền vào của chương trình, mà chúng ta chỉ có thể tạo ra các dữ liệu thử có khả năng phát hiện lỗi cao nhất. Vấn đề đặt ra là làm thế nào để đánh giá được khả năng phát hiện lỗi của một bộ dữ liệu thử? Một kinh nghiệm để giúp giải quyết vấn đề này, đó là sử dụng khái niệm chất lượng bộ dữ liệu thử như là một phương tiện để đánh giá bộ dữ liệu thử như thế nào là “tốt” khi kiểm thử chương trình. Ở đây, “tốt” được đánh giá liên quan đến tiêu chuẩn chất lượng được định trước, thường là một số dấu hiệu bao phủ chương trình.

Ví dụ, tiêu chuẩn bao phủ dòng lệnh đòi hỏi bộ dữ liệu thử thực hiện mọi dòng lệnh trong chương trình ít nhất một lần. Nếu bộ dữ liệu thử được tìm thấy không chất lượng liên quan đến tiêu chuẩn (tức là không phải tất cả các câu lệnh đều được thực hiện ít nhất một lần), thì kiểm thử nữa là bắt buộc. Do đó, mục tiêu là tạo ra một tập các kiểm thử thực hiện đầy đủ tiêu chuẩn chất lượng. Tiêu chuẩn chất lượng tiêu biểu như bao phủ câu lệnh và kiểm thử quyết định (thực hiện tất cả các đường dẫn đúng và sai qua chương trình) dựa vào việc thực hiện chương trình với số lượng kiểm thử tăng dần để nâng cao độ tin cậy của chương trình đó.

Tuy nhiên, chúng không tập trung vào nguyên nhân thất TIEU LUAN MOI download : skknchat@gmail.com 7 bại của chương trình - được gọi là lỗi. Kiểm thử đột biến [7] là một tiêu chuẩn như vậy. Tiêu chuẩn này tạo ra các phiên bản của chương trình có chứa các lỗi đơn giản và sau đó tìm ra các kiểm thử để chỉ ra các dấu hiệu của lỗi. Nếu có thể tìm thấy một bộ dữ liệu thử chất lượng làm lộ ra các dấu hiệu này ở tất cả các phiên bản bị lỗi, thì sự tin tưởng vào tính đúng đắn của chương trình sẽ tăng.

Kiểm thử đột biến đã được áp dụng cho nhiều ngôn ngữ lập trình [8] như là một kỹ thuật kiểm thử hộp trắng. Chẳng hạn, các chương trình Fortran, Ada, C, Java, C#, SQL, …. Bên cạnh việc sử dụng kiểm thử đột biến ở mức thực thi phần mềm, kiểm thử đột biến còn được sử dụng ở mức thiết kế để kiểm thử các đặc tả hoặc các mô hình của chương trình. Ví dụ, ở mức thiết kế, kiểm thử đột biến được áp dụng cho các máy trạng thái xác định (FSM), các biểu đồ trạng thái (State Charts), các giao thức mạng (Network Protocols), các chính sách bảo mật (Security Policies), các dịch vụ web (Web Services), ….

Ý thức được đây là một lĩnh vực nghiên cứu có nhiều triển vọng ứng dụng trong phát triển phần mềm, tôi đã chọn hướng nghiên cứu Kỹ thuật kiểm thử đột biến cho đề tài luận văn của mình. Luận văn được xây dựng dựa trên nền các nghiên cứu đã có trong lĩnh vực kiểm thử phần mềm kể từ năm 1978, mà gần đây nhất là các nghiên cứu về kỹ thuật kiểm thử đột biến vào năm 2009 của TS.Nguyễn Thanh Bình – Đại học Bách khoa, Đại học Đà Nẵng [2]. Đồng thời, tôi xin đề xuất một “quy trình ứng dụng kỹ thuật kiểm thử đột biến để kiểm thử các chương trình Java”. Luận văn được tổ chức thành 4 chương như sau:  Chƣơng 1 – Trình bày tổng quan về kiểm thử phần mềm như khái niệm kiểm thử phần mềm, mục đích, mục tiêu và các mức kiểm thử phần mềm.

Chương này cũng đề cập đến việc sử dụng các kỹ thuật kiểm thử hộp trắng và hộp đen để thiết kế dữ liệu thử.  Chƣơng 2 - Mô tả chi tiết các thành phần chính của kỹ thuật kiểm thử đột biến, giới thiệu các giả thuyết cơ bản cần thiết để thực hiện phương pháp này. Chương này còn cung cấp quy trình để phân tích đột biến, từ đó rút ra được những vấn đề còn hạn chế đối với kỹ thuật kiểm thử đột biến, được cải tiến ở chương 3.  Chƣơng 3 – Giới thiệu các phương pháp cải tiến kỹ thuật kiểm thử đột biến nhằm giảm chi phí tính toán và tăng tự động hóa.

 Chƣơng 4 – Tập trung vào ứng dụng kỹ thuật kiểm thử đột biến. Phần đầu giới thiệu hai công cụ mã nguồn mở miễn phí MuJava với chức TIEU LUAN MOI download : skknchat@gmail.com 8 năng phân tích và tạo đột biến, và JUnit dùng để kiểm thử đơn vị của chương trình Java. Đồng thời, đề xuất quy trình ứng dụng kỹ thuật kiểm thử đột biến để kiểm thử các chương trình Java sử dụng hai công cụ trên. Cụ thể, kiểm thử chương trình sắp xếp dãy số tăng dần theo thuật toán QuickSort viết bằng ngôn ngữ Java, từ đó, tập trung phân tích và đánh giá chất lượng của các bộ dữ liệu thử dùng để kiểm thử chương trình này.

TIEU LUAN MOI download : skknchat@gmail.com 9 CHƢƠNG 1 - TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM 1. Kiểm thử phần mềm là gì? Kiểm thử phần mềm thường đồng nghĩa với việc tìm ra lỗi chưa được phát hiện. Tuy nhiên, có nhiều bối cảnh kiểm thử không bộc lộ ra lỗi. Kiểm thử phần mềm là quá trình thực thi một hệ thống phần mềm để xác định xem phần mềm có đúng với đặc tả không và thực hiện trong môi trường như mong đợi hay không [19].

Mục đích của kiểm thử phần mềm là tìm ra lỗi chưa được phát hiện, tìm một cách sớm nhất và bảo đảm rằng lỗi đã được sửa, kiểm thử phần mềm không làm công việc chẩn đoán nguyên nhân gây ra lỗi đã được phát hiện và sửa lỗi. Mục tiêu của kiểm thử phần mềm là thiết kế tài liệu kiểm thử một cách có hệ thống và thực hiện nó sao cho có hiệu quả, nhưng tiết kiệm được thời gian, công sức và chi phí. Các mức kiểm thử phần mềm Chiến lược kiểm thử tổng thể một hệ thống [3] được sử dụng rộng rãi nhất hiện nay là chiến lược từ mức thấp đến mức cao, bao gồm bốn mức như được thể hiện ở hình 1.1: Kiểm thử mức đơn vị lập trình Các bộ phận (Unit test) đơn lẻ Kiểm thử mức tích hợp các đơn vị Các nhóm (Integration test) bộ phận Kiểm thử mức hệ Toàn bộ thống, sau khi tích hợp hệ thống (System test) Kiểm thử để chấp nhận sản phẩm Toàn bộ hệ thống (Acceptance test) nhìn từ khách hàng Hình 1.1- Bốn mức độ cơ bản của kiểm thử phần mềm TIEU LUAN MOI download : skknchat@gmail. Kiểm thử đơn vị Một đơn vị (Unit) là một thành phần phần mềm nhỏ nhất mà ta có thể kiểm thử được.

Kiểm thử đơn vị thường do lập trình viên thực hiện. Công đoạn này cần được thực hiện càng sớm càng tốt trong giai đoạn viết code và xuyên suốt chu kỳ phát triển phần mềm. Mục đích của kiểm thử đơn vị là bảo đảm thông tin được xử lý và kết xuất (khỏi Unit) là chính xác, trong mối tương quan với dữ liệu nhập và chức năng xử lý của Unit. Điều này thường đòi hỏi tất cả các nhánh bên trong Unit đều phải được kiểm tra để phát hiện nhánh phát sinh lỗi.

Cũng như các mức kiểm thử khác, kiểm thử đơn vị cũng đòi hỏi phải chuẩn bị trước các tình huống (test case) hoặc kịch bản (test script), trong đó chỉ định rõ dữ liệu vào, các bước thực hiện và dữ liệu mong muốn sẽ xuất ra. Các test case và test script được dữ lại để sử dụng sau này. Kiểm thử tích hợp Kiểm thử tích hợp kết hợp các thành phần của một ứng dụng và kiểm thử như một ứng dụng đã hoàn thành. Trong khi kiểm thử đơn vị kiểm tra các thành phần và Unit riêng lẻ thì kiểm thử tích hợp kết hợp chúng lại với nhau và kiểm tra sự giao tiếp giữa chúng.

Kiểm thử tích hợp có hai mục tiêu chính là phát hiện lỗi giao tiếp xảy ra giữa các Unit và tích hợp các Unit đơn lẻ thành các hệ thống con (gọi là subsystem) và cuối cùng là nguyên hệ thống hoàn chỉnh chuẩn bị cho kiểm thử ở mức hệ thống (system test). Có 4 loại kiểm thử trong kiểm thử tích hợp như sau:  Kiểm thử cấu trúc (Structure test): Kiểm thử nhằm bảo đảm các thành phần bên trong của một chương trình chạy đúng, chú trọng đến hoạt động của các thành phần cấu trúc nội tại của chương trình, chẳng hạn các lệnh và nhánh bên trong.  Kiểm thử chức năng (Functional test): Kiểm thử chỉ chú trọng đến chức năng của chương trình, không quan tâm đến cấu trúc bên trong, chỉ khảo sát chức năng của chương trình theo yêu cầu kỹ thuật. TIEU LUAN MOI download : skknchat@gmail.com 11  Kiểm thử hiệu năng (Performance test): Kiểm thử việc vận hành của hệ thống.

 Kiểm thử khả năng chịu tải (Stress test): Kiểm thử các giới hạn của hệ thống. Kiểm thử hệ thống Mục đích của kiểm thử hệ thống là kiểm thử xem thiết kế và toàn bộ hệ thống (sau khi tích hợp) có thỏa mãn yêu cầu đặt ra hay không.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ