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

Khóa luận tốt nghiệp "Xây dựng các ca kiểm thử cho phần mềm Quản lý quan hệ khách hàng NinaCRM của công ty TNHH Ninasoft" do sinh viên Nguyễn Thị Hạnh (lớp K56S1, mã sinh viên 20D190013) thực hiện dưới sự hướng dẫn của TS. Lê Việt Hà tại Khoa Hệ thống thông tin kinh tế và Thương mại điện tử, Trường Đại học Thương mại vào tháng 11 năm 2023.

Bối cảnh thực tiễn của đề tài bắt nguồn từ nhu cầu đảm bảo chất lượng phần mềm trong quá trình ứng dụng công nghệ thông tin vào hoạt động kinh doanh. Công ty TNHH Ninasoft là doanh nghiệp chuyên cung cấp các giải pháp phần mềm tùy chỉnh, đang trong giai đoạn hoàn thiện sản phẩm phần mềm Quản lý quan hệ khách hàng (NinaCRM) chạy trên nền tảng điện toán đám mây. Để hạn chế tối đa các lỗi phần mềm phát sinh trước khi phát hành chính thức, việc kiểm thử đóng vai trò trọng yếu nhằm phát hiện khiếm khuyết, tiết kiệm chi phí sửa lỗi và nâng cao trải nghiệm của người dùng.

Mục tiêu nghiên cứu:

  • Mục tiêu chung: Xây dựng các ca kiểm thử nhằm hoàn thiện phần mềm Quản lý quan hệ khách hàng (NinaCRM) của Công ty TNHH Ninasoft.
  • Mục tiêu cụ thể (được đánh số theo văn bản):
    1. Hệ thống hóa cơ sở lý luận về hoạt động kiểm thử phần mềm.
    2. Tổng quan tình hình nghiên cứu trong nước và quốc tế liên quan đến kiểm thử phần mềm.
    3. Phân tích thực trạng quá trình kiểm thử phần mềm tại Công ty TNHH Ninasoft.
    4. Đánh giá thực trạng hoạt động kiểm thử phần mềm Quản lý quan hệ khách hàng NinaCRM.
    5. Đề xuất giải pháp: Xây dựng các ca kiểm thử cho phần mềm Quản lý quan hệ khách hàng NinaCRM (bao gồm kiểm thử thủ công và kiểm thử tự động).

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Các ca kiểm thử (test cases) trong phần mềm Quản lý quan hệ khách hàng NinaCRM của Công ty TNHH Ninasoft.
  • Phạm vi không gian: Thực hiện tại Công ty TNHH Ninasoft (Địa chỉ: Số 3 ngõ 23 đường Xuân Thủy, Phường Dịch Vọng Hậu, Quận Cầu Giấy, TP. Hà Nội).
  • Phạm vi thời gian: Thu thập số liệu hoạt động kinh doanh giai đoạn 2020 – 2022 và khảo sát thực trạng quy trình kỹ thuật tại công ty tính đến tháng 11 năm 2023.

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

Khóa luận sử dụng khung lý thuyết chuẩn hóa về công nghệ phần mềm và quy trình kiểm thử phần mềm theo các tiêu chuẩn của Hội đồng kiểm định kiểm thử phần mềm quốc tế (ISTQB):

  • Khái niệm và quy trình phát triển phần mềm: Vòng đời phát triển phần mềm bao gồm 5 giai đoạn chính: Phân tích yêu cầu và tài liệu đặc tả (Requirements) $\rightarrow$ Thiết kế (Design) $\rightarrow$ Lập trình (Coding) $\rightarrow$ Kiểm thử (Testing) $\rightarrow$ Triển khai (Release).
  • Các phương pháp kiểm thử phần mềm: Kiểm thử hộp trắng (White box testing), kiểm thử hộp đen (Black box testing) và kiểm thử hộp xám (Grey box testing).
  • Các cấp độ kiểm thử: Kiểm thử đơn vị (Unit testing), kiểm thử tích hợp (Integration testing gồm kiểm thử tích hợp thành phần và tích hợp hệ thống), kiểm thử hệ thống (System testing) và kiểm thử chấp nhận (Acceptance testing gồm Alpha testing và Beta testing).
  • Quy trình kiểm thử 5 bước: (1) Lập kế hoạch và kiểm soát; (2) Phân tích và thiết kế; (3) Thực hiện kiểm thử; (4) Đánh giá và báo cáo; (5) Hoàn tất kiểm thử.
  • Kỹ thuật thiết kế ca kiểm thử hộp đen: Phân vùng tương đương (Equivalence Partitioning), phân tích giá trị biên (Boundary Value Analysis), bảng quyết định (Decision Table) và đoán lỗi (Error Guessing).
  • Công cụ hỗ trợ kiểm thử: Ninasoft Insight (hệ thống quản lý lỗi và dự án nội bộ của Ninasoft), Postman (kiểm thử API), Selenium IDE (kiểm thử tự động trên nền tảng web) và Snagit (ghi nhận màn hình phục vụ log bug).

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

  • Phương pháp nghiên cứu định tính kết hợp phương pháp phát triển hệ thống thông tin kinh tế: Thu thập yêu cầu người dùng, phân tích quy trình nghiệp vụ và đánh giá hiệu năng hệ thống thông qua kiểm thử thực tế.
  • Phương pháp thu thập dữ liệu thứ cấp: Tổng hợp từ website công ty, báo cáo tài chính thường niên giai đoạn 2020 – 2022, tài liệu đặc tả yêu cầu phần mềm (SRS) và tài liệu quy trình kiểm thử nội bộ của Ninasoft.
  • Phương pháp thu thập dữ liệu sơ cấp: Thực hiện phỏng vấn trực tiếp nhân viên và đội ngũ kỹ thuật thông qua bộ câu hỏi gồm 11 câu khảo sát chi tiết về kiến trúc hệ thống, quy trình kiểm thử, công cụ sử dụng và các khó khăn thực tế; kết hợp quan sát trực tiếp quy trình kiểm thử tại doanh nghiệp.
  • Phương pháp xử lý dữ liệu: Sử dụng phần mềm soạn thảo và bảng biểu để phân loại, tổng hợp dữ liệu phỏng vấn, từ đó thiết kế kịch bản kiểm thử tương ứng.

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

Chương 1: Cơ sở lý luận về hoạt động kiểm thử phần mềm Quản lý quan hệ khách hàng NinaCRM của công ty TNHH Ninasoft

Chương 1 hệ thống hóa toàn bộ các định nghĩa học thuật về phần mềm, vai trò của kiểm thử, cấu trúc của một ca kiểm thử (mã test case, tên, mục tiêu, các bước thực hiện, kết quả mong đợi, kết quả thực tế) và kế hoạch kiểm thử (Test plan). Tác giả so sánh chi tiết giữa kiểm thử thủ công (Manual Testing) và kiểm thử tự động (Automation Testing), đồng thời phân tích ưu nhược điểm của 4 kỹ thuật thiết kế ca kiểm thử hộp đen:

Kỹ thuật kiểm thử Ưu điểm Nhược điểm
Phân vùng tương đương Tiết kiệm thời gian thiết kế và thực thi do chỉ cần kiểm tra các phần tử đại diện của mỗi phân vùng mà vẫn đảm bảo độ bao phủ. Không áp dụng được cho mọi bài toán; có nguy cơ bỏ sót lỗi ở biên nếu chỉ chọn giá trị nằm giữa vùng tương đương.
Phân tích giá trị biên Tiết kiệm thời gian; tập trung kiểm tra vùng biên dữ liệu đầu vào - nơi có xác suất ẩn chứa lỗi kỹ thuật cao nhất. Chỉ đạt hiệu quả cao khi các miền giá trị đầu vào là hữu hạn và độc lập với nhau.
Bảng quyết định Xử lý hiệu quả các tổ hợp điều kiện phức tạp; đảm bảo bao phủ đầy đủ các quy tắc nghiệp vụ. Số lượng giá trị đầu vào càng nhiều thì bảng quyết định càng trở nên cồng kềnh, phức tạp.
Đoán lỗi Tiết kiệm thời gian và phát huy tối đa trực giác, kinh nghiệm thực tế của kiểm thử viên đối với các vùng lỗi tiềm ẩn. Phụ thuộc hoàn toàn vào kinh nghiệm cá nhân của tester; tính hệ thống không cao, dễ gây mất thời gian nếu đoán lan man.

Phần tổng quan tình hình nghiên cứu điểm qua các công trình trong nước (luận văn thạc sĩ của Đinh Thị Thiên Anh năm 2011 về kiểm thử bảo mật web; luận án của Bùi Quang Công năm 2000 về kiểm thử SCM; bộ sách dịch "Kiểm thử các ứng dụng Web" của nhóm tác giả Hung Q. Nguyen, Bob Johnson, Michael Hackett do ĐHQG-HCM và LogiGear phối hợp xuất bản) và các tài liệu kinh điển quốc tế ("Testing Computer Software" của Cem Kaner năm 1987; "Bug Advocacy" của Cem Kaner và Rebecca Fiedler; "Introduction to Software Testing" của Paul Ammann năm 2008).

Chương 2: Kết quả phân tích, đánh giá thực trạng kiểm thử phần mềm Quản lý quan hệ khách hàng NinaCRM của công ty TNHH Ninasoft

Chương 2 trình bày tổng quan về Công ty TNHH Ninasoft (thành lập ngày 02/10/2017, Giám đốc: Nguyễn Duy Tiến, quy mô 50 nhân viên). Kết quả hoạt động kinh doanh giai đoạn 2020 – 2022 được ghi nhận qua bảng số liệu tài chính của công ty:

Tiêu chí Năm 2020 Năm 2021 Năm 2022
Tổng doanh thu 62.000 Giảm sâu Tăng trưởng trở lại
Tổng chi phí 55.000 - -
Lợi nhuận trước thuế 6.000 - -
Lợi nhuận sau thuế 6.000 - Tăng trưởng trở lại

(Ghi chú: Đơn vị theo báo cáo tài chính trích dẫn trong văn bản là VNĐ).

Cơ cấu tổ chức của Ninasoft gồm 8 bộ phận chức năng với tổng số 50 nhân sự:

Phòng ban Số lượng nhân sự
Giám đốc 1
Phòng Hành chính – Nhân sự 5
Phòng Kế toán 5
Phòng Marketing 5
Phòng Kinh doanh (Sale) 10
Phòng Công nghệ 15
Phòng Phát triển sản phẩm 5
Phòng Kiểm thử sản phẩm (Tester) 5

Về hạ tầng công nghệ thông tin:

  • Phần cứng: 2 máy chủ (Intel Server Board, CPU Intel Xeon, RAM 16GB), 50 máy tính để bàn (HP, DELL, ASUS), 1 máy chiếu Epson EB-E500, 2 máy in Brother HL-L2321D, 1 máy photo Ricoh Aficio MP 3351, mạng Internet FPT băng thông tối thiểu 150Mbps kết nối mạng cục bộ LAN.
  • Phần mềm & CSDL: Bộ công cụ văn phòng Microsoft Office, MISA SME, NinaERP, BKAV Pro, Kaspersky; hệ quản trị cơ sở dữ liệu SQL Server phân quyền theo tài khoản người dùng.
  • Thực trạng hoạt động kiểm thử: Kết quả khảo sát 11 câu hỏi phỏng vấn cho thấy công ty tổ chức kiểm thử theo hình thức Alpha testing trong môi trường nội bộ. Bộ phận kiểm thử chia làm 2 mảng (kiểm thử thủ công và kiểm thử tự động). Quy trình chính là đối chiếu tài liệu SRS, lập test case, nhận bản build từ lập trình viên, thực thi kiểm thử và ghi nhận lỗi lên công cụ quản lý Ninasoft Insight.

Đánh giá thực trạng:

  • Ưu điểm: Được trang bị cơ sở hạ tầng CNTT đầy đủ; mạng LAN ổn định; đội ngũ kiểm thử 5 người có tư duy phân tích; có sự phối hợp giữa các phòng ban.
  • Nhược điểm: Hiệu suất kiểm thử chưa tối ưu; việc vận dụng các kỹ thuật thiết kế test case chưa linh hoạt dẫn đến độ bao phủ chưa triệt để các luồng chức năng và hiệu năng; nhân viên còn thiếu kinh nghiệm trong việc triển khai kiểm thử tự động đối với các yêu cầu nghiệp vụ phức tạp của khách hàng quốc tế.

Chương 3: Xây dựng các ca kiểm thử phần mềm Quản lý quan hệ khách hàng NinaCRM

Chương 3 trình bày định hướng phát triển của Ninasoft giai đoạn 2023 – 2030 (hướng tới tự động hóa quy trình kiểm thử và mở rộng thị trường phần mềm ra quốc tế), đồng thời đi sâu vào đặc tả và xây dựng bộ ca kiểm thử cho NinaCRM:

  • Kiến trúc kỹ thuật phần mềm: Ứng dụng chạy trên nền tảng đám mây (Cloud-based), phát triển theo mô hình Agile SCRUM. Sử dụng ngôn ngữ JavaScript, HTML/CSS, framework Vue.js, môi trường lập trình VS Code, quản lý mã nguồn qua GitHub, hệ quản trị CSDL SQL Server tương tác qua Entity Framework ORM.
  • Hệ thống chức năng gồm 7 phân hệ (module): (1) Quản lý tài khoản; (2) Quản lý khách hàng; (3) Quản lý hoạt động; (4) Quản lý cơ hội kinh doanh; (5) Quản lý dự án; (6) Quản lý báo cáo; (7) Quản lý hệ thống.
  • Đặc tả phi chức năng: Giao diện nền trắng, font chữ Times New Roman cỡ 14, màu chữ nhập đen, cảnh báo màu đỏ; thời gian phản hồi hệ thống tối đa 15 giây; tỷ lệ cập nhật thất bại dưới 0,1%.
  • Xây dựng ca kiểm thử thủ công: Tác giả xây dựng các bảng test case chi tiết cho các chức năng đăng nhập, thêm mới khách hàng, tìm kiếm khách hàng, thêm mới dự án, tìm kiếm dự án.

Ví dụ bộ ca kiểm thử chức năng đăng nhập (Bảng 3.1):

STT Mục đích kiểm thử Các bước thực hiện Kết quả mong muốn Kết quả thực tế
1 Kiểm tra đăng nhập thành công 1. Nhập tài khoản đang tồn tại trong Database
2. Click button Đăng nhập
Đăng nhập thành công Pass
2 Kiểm tra đăng nhập không thành công 1. Nhập tài khoản không tồn tại trong Database
2. Click button Đăng nhập
Hiển thị thông báo: "Các thông tin đăng nhập chưa chính xác, vui lòng kiểm tra lại" Pass
3 Kiểm tra rỗng tất cả 1. Không nhập tài khoản
2. Click button Đăng nhập
Hiển thị thông báo: "Trường này không thể để trống", highlight & focus vào textbox Email và Mật khẩu Pass
4 Kiểm tra bỏ trống Email 1. Không nhập Email
2. Nhập mật khẩu
3. Click button Đăng nhập
Hiển thị thông báo ở trường Email: "Trường này không thể để trống", highlight & focus vào textbox Email Pass
5 Kiểm tra bỏ trống Mật khẩu 1. Nhập Email
2. Không nhập mật khẩu
3. Click button Đăng nhập
Hiển thị thông báo: "Trường này không thể để trống", highlight & focus vào textbox Mật khẩu Pass
6 Kiểm tra đăng nhập với khoảng trắng đầu/cuối 1. Nhập email có khoảng trắng đầu cuối của tài khoản tồn tại
2. Nhập mật khẩu
3. Click button Đăng nhập
Đăng nhập thành công, hệ thống tự động cắt bỏ khoảng trắng đầu và cuối Pass
  • Xây dựng ca kiểm thử tự động: Sử dụng công cụ Selenium IDE để tự động hóa kịch bản kiểm thử trên trình duyệt web cho các chức năng: thêm mới khách hàng (thành công, bỏ trống tên, tên trùng lặp trong CSDL), tìm kiếm khách hàng (thành công, không thành công) và cập nhật số điện thoại khách hàng (thành công, bỏ trống, sai định dạng, chứa ký tự chữ cái).

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

  • Kết quả đạt được:
    • Khóa luận đã xây dựng hoàn chỉnh bộ ca kiểm thử thủ công và bộ kịch bản kiểm thử tự động (sử dụng Selenium IDE) cho các phân hệ cốt lõi của phần mềm NinaCRM (Đăng nhập, Quản lý khách hàng, Quản lý dự án).
    • Toàn bộ các ca kiểm thử xây dựng trong văn bản (từ Bảng 3.1 đến Bảng 3.15) đều được thực thi và ghi nhận trạng thái đạt yêu cầu (Pass) trên môi trường Alpha testing của Ninasoft.
    • Phân tích chi tiết hiện trạng cơ sở hạ tầng gồm 2 máy chủ Xeon 16GB, 50 máy trạm, quy trình quản lý bug qua Ninasoft Insight và nhân sự 5 tester của doanh nghiệp.
  • Giải pháp và kiến nghị của tác giả:
    • Kết hợp chặt chẽ giữa kiểm thử thủ công và kiểm thử tự động để tối ưu hóa thời gian chạy kiểm thử hồi quy (Regression Testing) và nâng cao khả năng phát hiện lỗi.
    • Tăng cường áp dụng các kỹ thuật thiết kế ca kiểm thử hộp đen (phân vùng tương đương, giá trị biên, bảng quyết định) ngay từ khâu đọc tài liệu đặc tả SRS để tăng độ bao phủ kịch bản.
    • Đầu tư đào tạo chuyên sâu cho đội ngũ kiểm thử về các công cụ tự động hóa nhằm đáp ứng các dự án phần mềm có yêu cầu khắt khe từ thị trường quốc tế giai đoạn 2023 – 2030.
  • Đóng góp của khóa luận: Khóa luận đã cụ thể hóa khung lý thuyết kiểm thử phần mềm vào một sản phẩm CRM đám mây thực tế tại doanh nghiệp công nghệ, cung cấp bộ tài liệu test case và kịch bản Selenium IDE có thể tái sử dụng trực tiếp cho các phiên bản phát hành tiếp theo của NinaCRM.

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

  • Hạn chế: Phạm vi kiểm thử thực nghiệm trong khóa luận mới tập trung chủ yếu vào một số chức năng cốt lõi (Đăng nhập, Khách hàng, Dự án) và mức kiểm thử Alpha nội bộ; chưa bao phủ toàn diện cả 7 module của hệ thống NinaCRM và chưa đi sâu vào kiểm thử hiệu năng tải cao hay kiểm thử bảo mật chuyên sâu.
  • Hướng nghiên cứu tiếp: Mở rộng tự động hóa kiểm thử cho toàn bộ 7 phân hệ của NinaCRM; nghiên cứu ứng dụng thêm các công cụ kiểm thử hiệu năng và bảo mật chuyên dụng; nâng cấp kịch bản kiểm thử tự động từ Selenium IDE sang các framework kiểm thử viết bằng mã nguồn (như Selenium WebDriver) để kiểm thử đa trình duyệt linh hoạt hơn.

Giá trị tham khảo

  • Đối tượng thụ hưởng:
    • Sinh viên ngành Hệ thống thông tin kinh tế, Thương mại điện tử, Công nghệ thông tin chuyên ngành Đảm bảo chất lượng phần mềm (QA/QC/Software Testing).
    • Các kỹ sư kiểm thử (Tester) mới bắt đầu tiếp cận phương pháp thiết kế test case kết hợp giữa thủ công và công cụ Selenium IDE.
  • Phần giá trị nhất:
    • Hệ thống bảng đặc tả ca kiểm thử chi tiết (Test cases) với đầy đủ điều kiện đầu vào, các bước thực hiện và kết quả mong đợi cho các form nhập liệu chuẩn (Bảng 3.1, 3.2).
    • Bảng tổng hợp, so sánh ưu nhược điểm của 4 kỹ thuật thiết kế test case hộp đen (Bảng 1.1) và bộ câu hỏi phỏng vấn thực tế quy trình kiểm thử phần mềm tại doanh nghiệp SME (Chương 2).

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

1. Phần mềm NinaCRM sử dụng nền tảng công nghệ và kiến trúc hệ thống như thế nào? Theo văn bản, NinaCRM là ứng dụng web chạy trên môi trường điện toán đám mây (Cloud-based), phát triển theo mô hình Agile SCRUM. Giao diện người dùng được xây dựng bằng HTML/CSS, JavaScript và framework Vue.js. Hệ thống quản trị cơ sở dữ liệu phía sau sử dụng Microsoft SQL Server, tương tác thông qua Entity Framework ORM.

2. Hệ thống NinaCRM bao gồm bao nhiêu phân hệ (module) chức năng chính? Phần mềm NinaCRM cung cấp 7 module chức năng chính: (1) Quản lý tài khoản, (2) Quản lý khách hàng (hoặc Quản lý quan hệ khách hàng), (3) Quản lý hoạt động, (4) Quản lý cơ hội kinh doanh, (5) Quản lý dự án, (6) Quản lý báo cáo, và (7) Quản lý hệ thống.

3. Cơ sở hạ tầng phần cứng và cơ cấu nhân sự kiểm thử tại Công ty TNHH Ninasoft có quy mô như thế nào? Công ty có tổng quy mô 50 nhân sự, trong đó Phòng Kiểm thử sản phẩm gồm 5 nhân viên. Hạ tầng phần cứng phục vụ làm việc bao gồm 2 máy chủ (Intel Server Board, CPU Intel Xeon, RAM 16GB), 50 máy tính để bàn (HP, DELL, ASUS), cùng hệ thống đường truyền Internet FPT băng thông tối thiểu 150Mbps kết nối mạng LAN nội bộ.

4. Khóa luận đã ứng dụng công cụ nào để thực hiện kiểm thử tự động cho NinaCRM? Tác giả đề xuất và triển khai kiểm thử tự động bằng công cụ Selenium IDE (tiện ích mở rộng hoạt động trên trình duyệt web với cơ chế ghi và phát lại - Record and Playback) để thực thi tự động các luồng kiểm thử thêm mới, tìm kiếm và cập nhật dữ liệu khách hàng.

5. Các tiêu chuẩn phi chức năng được đặc tả cho hệ thống NinaCRM gồm những chỉ số nào? Văn bản quy định giao diện sử dụng font Times New Roman cỡ chữ 14 trên nền trắng; thời gian phản hồi hiển thị thông báo hoặc kết quả tìm kiếm tối đa là 15 giây; và tỷ lệ cập nhật thông tin thất bại của hệ thống phải được kiểm soát dưới 0,1%.

Kết luận

Khóa luận tốt nghiệp của sinh viên Nguyễn Thị Hạnh đã hệ thống hóa đầy đủ cơ sở lý luận về kiểm thử phần mềm và khảo sát chi tiết thực trạng kiểm thử tại Công ty TNHH Ninasoft. Đề tài đã xây dựng và thực thi thành công bộ ca kiểm thử thủ công cùng các kịch bản kiểm thử tự động bằng công cụ Selenium IDE cho các phân hệ chức năng trọng yếu của phần mềm NinaCRM. Kết quả nghiên cứu đáp ứng đúng các yêu cầu đặc tả của hệ thống, mang lại tài liệu tham khảo thực tế cho công tác đảm bảo chất lượng phần mềm tại doanh nghiệp.