Kỹ Thuật Kiểm Thử Phần Mềm Là Gì?
Kỹ thuật kiểm thử phần mềm là quá trình và phương pháp tiến hành kiểm tra và đánh giá các khía cạnh của phần mềm để đảm bảo rằng nó hoạt động đúng, đáp ứng yêu cầu và chất lượng mong đợi trước khi được phát hành cho người dùng cuối. Mục tiêu chính của kỹ thuật kiểm thử là tìm ra các lỗi, vấn đề và sự cố có thể xảy ra trong quá trình sử dụng phần mềm và giúp các nhà phát triển và nhà quản lý phần mềm có cái nhìn rõ ràng về tình trạng và chất lượng của sản phẩm.
Có hai loại chính của kỹ thuật kiểm thử phần mềm là kiểm thử tĩnh và kiểm thử động. Mỗi kỹ thuật kiểm thử lại phân loại thành những loại nhỏ hơn. Sơ đồ minh hoạ dưới đây sẽ giúp các bạn có cái hình dung rõ hơn về các kỹ thuật sử dụng trong kiểm thử phần mềm hiện nay.
Kỹ Thuật Kiểm Thử Tĩnh – Static Testing
Kiểm thử tĩnh (Static Testing) là kỹ thuật kiểm thử không liên quan đến việc chạy (hoặc thực thi) chính đối tượng kiểm tra. Các bài kiểm thử tĩnh được chia thành: Review và phân tích tĩnh (static analysist)
Review
Review là một quá trình trong đó các thành viên của nhóm phân tích tĩnh hoặc nhóm kiểm tra xem xét và đánh giá các tài liệu, source code, hoặc các thành phần khác của phần mềm để tìm kiếm lỗi, sai sót, vấn đề và cải thiện chất lượng của sản phẩm. Review giúp xác định và loại bỏ các vấn đề từ sớm trong quá trình phát triển, giảm nguy cơ lỗi và tối ưu hóa tiến trình sản xuất phần mềm.
Một số loại review phổ biến trong phân tích tĩnh bao gồm:
- Peer Review: Là một loại review không chính thức, thường được tiến hành mà không có bất kỳ thiết lập chính thức nào. Người tham gia review thường là những đồng nghiệp. Ví dụ, một thành viên của nhóm xem xét công việc của thành viên khác trong nhóm để tìm kiếm lỗi hoặc vấn đề và cung cấp phản hồi mang tính xây dựng.
- Walkthroughs: Một loại review nơi người tạo ra tài liệu hoặc mã nguồn giải thích nó cho một nhóm kiểm thử hoặc một người review. Thảo luận có thể diễn ra để hiểu rõ hơn những gì tác giả đã làm và logic đằng sau đó, nhằm mục đích tìm kiếm phản hồi.
- Technical review: Đây là cuộc họp đánh giá chỉ tập trung vào các khía cạnh kỹ thuật của tài liệu đang được xem xét để đạt được sự đồng thuận. Nó ít hoặc không tập trung vào việc xác định các lỗi dựa trên tài liệu tham khảo. Cần có các chuyên gia kỹ thuật như kiến trúc sư/thiết kế trưởng để thực hiện việc đánh giá. Nó có thể thay đổi từ không chính thức đến vô cùng trang trọng.
- Inspection: Inspection là loại review chính thức nhất. Trước khi tiến hành inspection, tài liệu được xem xét cần được chuẩn bị kỹ lưỡng. Các lỗi được xác định trong cuộc họp review sẽ được ghi vào công cụ quản lý lỗi và được theo dõi cho đến khi kết thúc.
Phân tích tĩnh – Static Analysis
Phân tích tĩnh (Static Analysis) trong phát triển phần mềm là quá trình kiểm tra và đánh giá source code, tập tin, tài liệu hoặc các thành phần khác của phần mềm mà không cần thực hiện chạy thử nghiệm thực tế. Mục tiêu chính của static analysis là tìm kiếm lỗi, sai sót, vấn đề và cải thiện chất lượng của phần mềm ngay từ giai đoạn phân tích và thiết kế, trước khi mã được biên dịch hoặc chạy.
Các công cụ phân tích tĩnh thường sử dụng các quy tắc, quy định, mô hình hoặc các biểu thức logic để kiểm tra mã nguồn và tài liệu. Các loại lỗi hoặc vấn đề phổ biến mà static analysis có thể tìm ra bao gồm:
- Lỗi cú pháp: Ví dụ như dấu ngoặc không đóng hoặc lệnh thiếu dấu chấm phẩy.
- Lỗi logic đơn giản: Ví dụ như sử dụng biến trước khi nó được khởi tạo.
- Khả năng xảy ra lỗi (potential error paths): Những vị trí trong mã có thể dẫn đến lỗi trong một số tình huống cụ thể.
- Chuỗi ký tự nguy hiểm (dangerous string literals): Các chuỗi có thể gây ra vấn đề về bảo mật như SQL Injection.
- Chia sẻ dữ liệu không an toàn (unsafe data sharing): Khi dữ liệu có thể bị sử dụng sai mục đích trong các phần khác nhau của mã.
- Vòng lặp vô hạn (infinite loops): Mã nguồn có thể bị kẹt trong vòng lặp vô hạn.
- Cấu trúc phức tạp: Các hàm quá phức tạp, khó hiểu, hoặc không tối ưu.
Kỹ Thuật Kiểm Thử Động – Dynamic Testing
Kiểm thử động (Dynamic Testing) trong phát triển phần mềm là quá trình kiểm tra và đánh giá tính năng, hiệu suất, và các khía cạnh khác của phần mềm bằng cách thực hiện và chạy các bộ test case, kịch bản hoặc các tình huống thử nghiệm thực tế. Mục tiêu chính của kiểm thử động là kiểm tra xem phần mềm hoạt động đúng đắn theo mong đợi và đáp ứng yêu cầu của người dùng.
Kiểm thử động được chia thành 5 loại chính như sau:
- Kiểm thử hộp đen – Black-box testing hoặc specification-based testing: Đây là kỹ thuật kiểm thử thực hiện các bài kiểm thử dựa trên cách thức hoạt động của hệ thống. Kiểm thử hộp đen bao gồm các bài kiểm tra chức năng (functional testing) và kiểm tra phi chức năng (non-functional testing).
- Kiểm thử hộp trắng – White-box testing hoặc structure-based techniques: Đây là kỹ thuật kiểm thử thực hiện các bài kiểm tra dựa trên cách hệ thống được xây dựng.
- Kiểm thử dựa vào kinh nghiệm – Experience-based testing: Đây là kỹ thuật kiểm thử thực hiện các bài kiểm tra dựa trên kỹ năng và trực giác của người kiểm thử, cùng với kinh nghiệm của họ đối với các ứng dụng hoặc công nghệ tương tự.
- Kiểm thử dựa vào lỗi – Defect-based testing: Đây là kỹ thuật kiểm thử thực hiện các bài kiểm tra dựa vào sự hiểu biết của kiểm thử viên về loại lỗi mà một thử nghiệm nhắm đến làm cơ sở cho thiết kế thử nghiệm, với các thử nghiệm được rút ra một cách có hệ thống từ những gì đã biết về lỗi đó.
- Phân tích động – Dynamic analysis: Kỹ thuật kiểm thử này tiến hành phân tích một ứng dụng khi nó đang chạy, thường thông qua một số loại thiết bị đo lường trong code.
Kết Luận
Việc lựa chọn kỹ thuật phụ thuộc vào các yếu tố như yêu cầu của dự án, nguồn lực, mục tiêu và bản chất của phần mềm đang được thử nghiệm. Kết hợp nhiều kỹ thuật và sử dụng một chiến lược thử nghiệm toàn diện là điều cần thiết để đảm bảo chất lượng và độ tin cậy của các ứng dụng phần mềm. Trong những bài viết tiếp theo mình sẽ giới thiệu cụ thể hơn về các kỹ thuật kiểm thử. Hãy tiếp tục đồng hành cùng mình trong loạt bài về kiểm thử phần mềm này nhé.
Cám ơn và hẹn gặp lại các bạn trong những bài viết tiếp theo!
Happy Testing!