Bối cảnh và vấn đề nghiên cứu

Trong xu thế phát triển của ngành công nghệ phần mềm tại Việt Nam và trên thế giới, việc nâng cao chất lượng sản phẩm và tối ưu hóa hiệu suất làm việc trở thành yêu cầu thiết yếu đối với các nhà sản xuất phần mềm. Kiểm thử phần mềm đóng vai trò then chốt trong vòng đời phát triển hệ thống nhằm xác minh sự phù hợp của chương trình đối với đặc tả thiết kế, phát hiện lỗi lập trình và đảm bảo đáp ứng chính xác các yêu cầu của người sử dụng.

Đối với các cơ sở kinh doanh dược phẩm, việc quản lý thủ công thông qua sổ sách truyền thống bộc lộ nhiều bất cập như tốn thời gian, dễ xảy ra sai sót trong theo dõi doanh thu, quản lý tồn kho và thông tin khách hàng. Đề tài báo cáo chuyên đề tập trung vào việc nghiên cứu và thực hiện quy trình kiểm thử cho phần mềm Quản lý hiệu thuốc PTS nhằm xây dựng một quy trình kiểm tra chất lượng chặt chẽ, tiết kiệm thời gian và kinh phí tìm kiếm, xử lý lỗi.

Mục tiêu và nhiệm vụ nghiên cứu của đề tài bao gồm:

  1. Tìm hiểu tổng quan về kiểm thử tự động và nghiên cứu bộ công cụ mã nguồn mở Selenium.
  2. Phân tích đặc tả yêu cầu, mô hình hóa các ca sử dụng (Use Case) và biểu đồ hoạt động của hệ thống phần mềm quản lý hiệu thuốc.
  3. Lập kế hoạch kiểm thử (Test Plan) chi tiết bao gồm phạm vi kiểm thử, phân bổ nguồn lực, môi trường và tiêu chí kết thúc kiểm thử.
  4. Xây dựng và thực thi các bộ ca kiểm thử (Test Cases) trên giao diện (GUI) và chức năng (Functional) cho các phân hệ của phần mềm.
  • Đối tượng nghiên cứu: Quy trình kiểm thử phần mềm, công cụ kiểm thử tự động Selenium và hệ thống phần mềm Quản lý hiệu thuốc PTS.
  • Phạm vi nghiên cứu: Đề tài được thực hiện bởi nhóm sinh viên lớp D15CNPM1, chuyên ngành Công nghệ phần mềm, Khoa Công nghệ Thông tin - Trường Đại học Điện Lực trong khuôn khổ học phần Kiểm thử và đảm bảo chất lượng phần mềm, hoàn thành vào tháng 10 năm 2023.

Cơ sở lý thuyết và phương pháp

Khung lý thuyết và công cụ kiểm thử

Đề tài dựa trên nền tảng lý thuyết kiểm thử phần mềm hướng đối tượng và kiểm thử hộp đen (Black-box testing). Công cụ kiểm thử tự động trọng tâm là Selenium – bộ công cụ mã nguồn mở chuyên dụng cho các ứng dụng web với khả năng tương thích đa nền tảng (Windows, Linux, macOS) và hỗ trợ nhiều ngôn ngữ lập trình như Java, PHP, C#, Ruby, Python.

Hệ sinh thái Selenium bao gồm bốn thành phần chính:

  • Selenium IDE: Tiện ích mở rộng (Plugin) tích hợp trên các trình duyệt Chrome, Firefox, Edge, hỗ trợ ghi lại (record) và phát lại (playback) các thao tác của người dùng.
  • Selenium RC (Remote Control): Hệ thống máy chủ trung gian khởi chạy và tương tác với trình duyệt web.
  • Selenium WebDriver: Giao thức điều khiển trực tiếp trình duyệt mà không cần thông qua server trung gian.
  • Selenium Grid: Hệ thống phân phối hỗ trợ thực thi song song các kịch bản kiểm thử trên nhiều máy và trình duyệt khác nhau.

Phương pháp nghiên cứu

  • Phương pháp phân tích và mô hình hóa hệ thống: Sử dụng ngôn ngữ mô hình hóa UML để xây dựng biểu đồ Use Case tổng quát, các biểu đồ Use Case chi tiết và biểu đồ hoạt động (Activity Diagram) cho từng chức năng nghiệp vụ.
  • Phương pháp lập kế hoạch kiểm thử (Test Planning): Ước lượng khối lượng công việc theo đơn vị ngày công (man-days), phân định rõ các chức năng cần kiểm thử và không kiểm thử, xác lập tiêu chuẩn dừng kiểm thử.
  • Phương pháp thiết kế ca kiểm thử: Thiết kế ca kiểm thử hộp đen cho giao diện (GUI Testing) và chức năng (Functional Testing), bao gồm cả trường hợp kiểm thử hợp lệ (positive testing) và các trường hợp biên, lỗi, dữ liệu ngoại lệ (negative testing).
  • Phương pháp ghi nhận và quản lý lỗi: Thực thi các ca kiểm thử thủ công kết hợp kịch bản tự động trên Selenium IDE 3.2; sử dụng Microsoft Excel 2019 để theo dõi và kiểm soát trạng thái lỗi.

Thiết kế và triển khai

Hệ thống phần mềm Quản lý hiệu thuốc PTS được xây dựng dựa trên kiến trúc phân tầng với ngăn xếp công nghệ:

  • Frontend: React-Native.
  • Backend: Next.js.

Yêu cầu cấu hình và môi trường kiểm thử

Cấu hình tối thiểu để cài đặt và vận hành công cụ Selenium được nhóm tác giả xác định:

  • Hệ điều hành: Hỗ trợ Microsoft Windows (Windows XP Professional SP2/SP3, Vista, 7, 8, Windows Server 2003/2008/2012, Windows Embedded).
  • Phần cứng: Vi xử lý Intel Core 2 Duo 2.0 GHz trở lên; RAM tối thiểu 2 GB; dung lượng ổ đĩa trống 1 GB; độ phân giải màn hình 1024 × 768 trở lên.
  • Thiết bị phần cứng thực tế triển khai: 1 PC cấu hình RAM $\ge$ 4 GB, CPU xung nhịp 2.7 GHz, sử dụng trình duyệt Google Chrome.

Bảng phân bổ môi trường kiểm thử cho từng mức độ:

STT Tài nguyên Kiểm thử chức năng (Functional) Kiểm thử hệ thống / Tích hợp Kiểm thử bảo mật & Kiểm soát truy cập
1 Phiên bản ứng dụng Chạy trên mã nguồn cục bộ Chạy trên mã nguồn cục bộ Chạy trên mã nguồn cục bộ
2 Cơ sở dữ liệu Cơ sở dữ liệu phát triển Cơ sở dữ liệu thiết lập riêng (MySQL) Cơ sở dữ liệu thiết lập riêng (MySQL)
3 Mạng Mạng cục bộ (Localhost) Mạng Internet Mạng Internet
4 Mô hình máy chủ Cục bộ (Localhost) 1 máy chủ, 1 tên miền (domain) 1 máy chủ, 1 tên miền (domain)

Quy trình kiểm thử tự động trên Selenium IDE

Nhóm nghiên cứu thiết lập quy trình kiểm thử tự động gồm 7 bước:

  1. Mở tiện ích Selenium IDE trên trình duyệt.
  2. Khởi tạo dự án kiểm thử mới (Project).
  3. Nhập đường dẫn URL của trang web cần kiểm thử.
  4. Kích hoạt tính năng Record để hệ thống tự động ghi nhận các thao tác.
  5. Xây dựng các kịch bản kiểm thử (Test Scenarios).
  6. Thiết lập chi tiết các ca kiểm thử (Test Cases).
  7. Thực thi kịch bản và hiển thị báo cáo kết quả.

Nội dung chính theo từng chương

Chương 1: Công cụ kiểm thử tự động

Chương này giới thiệu tổng quan về kiểm thử tự động và công cụ Selenium. Tác giả phân tích các ưu điểm nổi bật của Selenium: mã nguồn mở miễn phí bản quyền, cộng đồng người dùng rộng lớn, hỗ trợ đa ngôn ngữ lập trình và đa hệ điều hành, cho phép thực thi kịch bản ngầm (background execution) giúp tiết kiệm tài nguyên máy tính. Báo cáo cũng chỉ ra hạn chế của công cụ là không hỗ trợ trực tiếp các ứng dụng desktop Windows hay hộp thoại hệ điều hành (yêu cầu tích hợp thêm AutoIt hoặc Coded UI). Nội dung chương cung cấp hướng dẫn cài đặt extension Selenium IDE trên trình duyệt và các bước khởi tạo project kiểm thử chức năng đăng nhập.

Chương 2: Đặc tả phần mềm

Chương 2 mô tả chi tiết bài toán nghiệp vụ của hiệu thuốc PTS và đặc tả các yêu cầu chức năng hệ thống nhằm thay thế phương thức quản lý thủ công bằng sổ sách.

Hệ thống bao gồm các phân hệ chính với luồng sự kiện chi tiết:

  • Chức năng Đăng nhập / Đăng xuất: Phân quyền cho Người quản lý, Dược sĩ và Thực tập sinh. Luồng chính xác thực tài khoản và mật khẩu; luồng phụ thông báo lỗi khi thông tin không chính xác hoặc người dùng hủy thao tác.
  • Chức năng Quản lý bán thuốc: Hỗ trợ tạo đơn thuốc mới, truy vấn thông tin thuốc từ cơ sở dữ liệu, thêm vào danh sách chi tiết hóa đơn tạm thời, kiểm tra số lượng tồn kho và lưu dữ liệu hóa đơn sau khi xác nhận thanh toán.
  • Chức năng Quản lý nhân viên: Cho phép người quản lý thực hiện các tác vụ thêm, sửa, xóa thông tin nhân viên kèm theo các bước kiểm tra tính hợp lệ và xác thực dữ liệu trước khi ghi nhận vào cơ sở dữ liệu.
  • Chức năng Quản lý thuốc: Cung cấp giao diện duy trì danh mục thuốc (thêm, cập nhật, xóa thuốc), kiểm tra dữ liệu trùng lặp và liên kết cơ sở dữ liệu.
  • Chức năng Quản lý khách hàng: Quản lý hồ sơ khách hàng phục vụ công tác chăm sóc và theo dõi lịch sử mua hàng.

Chương 3: Kế hoạch test

Chương 3 trình bày kế hoạch kiểm thử tổng thể, định nghĩa phạm vi, thời gian, công cụ và nguồn lực nhân sự.

Bảng phạm vi kiểm thử và ước lượng công số (Test Scope):

Mã phân hệ Phân hệ kiểm thử Kiểm thử chức năng Kiểm thử tích hợp Bảo mật & Kiểm soát truy cập
1 Quản lý tài khoản 5 man-days 0,5 man-days 0,5 man-days
2 Quản lý sản phẩm 5 man-days 0,5 man-days 0,5 man-days
3 Quản lý hệ thống nhà thuốc 5 man-days 0,5 man-days 0,5 man-days
4 Quản lý giỏ hàng 5 man-days 0,5 man-days 0,5 man-days

Chương này cũng phân tích các nguy cơ lỗi thường gặp khi người dùng thao tác dữ liệu (nhập mã độc, nhập sai định dạng, vượt quá giới hạn ký tự, nhập khoảng trắng, gián đoạn kết nối mạng, tải tệp ảnh không hợp lệ, lỗi câu lệnh truy vấn cơ sở dữ liệu). Đồng thời, kế hoạch xác định 4 tiêu chí dừng quá trình kiểm thử:

  • Hết thời gian triển khai dự án theo tiến độ.
  • Hết nguồn kinh phí dự toán.
  • Dự án bị đình trệ quá lâu, giá trị sản phẩm không còn bù đắp được chi phí.
  • Sản phẩm hoàn thiện, vượt qua tất cả các tiêu chí chất lượng thỏa thuận.

Phân công vai trò nhân sự trong nhóm:

  • Phạm Thái Sơn (Test Manager): Quản lý hoạt động kiểm thử, hướng dẫn kỹ thuật, phân phối nguồn lực, lập báo cáo quản lý và báo cáo chất lượng sản phẩm.
  • Phạm Trung Đức (Test Designer): Xác định chiến lược tiếp cận kiểm thử, thiết kế và soạn thảo toàn bộ các bộ ca kiểm thử.
  • Nguyễn Bá Hoàng Sơn (Tester): Hiện thực hóa kịch bản kiểm thử, chạy các bộ kiểm thử (test suites), ghi nhận kết quả và lập báo cáo lỗi.

Chương 4: Xây dựng và thực hiện các test case

Chương 4 cung cấp chi tiết các ca kiểm thử được thiết kế và thực thi thực tế cho giao diện và chức năng của hệ thống.

  1. Bộ ca kiểm thử Giao diện (GUI Testing):

    • Kiểm tra bố cục, màu sắc, kích thước các nút bấm và ô nhập liệu cân đối theo thiết kế.
    • Kiểm tra tính tương thích hiển thị: khi thu nhỏ cửa sổ trình duyệt xuống một nửa, khung đăng nhập/đăng ký tự động co giãn và giữ vị trí trung tâm màn hình.
    • Kiểm tra khả năng thao tác thanh cuộn (scroll bar), các tổ hợp phím sao chép/dán (Ctrl+C, Ctrl+V), tính năng xóa ký tự đã nhập.
    • Kiểm tra hiệu ứng hover (nút đăng nhập đổi màu vàng khi di chuột).
    • Kiểm tra bảo mật form: xác nhận không có tài khoản mật khẩu mặc định của quản trị viên lưu sẵn; kiểm tra việc ngăn chặn người dùng xem mã nguồn trang qua phím F12 hoặc tổ hợp Ctrl+U.
  2. Bộ ca kiểm thử Chức năng (Functional Testing):

    • Thiết lập các bộ dữ liệu kiểm thử (Test Data) cho trường hợp để trống tài khoản, để trống mật khẩu, nhập sai số điện thoại hoặc mật khẩu, nhập số điện thoại vượt quá độ dài chuẩn (trên 10 chữ số).
    • Kiểm thử quy trình đăng ký: xác thực điều khoản dịch vụ, kiểm tra cơ chế chống trùng lặp số điện thoại đã tồn tại, và quy trình gửi mã xác thực gồm 4 chữ số qua tin nhắn điện thoại để hoàn tất đăng ký.

Kết quả và đóng góp

Kết quả thực nghiệm kiểm thử

Nhóm tác giả đã thực thi các ca kiểm thử và ghi nhận kết quả chi tiết trong báo cáo:

Bảng trích xuất kết quả thực thi một số ca kiểm thử chức năng tiêu biểu:

Mã TC Phân hệ Dữ liệu kiểm thử Các bước thực hiện Kết quả mong đợi Kết quả thực tế Người thực hiện
1 Đăng nhập Tài khoản: để trống
Mật khẩu: x
1. Không nhập tài khoản
2. Nhấn nút Đăng nhập
Hiển thị: "Thông tin này là bắt buộc. Vui lòng nhập đầy đủ." Pass Phạm Trung Đức
2 Đăng nhập Tài khoản: x
Mật khẩu: để trống
1. Không nhập mật khẩu
2. Nhấn nút Đăng nhập
Hiển thị: "Thông tin này là bắt buộc. Vui lòng nhập đầy đủ." Pass Phạm Trung Đức
4 Đăng nhập Tài khoản: 0332645585
Mật khẩu: để trống
1. Nhập đúng tài khoản
2. Bỏ trống mật khẩu
3. Nhấn nút Đăng nhập
Hiển thị: "Thông tin này là bắt buộc. Vui lòng nhập đầy đủ." Failed Phạm Trung Đức
5 Đăng nhập Tài khoản: 0332645585
Mật khẩu: đúng
1. Nhập đúng tài khoản và mật khẩu
2. Nhấn nút Đăng nhập
Hiển thị: "Đăng nhập thành công" Pass Phạm Trung Đức
6 Đăng nhập Tài khoản: 0332645586
Mật khẩu: 123456789
1. Nhập sai tài khoản
2. Nhập đúng mật khẩu
3. Nhấn nút Đăng nhập
Hiển thị: "Số điện thoại hoặc mật khẩu không chính xác, vui lòng thử lại." Failed Phạm Trung Đức
8 Đăng nhập Tài khoản: >10 số
Mật khẩu: đúng
1. Nhập tài khoản nhiều hơn 10 chữ số
2. Nhấn nút Đăng nhập
Hiển thị: "Số điện thoại không hợp lệ, vui lòng thử lại." Pass Phạm Trung Đức
1 Đăng ký Tài khoản: để trống 1. Không nhập tài khoản
2. Tích "Tôi đồng ý"
3. Nhấn Đăng ký
Hiển thị: "Thông tin này là bắt buộc. Vui lòng nhập đầy đủ." Pass Phạm Trung Đức
4 Đăng ký Tài khoản: 0332645585 1. Nhập đúng tài khoản
2. Tích điều khoản
3. Nhấn Đăng ký
Nhập 4 chữ số gửi qua số điện thoại để hoàn tất Pass Phạm Trung Đức
5 Đăng ký Tài khoản: đã tồn tại 1. Nhập tài khoản đã đăng ký
2. Nhấn Đăng ký
Hiển thị: "Số điện thoại đã tồn tại." Pass Phạm Trung Đức

Đối với phần kiểm thử giao diện (GUI), đa số các ca kiểm tra vị trí hiển thị, thanh cuộn, hiệu ứng hover, co giãn màn hình đều đạt kết quả Pass. Riêng ca kiểm thử số 7 (kiểm tra tính năng chặn tổ hợp phím Ctrl+U và phím F12 để chống xem mã nguồn) ghi nhận kết quả No pass.

Đóng góp của đề tài

  1. Xây dựng tài liệu đặc tả yêu cầu và hệ thống biểu đồ UML hoàn chỉnh cho bài toán quản lý hiệu thuốc.
  2. Hoàn thiện một bản kế hoạch kiểm thử phần mềm chuẩn hóa với phân công trách nhiệm rõ ràng, bảng ước lượng công số chi tiết cho từng loại hình kiểm thử.
  3. Thiết kế bộ kịch bản kiểm thử bao quát nhiều trường hợp ngoại lệ trên giao diện web và kiểm thử chức năng, làm cơ sở đảm bảo chất lượng hệ thống trước khi vận hành thực tế.

Hạn chế và hướng nghiên cứu tiếp

  • Hạn chế:
    • Do giới hạn về thời gian và kinh nghiệm thực tế của nhóm sinh viên, việc kiểm thử tự động chủ yếu mới áp dụng trên công cụ Selenium IDE cho một số luồng cơ bản.
    • Một số ca kiểm thử chức năng ghi nhận lỗi (Failed) trong quá trình xử lý thông báo ngoại lệ (như ca kiểm thử số 4 và số 6 ở chức năng đăng nhập).
    • Công cụ Selenium chỉ hỗ trợ ứng dụng nền tảng trình duyệt web, chưa mở rộng kiểm thử tự động trực tiếp trên các ứng dụng desktop hoặc các hộp thoại hệ thống Windows.
  • Hướng phát triển:
    • Nâng cấp kịch bản kiểm thử tự động sang sử dụng Selenium WebDriver và viết mã nguồn kiểm thử chuyên sâu bằng các ngôn ngữ như Java hoặc Python.
    • Tích hợp thêm các thư viện hỗ trợ như AutoIt để kiểm thử toàn diện các tác vụ liên quan đến hệ điều hành và hộp thoại tải lên/tải xuống tệp tin.
    • Mở rộng phạm vi kiểm thử hiệu năng tải trang, kiểm thử áp lực và kiểm thử bảo mật nâng cao cho toàn bộ hệ thống cơ sở dữ liệu MySQL.

Giá trị tham khảo

Tài liệu báo cáo chuyên đề này mang lại giá trị tham khảo thiết thực cho:

  • Sinh viên ngành Công nghệ thông tin và Công nghệ phần mềm: Nắm bắt phương pháp xây dựng một bản báo cáo chuyên đề học phần Kiểm thử và Đảm bảo chất lượng phần mềm theo đúng cấu trúc chuẩn.
  • Kiểm thử viên (Tester) mới bắt đầu: Tham khảo cách lập bảng kế hoạch kiểm thử (Test Plan), bảng ma trận phạm vi kiểm thử (Test Scope theo man-days), cách phân chia vai trò nhân sự trong dự án kiểm thử.
  • Các nhóm phát triển đồ án: Tham khảo mẫu thiết kế Test Case chi tiết cho kiểm thử giao diện (GUI) và kiểm thử chức năng (Functional), cùng phương pháp ứng dụng Selenium IDE trong kiểm thử tự động ứng dụng web.

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

1. Phần mềm Quản lý hiệu thuốc PTS được xây dựng bằng những công nghệ lập trình nào?
Theo tài liệu đặc tả, hệ thống phần mềm được xây dựng với phần giao diện người dùng (Frontend) sử dụng React-Native và phần máy chủ xử lý dữ liệu (Backend) sử dụng Next.js.

2. Nhóm tác giả đã sử dụng những công cụ nào để phục vụ công tác kiểm thử và quản lý lỗi?
Nhóm nghiên cứu sử dụng công cụ mã nguồn mở Selenium IDE phiên bản 3.2 để thực hiện các kịch bản kiểm thử tự động trên trình duyệt web, và sử dụng Microsoft Excel phiên bản 2019 để ghi chép, theo dõi và kiểm soát trạng thái các lỗi phần mềm.

3. Cơ cấu tổ chức và phân công nhân lực trong dự án kiểm thử được thiết lập như thế nào?
Dự án được phân bổ cho ba thành viên với các trách nhiệm cụ thể: Phạm Thái Sơn đảm nhận vai trò Test Manager (quản lý, phân bổ nguồn lực, báo cáo); Phạm Trung Đức đảm nhận vai trò Test Designer (định nghĩa phương pháp, viết bộ test case); Nguyễn Bá Hoàng Sơn đảm nhận vai trò Tester (hiện thực, chạy test suites, ghi nhận kết quả).

4. Báo cáo xác định các điều kiện nào để dừng quá trình kiểm thử phần mềm?
Quá trình kiểm thử được quy định sẽ dừng lại khi thỏa mãn một trong bốn điều kiện: hết thời gian triển khai dự án; hết nguồn kinh phí; dự án bị chậm tiến độ quá lâu khiến giá trị sản phẩm không còn tương xứng với chi phí bỏ ra; hoặc sản phẩm đã hoàn thành và đáp ứng đầy đủ các tiêu chuẩn chất lượng đã thỏa thuận.

5. Các bước thực hiện một kịch bản kiểm thử tự động trên Selenium IDE bao gồm những gì?
Quy trình gồm 7 bước: (1) Mở phần mềm Selenium IDE; (2) Tạo dự án mới; (3) Nhập đường dẫn website cần kiểm thử; (4) Nhấn nút Record để bắt đầu ghi thao tác; (5) Thiết lập kịch bản; (6) Tạo các ca kiểm thử; (7) Chạy kiểm thử và hiển thị kết quả.


Kết luận

Báo cáo chuyên đề học phần "Kiểm thử phần mềm Quản lý hiệu thuốc PTS" của nhóm sinh viên Trường Đại học Điện Lực đã hệ thống hóa đầy đủ cơ sở lý thuyết về kiểm thử phần mềm và ứng dụng công cụ tự động hóa Selenium. Nhóm tác giả đã hoàn thành việc đặc tả yêu cầu nghiệp vụ, xây dựng kế hoạch kiểm thử với bảng phân bổ nguồn lực chi tiết và thực thi các bộ ca kiểm thử thực tế trên giao diện và chức năng của hệ thống. Đây là tài liệu thực hành có giá trị tham khảo rõ ràng cho sinh viên và người học chuyên ngành Công nghệ phần mềm khi tiếp cận quy trình kiểm thử và đảm bảo chất lượng ứng dụng.