Tổng quan về giáo trình

Giáo trình Đảm Bảo Chất Lượng Phần Mềm: Hướng Dẫn Kiểm Thử Hiệu Quả do tập thể giảng viên Khoa Công nghệ Thông tin – Trường Đại học Sư phạm Kỹ thuật Hưng Yên biên soạn và phát hành trực tuyến thông qua cổng tri thức mở VOER (http://voer.vn/c/4c771e16). Tài liệu có dung lượng 245 trang, được thiết kế làm học liệu chính thức cho học phần Kiểm thử và Đảm bảo chất lượng phần mềm (Software Quality Assurance & Software Testing) thuộc chương trình đào tạo trình độ Đại học ngành Công nghệ Thông tin và Kỹ thuật Phần mềm.

Mục tiêu học tập của giáo trình nhằm trang bị cho người học hệ thống tri thức từ lý thuyết nền tảng đến kỹ năng thực hành chuyên sâu về quy trình kiểm soát chất lượng phần mềm. Người học được trang bị khả năng phân tích lỗi hệ thống, thẩm định tài liệu đặc tả, thiết kế các bộ trường hợp kiểm thử (test cases) theo cả hai phương pháp hộp trắng và hộp đen, đồng thời làm quen với các quy trình kiểm thử hệ thống và công cụ tự động hóa.

Cấu trúc giáo trình bao gồm 12 bài học chuyên đề được sắp xếp theo trình tự sư phạm chặt chẽ: từ nhận thức bản chất lỗi, quy trình phát triển, phương pháp và kỹ thuật kiểm thử, các khía cạnh kiểm thử chuyên biệt, đến quy trình quản lý kiểm thử hệ thống, kiểm thử tự động và bài tập ứng dụng. Điểm đặc sắc của giáo trình là việc kết hợp chặt chẽ giữa các khái niệm kỹ thuật chuẩn mực với các ca nghiên cứu thực tiễn (case studies) kinh điển trong lịch sử công nghệ thông tin, giúp người học hiểu rõ nguyên nhân gốc rễ và tác động kinh tế - kỹ thuật của các khiếm khuyết phần mềm.


Nội dung kiến thức cốt lõi

Các chương/chủ đề chính

Nội dung 245 trang của giáo trình được cấu trúc thành 12 bài học chính:

  • Bài 1: Cơ bản về kiểm thử phần mềm (Software Testing): Giới thiệu các khái niệm cơ bản về lỗi phần mềm thông qua các sự cố lịch sử (Disney Lion King 1994, lỗi chia dấu phẩy động Intel Pentium 1994, tàu thám hiểm NASA Mars Polar Lander 1999, hệ thống phòng thủ tên lửa Patriot 1991, sự cố Y2K và virus JPEG 2004). Phân tích bảng phân loại 10 thuật ngữ mô tả lỗi (defect, fault, failure, anomaly, variance, incident, problem, error, bug, inconsistency), 5 quy tắc xác định lỗi phần mềm, quy luật chi phí sửa lỗi tăng theo hàm logarit và vai trò, phẩm chất của kiểm thử viên.
  • Bài 2: Quy trình phát triển phần mềm: Phân tích các mô hình phát triển phần mềm (big-bang, code-and-fix, waterfall, spiral); các thành phần cấu thành sản phẩm phần mềm (yêu cầu khách hàng, bản đặc tả, kế hoạch tiến độ Gantt, tài liệu thiết kế như sơ đồ kiến trúc, sơ đồ luồng dữ liệu DFD, sơ đồ chuyển trạng thái, lưu đồ giải thuật, mã nguồn có chú giải); bộ tài liệu bàn giao kiểm thử (test plan, test case list, bug report); và các thành phần phi mã nguồn (non-software components) như tệp trợ giúp, tài liệu hướng dẫn, thông báo lỗi hệ thống, nhãn sản phẩm, tệp cài đặt.
  • Phần Thực trạng kiểm thử và Các định nghĩa thuật ngữ: Trình bày các phương châm kiểm thử thực tế (tính bất khả thi của việc kiểm thử vét cạn 100% qua ví dụ phần mềm Windows Calculator; kiểm thử dựa trên rủi ro; hiện tượng Pesticide Paradox do Boris Beizer công bố năm 1990); phân biệt các cặp khái niệm nền tảng: Precision (độ tập trung) và Accuracy (độ chính xác), Verification (sự kiểm tra) và Validation (sự xác nhận - minh chứng qua sự cố Kính thiên văn không gian Hubble 1990), Quality (chất lượng) và Reliability (độ tin cậy); cùng cấu trúc Mô hình chữ V (V-Model).
  • Bài 3 & Bài 4: Các phương pháp và kỹ thuật kiểm thử: Phân tích phương pháp kiểm thử tĩnh (Static Testing: quy trình 6 bước của Thanh tra/Inspection và quy trình 6 bước của Duyệt/Review; kiểm thử tĩnh đặc tả) và kiểm thử động (Dynamic Testing: quy trình 8 bước, kiểm thử chức năng, cấu trúc, thống kê). Phân tích kỹ thuật kiểm thử hộp trắng (White-box Testing: phân tích đường dẫn điều khiển, đồ thị dòng $V(G)$, xác định tập đường độc lập tuyến tính qua ví dụ thủ tục average()) và kiểm thử hộp đen (Black-box Testing: phân tích giá trị biên, phân vùng tương đương, kiểm tra miền).
  • Bài 5 & Bài 6: Các vấn đề và giai đoạn kiểm thử: Khảo sát chi tiết các dạng kiểm thử chuyên biệt: kiểm thử cấu hình phần cứng (Hardware Configuration), kiểm thử độ tương thích, kiểm thử đa ngôn ngữ/quốc tế hóa (Foreign-Language Testing), kiểm thử tính khả dụng (Usability Testing), kiểm thử tài liệu và kiểm thử an toàn/bảo mật. Phân định các giai đoạn kiểm thử trong vòng đời phần mềm.
  • Bài 7, Bài 8 & Bài 9: Quy trình kiểm tra hệ thống, thiết kế và báo cáo: Khảo sát mô hình trưởng thành kiểm thử TMM (Testing Maturity Model), quy trình lập kế hoạch kiểm thử hệ thống (Test Planning), kỹ thuật đặc tả và theo dõi ca kiểm thử (Test Cases), quy trình thực thi kiểm thử, lập biên bản báo cáo lỗi (Bug Reports) và đánh giá chất lượng sản phẩm.
  • Bài 10, Bài 11 & Bài 12: Kiểm thử tự động, kiểm thử hướng đối tượng và bài tập: Phân tích vai trò của kiểm thử tự động hóa, giới thiệu các công cụ công nghiệp như chương trình quản lý lỗi TestTrack Pro (Version 6), công cụ kiểm tra tải và hiệu năng HP/Mercury LoadRunner (Version 8); thảo luận chuyên đề về kiểm thử trong môi trường lập trình hướng đối tượng và cung cấp hệ thống bài tập tình huống thực hành.
+-----------------------------------------------------------------------------------+
|                           CẤU TRÚC NỘI DUNG GIÁO TRÌNH                            |
+-----------------------------------------------------------------------------------+
| [Bài 1 - 2]   Nền tảng kiểm thử & Quy trình phần mềm (Khái niệm, Bug, Chi phí)   |
| [Phần mở rộng] Thực trạng & Thuật ngữ cốt lõi (V-Model, Precision vs Accuracy)     |
| [Bài 3 - 4]   Phương pháp & Kỹ thuật kiểm thử (Tĩnh/Động, Hộp trắng/Hộp đen)      |
| [Bài 5 - 6]   Các dạng kiểm thử chuyên biệt & Giai đoạn kiểm thử                  |
| [Bài 7 - 9]   Quản lý quy trình kiểm thử (Mô hình TMM, Test Plan, Bug Report)     |
| [Bài 10 - 12] Tự động hóa, Kiểm thử hướng đối tượng & Bài tập thực hành           |
+-----------------------------------------------------------------------------------+

Kiến thức nền tảng được xây dựng

Giáo trình hình thành nền tảng lý thuyết kiểm thử thông qua:

  • 5 quy tắc chuẩn nhận diện lỗi phần mềm: (1) Phần mềm không thực hiện đúng đặc tả; (2) Phần mềm thực hiện điều đặc tả cấm; (3) Phần mềm thực hiện chức năng không được đề cập; (4) Phần mềm không thực hiện điều không được đề cập nhưng nên có; (5) Phần mềm khó hiểu, khó sử dụng, hoạt động chậm dưới đánh giá của kiểm thử viên.
  • Nguyên lý đo lường chất lượng và quy trình: Phân định ranh giới giữa kiểm thử (Testing - tìm lỗi sớm để sửa) và đảm bảo chất lượng (QA - thiết lập quy trình ngăn ngừa lỗi); cơ chế hoạt động của mô hình chữ V gắn kết từng giai đoạn phát triển với mức độ kiểm thử tương ứng; và mô hình đánh giá độ trưởng thành kiểm thử TMM.
  • Lý thuyết đồ thị và độ phức tạp: Ứng dụng lý thuyết đồ thị luồng điều khiển để tính toán độ phức tạp chu trình $V(G)$, từ đó xác định các đường thực thi độc lập tuyến tính phục vụ kiểm thử cấu trúc.

Kỹ năng phát triển

  • Kỹ năng kỹ thuật: Thiết kế bộ kịch bản kiểm thử tĩnh trên tài liệu đặc tả; thiết kế ca kiểm thử hộp trắng (bao phủ câu lệnh, bao phủ nhánh/đường dẫn) và hộp đen (phân vùng tương đương, giá trị biên); vận hành công cụ quản lý lỗi (TestTrack Pro) và công cụ kiểm thử hiệu năng (LoadRunner).
  • Kỹ năng phân tích: Đánh giá mức độ rủi ro để tối ưu hóa số lượng ca kiểm thử; phân tích nguyên nhân sai hỏng của hệ thống; thẩm định tính nhất quán của tài liệu yêu cầu.
  • Kỹ năng thực hành quy trình: Soạn thảo kế hoạch kiểm thử (Test Plan), lập bảng đặc tả ca kiểm thử (Test Case Specifications), viết báo cáo lỗi chuẩn mực (Defect/Bug Reports) và thực hiện thẩm tra/duyệt mã nguồn theo nhóm.

Phương pháp giảng dạy và học tập

Giáo trình áp dụng mô hình sư phạm kết hợp giữa diễn giải quy chuẩn kỹ thuật và phân tích ca nghiên cứu thực tế (Case-Based Learning). Việc đưa các sự cố phần mềm trong thực tế (như lỗi tích lũy sai số thời gian của hệ thống Patriot sau 14 giờ hoạt động dẫn đến tử vong 28 binh sĩ, hay lỗi thiết lập bit công tắc tiếp xúc gây rơi vỡ tàu Mars Polar Lander ở độ cao 1.800m) làm điểm xuất phát cho bài học giúp người học tiếp cận bản chất của kiểm thử từ góc độ kỹ thuật thực tế thay vì lý thuyết thuần túy.

Hệ thống bài tập và thực hành trong giáo trình được chia thành hai dạng chính:

  • Bài tập phân tích logic và cấu trúc: Thực hành vẽ sơ đồ luồng điều khiển, tính toán $V(G)$ và lập tập ca kiểm thử độc lập cho các hàm lập trình cụ thể (như hàm mẫu average()).
  • Bài tập tình huống kiểm thử đặc tả: Thực hành nhận diện lỗi tĩnh trên các bản đặc tả mẫu của ứng dụng (như phân tích các tình huống ngoại lệ, phím tắt, giao diện trên phần mềm Windows Calculator).

Phương pháp đánh giá kết quả học tập tập trung vào việc thẩm định các sản phẩm bàn giao kiểm thử của sinh viên, bao gồm: Kế hoạch kiểm thử, bảng thiết kế ca kiểm thử, nhật ký thực thi và báo cáo phân loại mức độ nghiêm trọng của lỗi.

Về mặt tự học, giáo trình định hướng người học tự rèn luyện phương pháp kiểm thử tĩnh trên tài liệu trước khi can thiệp vào mã nguồn, tuân thủ nguyên lý kiểm thử theo rủi ro và áp dụng cơ chế đánh giá chéo giữa các thành viên thông qua quy trình thanh tra (Inspection) và duyệt (Review).


Điểm nổi bật và cập nhật

  • Hệ thống hóa nguyên nhân sự cố thông qua Case Studies lịch sử: Giáo trình phân tích cụ thể các bài học kinh nghiệm từ các thảm họa phần mềm thực tế (sự cố game The Lion King của Disney năm 1994 do không kiểm thử trên cấu hình máy tính phổ biến của người dùng; lỗi chia dấu phẩy động Pentium làm Intel tiêu tốn hơn 400 triệu USD chi phí thu hồi; sự cố Y2K bắt nguồn từ kỹ thuật lưu trữ năm 2 chữ số trong hệ thống tính lương thập niên 1970).
  • Tiếp cận toàn diện về cấu trúc sản phẩm phần mềm: Giáo trình không giới hạn đối tượng kiểm thử ở mã nguồn (code) mà mở rộng ra toàn bộ các thành phần cấu thành sản phẩm phần mềm (deliverables), bao gồm tài liệu kiến trúc, sơ đồ DFD, sơ đồ chuyển trạng thái, hệ thống thông báo lỗi (error messages), tài liệu trợ giúp (help files), hướng dẫn sử dụng và gói cài đặt.
  • Cập nhật kiến thức công cụ công nghiệp: Nội dung giáo trình tích hợp hướng dẫn về công cụ quản lý quy trình kiểm thử và theo dõi lỗi chuyên dụng TestTrack Pro (Version 6), cùng công cụ kiểm thử hiệu năng/tải LoadRunner (Version 8).
  • Định hình tư duy kỷ luật nghề nghiệp: Tài liệu làm rõ vị trí của nghề kiểm thử phần mềm trong ngành công nghiệp hiện đại, đặt ra các tiêu chuẩn nghề nghiệp về tính khách quan, khả năng giao tiếp kỹ thuật, phương pháp xử lý bất đồng giữa lập trình viên và kiểm thử viên, loại bỏ các mô hình phát triển thiếu kiểm soát như code-and-fix hay big-bang.

Đối tượng sử dụng giáo trình

  • Sinh viên: Giáo trình được biên soạn chuyên biệt cho sinh viên đại học năm thứ 3 hoặc năm thứ 4 thuộc các ngành Công nghệ Thông tin, Kỹ thuật Phần mềm, Hệ thống Thông tin, Khoa học Máy tính.
  • Yêu cầu kiến thức tiên quyết (Prerequisites): Người học cần hoàn thành các học phần cơ sở ngành bao gồm: Kỹ thuật lập trình (ngôn ngữ C/C++, Java hoặc tương đương), Cấu trúc dữ liệu và giải thuật, Cơ sở dữ liệu và Nhập môn Kỹ thuật phần mềm (nắm vững các khái niệm về vòng đời phát triển phần mềm).
  • Giảng viên: Sử dụng giáo trình làm khung tham chiếu chuẩn để biên soạn đề cương bài giảng, thiết kế hệ thống bài tập lớn, đồ án môn học và ngân hàng câu hỏi đánh giá kết thúc học phần.
  • Đối tượng tự học và tham khảo: Kỹ sư kiểm thử phần mềm mới vào nghề (Junior Manual/Automation Tester), kỹ sư đảm bảo chất lượng (QA) hoặc lập trình viên cần tra cứu phương pháp luận thiết kế ca kiểm thử, thuật ngữ chuyên ngành chuẩn hóa và quy trình quản lý lỗi.

Câu hỏi thường gặp

1. Giáo trình này phù hợp với đối tượng nào?

Giáo trình được thiết kế chuẩn cho sinh viên đại học chuyên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm (năm 3, năm 4) và các kỹ sư kiểm thử phần mềm cần hệ thống hóa phương pháp luận chuyên ngành.

2. Cần trang bị những kiến thức nền tảng nào trước khi học?

Người học cần có kiến thức cơ bản về lập trình (đọc hiểu mã nguồn để thực hiện kiểm thử hộp trắng), cấu trúc dữ liệu, giải thuật và các mô hình vòng đời phát triển phần mềm cơ bản (Waterfall, Spiral).

3. Điểm khác biệt của giáo trình so với các tài liệu thuần lập trình là gì?

Tài liệu không tập trung vào cú pháp viết mã mà tập trung vào tư duy phản biện, phương pháp thẩm định chất lượng, kỹ thuật phân tích lỗi tĩnh/động, các quy tắc nhận diện khiếm khuyết và quy trình quản lý chất lượng theo chuẩn công nghiệp.

4. Làm sao để tự học và áp dụng hiệu quả nội dung giáo trình?

Người học nên kết hợp đọc kỹ lý thuyết với việc thực hành tuần tự: bắt đầu từ kiểm thử tĩnh trên tài liệu đặc tả (như ví dụ Windows Calculator), thiết kế ca kiểm thử hộp trắng cho các hàm thuật toán cụ thể bằng đồ thị luồng $V(G)$, sau đó thực hành sử dụng các công cụ quản lý lỗi và kiểm thử tải.

5. Có những công cụ và tài liệu bổ trợ nào được đề cập trong giáo trình?

Giáo trình giới thiệu và đề cập trực tiếp đến các công cụ công nghiệp như phần mềm theo dõi lỗi TestTrack Pro Version 6, phần mềm kiểm thử tải/hiệu năng LoadRunner Version 8, mô hình trưởng thành kiểm thử TMM và các tài liệu tham khảo kỹ thuật kiểm thử của tác giả Boris Beizer.


Kết luận

Giáo trình Đảm Bảo Chất Lượng Phần Mềm: Hướng Dẫn Kiểm Thử Hiệu Quả của Khoa Công nghệ Thông tin – Trường Đại học Sư phạm Kỹ thuật Hưng Yên là tài liệu học thuật hoàn chỉnh, cung cấp hệ thống tri thức toàn diện về kiểm thử và kiểm soát chất lượng phần mềm. Nội dung giáo trình xây dựng lộ trình học tập chặt chẽ từ lý thuyết nền tảng, phân tích ca sự cố lịch sử, phương pháp thiết kế ca kiểm thử tĩnh/động, đến quy trình quản lý chất lượng hệ thống và ứng dụng công cụ chuyên dụng. Đây là nguồn học liệu cơ sở quan trọng phục vụ đào tạo đại học và định hình chuẩn mực kỹ thuật cho người học trong lĩnh vực kỹ thuật phần mềm.