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

Trong quy trình phát triển phần mềm hiện đại, việc đảm bảo chất lượng và tính ổn định của hệ thống trước khi phát hành đến người dùng cuối là một yêu cầu tất yếu. Việc kiểm thử thủ công (Manual Testing) truyền thống tuy mang lại tính linh hoạt nhưng lại bộc lộ hạn chế lớn về thời gian, chi phí nhân sự và khó đáp ứng được các chu kỳ kiểm thử hồi quy lặp đi lặp lại trong các mô hình phát triển phần mềm linh hoạt (Agile/Scrum). Xuất phát từ yêu cầu thực tế tại doanh nghiệp phát triển phần mềm, đề tài tập trung nghiên cứu và xây dựng giải pháp kiểm thử tự động (Automation Testing) nhằm tối ưu hóa quá trình phát hiện lỗi, rút ngắn thời gian kiểm thử và nâng cao độ tin cậy của sản phẩm web.

Đề tài xác định các mục tiêu và nhiệm vụ nghiên cứu cụ thể như sau:

  1. Hệ thống hóa cơ sở lý thuyết tổng quan về kiểm thử phần mềm, quy trình kiểm thử, các cấp độ, phương pháp, kỹ thuật thiết kế trường hợp kiểm thử (test case) và các mô hình phát triển phần mềm phổ biến.
  2. Tìm hiểu và nắm vững công cụ kiểm thử tự động Robot Framework kết hợp thư viện SeleniumLibrary, ngôn ngữ định vị phần tử XPath trên trình soạn thảo Visual Studio Code.
  3. Phân tích yêu cầu chức năng của hệ thống ứng dụng web mẫu và thiết kế bộ trường hợp kiểm thử chi tiết.
  4. Xây dựng kịch bản kiểm thử tự động (test script), thiết lập môi trường thực thi và chạy kiểm thử tự động cho các phân hệ chức năng trên trình duyệt web.
  5. Đánh giá kết quả thực thi kiểm thử tự động, trích xuất báo cáo log/HTML và đề xuất hướng phát triển tiếp theo.

Đối tượng và phạm vi nghiên cứu của đề tài được giới hạn như sau:

  • Đối tượng nghiên cứu: Quy trình kiểm thử tự động và ứng dụng web thương mại điện tử trực tuyến.
  • Phạm vi không gian: Thực hiện tại Công ty TMA Solutions Bình Định (Công viên Sáng tạo TMA Bình Định – TIP, Thung lũng Sáng tạo Quy Nhơn).
  • Phạm vi thời gian: Quá trình nghiên cứu và thực tập kéo dài 10 tuần, từ ngày 19/06/2023 đến ngày 25/08/2023.
  • Hình thức thực hiện: Nghiên cứu và thực tập trực tiếp (offline).

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

Tác giả đã tổng hợp và xây dựng nền tảng lý thuyết chuyên ngành về kỹ nghệ phần mềm và đảm bảo chất lượng phần mềm thông qua các nội dung:

  • Khái niệm và thuật ngữ cốt lõi:

    • Kiểm thử phần mềm: Phương pháp kiểm tra sự phù hợp của sản phẩm so với yêu cầu đặc tả, ngăn ngừa và phát hiện các khiếm khuyết.
    • Phân biệt Error, Fault và Failure: Error là sai sót từ hành động của con người; Fault là lỗi phát sinh khi làm sai quy trình, bước thực hiện hoặc chuẩn bị dữ liệu; Failure là sự sai lệch giữa kết quả thực tế trên màn hình và kết quả mong đợi của hệ thống.
    • Verification (Xác minh) và Validation (Xác thực): Verification xác nhận phần mềm đáp ứng đặc tả kỹ thuật thông qua rà soát; Validation xác nhận phần mềm đáp ứng nhu cầu thực tế của người dùng qua việc thử nghiệm trực tiếp.
    • QA (Quality Assurance) và QC (Quality Control): QA tập trung vào quy trình có kế hoạch và hệ thống nhằm bảo đảm chất lượng; QC tập trung vào việc kiểm tra, đối chiếu sản phẩm với các tiêu chuẩn đã đặt ra.
    • 7 nguyên tắc kiểm thử: Kiểm thử chứng minh sự hiện diện của lỗi; kiểm thử toàn diện là không thể; kiểm thử sớm; phân cụm lỗi; nghịch lý thuốc trừ sâu; thử nghiệm phụ thuộc ngữ cảnh; không có sai lầm ngụy biện.
  • Phương pháp và cấp độ kiểm thử:

    • Kiểm thử tĩnh (Static Testing): Đánh giá thủ công và phân tích tự động bằng công cụ mà không cần thực thi mã nguồn.
    • Kiểm thử động (Dynamic Testing): Kiểm tra hành vi của mã nguồn khi thực thi, bao gồm kiểm thử hộp trắng (White-box Testing) và kiểm thử hộp đen (Black-box Testing) với hai nhánh kiểm thử chức năng và phi chức năng.
    • 4 cấp độ kiểm thử: Kiểm thử đơn vị (Unit Testing), kiểm thử tích hợp (Integration Testing), kiểm thử hệ thống (System Testing - bao gồm kiểm tra khả năng sử dụng, tải, hồi quy, phục hồi, chuyển đổi, phần cứng/phần mềm), kiểm thử chấp nhận người dùng (Acceptance Testing).
    • Kỹ thuật thiết kế test case: Kỹ thuật dựa trên đặc tả (phân vùng tương đương, phân tích giá trị biên, bảng quyết định, chuyển đổi trạng thái) và kỹ thuật dựa trên kinh nghiệm (đoán lỗi, thăm dò, danh sách kiểm tra, tấn công lỗi).
    • Vòng đời lỗi (Defect Life Cycle): Gồm 11 trạng thái: New, Assigned, Open, Fixed, Retest, Reopened, Deferred, Rejected, Duplicate, Closed, Not a bug/Enhancement.
  • Vòng đời phát triển phần mềm (SDLC):

    • Trình bày 6 giai đoạn: Phân tích yêu cầu (Requirement Analysis), Thiết kế (Design), Xây dựng/Lập trình (Implementation), Kiểm thử (Testing), Triển khai (Deployment), Bảo trì (Maintenance).
    • Khảo sát các mô hình SDLC tiêu biểu: Mô hình Thác nước (Waterfall Model), Mô hình chữ V (V-Model ánh xạ giữa SDLC và STLC), Mô hình phát triển linh hoạt Agile và Khung làm việc Scrum (với 3 nguyên lý: Minh bạch, Thanh tra, Thích nghi; 5 giá trị: Cam kết, Tập trung, Cởi mở, Tôn trọng, Can đảm; 3 tạo phẩm: Product Backlog, Sprint Backlog, Increment; cùng quy trình các cuộc họp Sprint).
  • Phương pháp nghiên cứu:

    • Phương pháp phân tích tài liệu và tổng hợp lý thuyết kỹ nghệ phần mềm.
    • Phương pháp thực nghiệm kỹ thuật: Cài đặt công cụ mã nguồn mở (Robot Framework, SeleniumLibrary), xây dựng kịch bản kiểm thử dựa trên từ khóa (Keyword-Driven Testing) và dữ liệu (Data-Driven Testing), sử dụng đường dẫn XPath để định vị đối tượng trên giao diện HTML DOM và thực thi kiểm thử trên trình duyệt Google Chrome.

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

Chương 1: Tổng quan về công ty

Chương này giới thiệu về doanh nghiệp tiếp nhận thực tập là Công ty TMA Solutions (thành lập năm 1997, với hơn 4.000 kỹ sư, phục vụ khách hàng tại 30 quốc gia, sở hữu 6 chi nhánh tại Việt Nam và 6 văn phòng đại diện quốc tế). Báo cáo nêu rõ quá trình hình thành chi nhánh TMA Solutions Bình Định từ tháng 6/2018 (hiện có hơn 400 kỹ sư) và dự án Công viên Sáng tạo TMA Bình Định quy mô 10 hecta khởi công vào tháng 8/2018. Chương 1 cũng liệt kê 8 lĩnh vực hoạt động chính của TMA (Tài chính - Ngân hàng - Bảo hiểm, Y tế, Nông nghiệp, Khách sạn - Du lịch, Thương mại điện tử, Giáo dục, Vận tải - Logistics, Viễn thông) và mô tả chi tiết vị trí công việc của Tester, bao gồm định nghĩa, kỹ năng cần thiết và 14 nhiệm vụ cụ thể trong quy trình kiểm thử phần mềm chuyên nghiệp.

Chương 2: Tổng quan và lý thuyết về kiểm thử phần mềm

Chương 2 trình bày toàn diện hệ thống lý thuyết về kiểm định chất lượng phần mềm. Tác giả phân tích bản chất của hoạt động kiểm thử, làm rõ 5 mục đích cốt lõi, 7 nguyên tắc căn bản của kiểm thử phần mềm và các cặp khái niệm mang tính nền tảng (Error/Fault/Failure, Verification/Validation, QA/QC). Tiếp đó, chương này phân loại chi tiết các hình thức kiểm thử thủ công và tự động; phương pháp kiểm thử tĩnh và kiểm thử động (hộp trắng, hộp đen); 4 cấp độ kiểm thử trong dự án phần mềm; các kỹ thuật thiết kế ca kiểm thử dựa trên đặc tả và kinh nghiệm; quy trình quản lý trạng thái của lỗi qua 11 bước trong vòng đời lỗi. Phần cuối chương dành để phân tích cấu trúc vòng đời phát triển phần mềm (SDLC) qua 6 giai đoạn và phân tích sâu các mô hình Waterfall, V-Model, Agile và quy trình vận hành Sprint trong Scrum.

Chương 3: Triển khai kiểm thử tự động trên nền tảng web

Chương 3 tập trung vào khía cạnh kỹ thuật và triển khai thực tế. Tác giả trình bày tổng quan về bộ công cụ Selenium (các tính năng của Selenium IDE, Selenium WebDriver, Selenium Remote Control, ưu điểm và nhược điểm) và nền tảng Robot Framework (cơ chế keyword-driven, data-driven, xuất báo cáo định dạng HTML, hỗ trợ đa nền tảng). Báo cáo hướng dẫn cú pháp định vị phần tử giao diện bằng ngôn ngữ XPath (//tagname[@attribute='value']) trên cấu trúc cây HTML DOM. Tiếp theo, tác giả mô tả chi tiết 4 bước thiết lập môi trường (Python, Visual Studio Code và các extension, cấu hình biến môi trường Windows System Environment Variables, cài đặt các gói thư viện qua lệnh pip: setuptools, wxPython, robotframework, robotframework-ride, robotframework-seleniumlibrary, robotframework-DatabaseLibrary). Trên cơ sở phân tích yêu cầu hệ thống ứng dụng web mẫu, tác giả thiết kế bộ dữ liệu kiểm thử gồm 20 trường hợp kiểm thử (test cases) chia thành 6 phân hệ chức năng: Đăng nhập (Login), Thêm sản phẩm vào giỏ hàng (Add product cart), Đặt hàng (Order), Liên hệ (Contact), Xóa sản phẩm khỏi giỏ hàng (Delete product in cart) và Đăng ký tài khoản (Sign up). Chương này cung cấp toàn bộ các đoạn mã kịch bản tự động hóa viết bằng Robot Framework cho từng chức năng.

Chương 4: Kết quả

Chương 4 tổng hợp các kết quả thực nghiệm đạt được sau khi chạy toàn bộ kịch bản kiểm thử tự động trên Visual Studio Code. Tác giả trình bày bằng chứng kiểm thử thông qua danh mục các hình ảnh chụp màn hình ghi nhận kết quả thực thi của 20 test case từ TC1 đến TC20, thể hiện trạng thái kiểm thử thành công (Pass), kịch bản điều hướng chính xác và hệ thống phản hồi đúng các thông báo mong đợi.

Thiết kế và triển khai

Môi trường và công nghệ kiểm thử

  • Ngôn ngữ nền tảng: Python.
  • Môi trường phát triển: Visual Studio Code tích hợp các tiện ích mở rộng Python Extension Pack, IntelliCode và Robot Framework.
  • Framework kiểm thử: Robot Framework.
  • Thư viện tương tác trình duyệt: SeleniumLibrary (robotframework-seleniumlibrary), DatabaseLibrary (robotframework-DatabaseLibrary), wxPython, RIDE (robotframework-ride).
  • Trình duyệt thực thi: Google Chrome.
  • Cơ chế định vị: Cú pháp XPath tuyệt đối và tương đối trên cấu trúc HTML DOM.

Thiết kế danh mục các trường hợp kiểm thử (Test Cases)

Quá trình phân tích yêu cầu đã xây dựng 20 trường hợp kiểm thử phân bổ cho 6 chức năng chính:

Mã TC Chức năng Tên trường hợp kiểm thử (Test Case) Dữ liệu đầu vào / Thao tác chính Kết quả mong đợi (Expected Result) Trạng thái
TC1 Login Login success Nhập username đúng, password đúng Hiển thị giao diện trang chủ sau khi đăng nhập Pass
TC2 Login Wrong username Nhập username sai, password đúng Thông báo: "User does not exist." Pass
TC3 Login Wrong password Nhập username đúng, password sai Thông báo: "Wrong password." Pass
TC4 Login Wrong username and password Nhập username sai, password sai Thông báo: "User does not exist." Pass
TC5 Login Empty username Để trống username, nhập password Thông báo: "Please fill out Username and Password." Pass
TC6 Login Empty password Nhập username, để trống password Thông báo: "Please fill out Username and Password." Pass
TC7 Login Empty username and password Để trống cả username và password Thông báo: "Please fill out Username and Password." Pass
TC8 Add Cart Add product to cart Đăng nhập hợp lệ, chọn sản phẩm và click thêm Sản phẩm được đưa thành công vào giỏ hàng Pass
TC9 Order Order success Đăng nhập, điền đầy đủ thông tin thanh toán (Name, Credit card,...) Thông báo: "Thank you for your purchase!" cùng chi tiết đơn hàng Pass
TC10 Order Empty 1 fill Để trống trường Name, điền các trường còn lại Thông báo yêu cầu: "Please fill out Name and Creditcard ." Pass
TC11 Order Empty all fill Để trống toàn bộ các trường thông tin đơn hàng Thông báo yêu cầu: "Please fill out Name and Creditcard ." Pass
TC12 Contact Contact success Đăng nhập, nhập Email, Tên, Nội dung liên hệ và gửi Thông báo phản hồi: "Thanks for the message!!" Pass
TC13 Contact Empty 1 fill Để trống trường Email, nhập các thông tin còn lại Thông báo phản hồi: "Thanks for the message!!" Pass
TC14 Contact Empty all fill Để trống toàn bộ các trường nhập liệu liên hệ Thông báo phản hồi: "Thanks for the message!!" Pass
TC15 Delete Cart Delete products in cart Đăng nhập, mở giỏ hàng, nhấn nút Delete sản phẩm Sản phẩm được xóa khỏi danh sách giỏ hàng Pass
TC16 Sign up Sign up success Nhập username và password mới hợp lệ Thông báo: "Sign up successful." Pass
TC17 Sign up User already exists Nhập username đã tồn tại trên hệ thống Thông báo: "This user already exist." Pass
TC18 Sign up Empty username Để trống username, nhập password Thông báo: "Please fill out Username and Password." Pass
TC19 Sign up Empty password Nhập username, để trống password Thông báo: "Please fill out Username and Password." Pass
TC20 Sign up Empty username and password Để trống cả username và password Thông báo: "Please fill out Username and Password." Pass

Cấu trúc kịch bản kiểm thử mẫu (Test Script)

Kịch bản kiểm thử tự động được tổ chức theo cấu trúc chuẩn của Robot Framework với các phần khai báo thư viện (*** Settings ***) và khối kịch bản ca kiểm thử (*** Test Cases ***):

*** Settings ***
Library    SeleniumLibrary

*** Variables ***

*** Keywords ***

*** Test Cases ***
TC1 Login success
    Open Browser    https://www.html#    Chrome
    Click Link      //*[@id="login2"]
    sleep           3s
    Input Text      //input[@id="loginusername"]    ngocquy
    Input Text      //input[@id="loginpassword"]    TTNQ2002@
    Click Button    //*[@id="logInModal"]/div/div/div[3]/button[2]

TC2 Wrong user
    Open Browser    https://www.html#    Chrome
    Click Link      //*[@id="login2"]
    sleep           3s
    Input Text      //input[@id="loginusername"]    nhapsaiuser
    Input Text      //input[@id="loginpassword"]    TTNQ2002@
    Click Button    //*[@id="logInModal"]/div/div/div[3]/button[2]

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

  • Kết quả thực nghiệm:

    • Hoàn thành thiết lập thành công môi trường kiểm thử tự động đa thành phần kết hợp giữa Python, Robot Framework, SeleniumLibrary và Visual Studio Code trên hệ điều hành Windows.
    • Xây dựng hoàn chỉnh 20 kịch bản kiểm thử tự động bao phủ 6 phân hệ cốt lõi của ứng dụng web thương mại điện tử.
    • Thực thi toàn bộ 20/20 trường hợp kiểm thử trên trình duyệt Google Chrome với kết quả đạt tỷ lệ thành công 100% (Pass), hệ thống xử lý chính xác cả các trường hợp hợp lệ (positive test cases) lẫn các trường hợp biên/không hợp lệ (negative test cases).
    • Tự động hóa việc ghi nhận kết quả và xuất báo cáo log thực thi chi tiết định dạng HTML từ Robot Framework.
  • Đóng góp của báo cáo:

    • Minh họa quy trình áp dụng thực tế của một quy trình kiểm thử tự động tại doanh nghiệp phần mềm (TMA Solutions Bình Định).
    • Cung cấp tài liệu hướng dẫn từng bước từ cài đặt môi trường, phân tích đặc tả, thiết kế test case, trích xuất XPath đến xây dựng mã kiểm thử tự động cho sinh viên chuyên ngành Hệ thống thông tin quản lý.

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

  • Hạn chế:

    • Phạm vi kiểm thử mới chỉ tập trung vào kiểm thử chức năng giao diện (UI Functional Testing) trên nền tảng ứng dụng web, chưa mở rộng sang kiểm thử hiệu năng (Performance/Load Testing), kiểm thử bảo mật (Security Testing) hay kiểm thử dịch vụ API.
    • Các kịch bản kiểm thử mới chỉ được cấu hình và chạy thực nghiệm trên một trình duyệt duy nhất là Google Chrome trong môi trường hệ điều hành Windows cục bộ.
    • Thời gian thực hiện giới hạn trong khuôn khổ kỳ thực tập nghề nghiệp 10 tuần (19/06/2023 – 25/08/2023).
  • Hướng nghiên cứu tiếp:

    • Mở rộng phạm vi kịch bản kiểm thử tự động cho nhiều luồng nghiệp vụ phức tạp hơn trên hệ thống web.
    • Nghiên cứu thực thi kiểm thử tự động đa trình duyệt (Cross-browser Testing trên Firefox, Edge, Safari) và kiểm thử trên các thiết bị di động.
    • Tích hợp bộ kịch bản kiểm thử tự động vào quy trình tích hợp và triển khai liên tục (CI/CD Pipeline) để kích hoạt kiểm thử tự động sau mỗi lần cập nhật mã nguồn.

Giá trị tham khảo

Báo cáo thực tập là tài liệu học tập và tham khảo phù hợp cho:

  • Sinh viên chuyên ngành Hệ thống thông tin quản lý, Công nghệ thông tin, Kỹ thuật phần mềm: Nắm bắt được bức tranh tổng thể về vai trò của kiểm thử viên (Tester/QC) tại doanh nghiệp, hiểu rõ các tiêu chuẩn kiểm thử phần mềm quốc tế và các mô hình phát triển phần mềm (Waterfall, V-Model, Scrum).
  • Thực tập sinh và kỹ sư mới bắt đầu làm quen với Automation Testing: Tham khảo quy trình cài đặt môi trường hoàn chỉnh trên Visual Studio Code, phương pháp định vị phần tử bằng XPath và cách viết kịch bản kiểm thử hướng từ khóa (Keyword-Driven) bằng Robot Framework và SeleniumLibrary.
  • Người làm đề tài khóa luận về kiểm thử chất lượng: Cung cấp mẫu biểu thiết kế test case chuẩn hóa và cách thức tổ chức cấu trúc một báo cáo kỹ thuật kiểm thử thực tế.

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

1. Đề tài sử dụng những công cụ và công nghệ nào để triển khai kiểm thử tự động?

Báo cáo sử dụng ngôn ngữ Python làm nền tảng, công cụ kiểm thử Robot Framework kết hợp thư viện SeleniumLibrary, trình soạn thảo mã nguồn Visual Studio Code cùng các tiện ích mở rộng liên quan, và thực hiện kiểm thử tự động trên trình duyệt Google Chrome thông qua cơ chế định vị XPath.

2. Có bao nhiêu trường hợp kiểm thử (test case) được thiết kế và triển khai trong báo cáo?

Tác giả đã phân tích và thiết kế tổng cộng 20 trường hợp kiểm thử (từ TC1 đến TC20) phân bổ trên 6 phân hệ chức năng: Đăng nhập (7 test case), Thêm sản phẩm vào giỏ hàng (1 test case), Đặt hàng (3 test case), Liên hệ (3 test case), Xóa sản phẩm khỏi giỏ hàng (1 test case) và Đăng ký tài khoản (5 test case). Tất cả 20 test case đều đạt kết quả Pass khi thực thi.

3. Vòng đời của một lỗi (Defect Life Cycle) được tác giả hệ thống hóa gồm những trạng thái nào?

Báo cáo chỉ rõ vòng đời của lỗi gồm 11 trạng thái: New (lỗi mới được ghi nhận), Assigned (giao lỗi cho lập trình viên), Open (lập trình viên đang xử lý), Fixed (lập trình viên đã sửa xong), Retest (kiểm thử viên kiểm tra lại), Reopened (mở lại lỗi nếu kiểm tra chưa đạt), Deferred (hoãn sửa lỗi sang phiên bản sau), Rejected (lập trình viên từ chối vì không phải lỗi), Duplicate (lỗi bị trùng lặp), Closed (lỗi đã được khắc phục hoàn toàn và đóng lại), Not a bug/Enhancement (yêu cầu cải tiến, không phải lỗi).

4. Báo cáo phân biệt Verification và Validation như thế nào?

Theo báo cáo, Verification (xác minh) là quá trình kiểm tra nhằm xác nhận phần mềm đáp ứng đầy đủ các đặc điểm kỹ thuật và yêu cầu thiết kế, được thực hiện qua rà soát và kiểm tra tài liệu/mã nguồn; trong khi Validation (xác thực) là quá trình xác nhận phần mềm đáp ứng đúng nhu cầu thực tế của người dùng thông qua việc chạy thử nghiệm trực tiếp trên hệ thống.

5. Quy trình cài đặt môi trường Robot Framework trên Windows được báo cáo hướng dẫn qua các bước nào?

Quy trình gồm 4 bước chính: Bước 1 cài đặt Python; Bước 2 cài đặt Visual Studio Code và các extension (Python, Python Extension Pack, IntelliCode, Robot Framework); Bước 3 thiết lập biến môi trường hệ thống (System Environment Variables) trên Windows; Bước 4 mở Command Prompt và cài đặt các gói thư viện qua lệnh pip (setuptools, wxPython, robotframework, robotframework-ride, robotframework-seleniumlibrary, robotframework-DatabaseLibrary).

Kết luận

Báo cáo thực tập nghề nghiệp "Kiểm Thử Tự Động Trên Nền Tảng Web Tại TMA Solutions" của sinh viên ngành Hệ thống thông tin quản lý (Trường Đại học Kinh tế – Đại học Đà Nẵng) đã hệ thống hóa đầy đủ cơ sở lý thuyết về kiểm thử phần mềm và các mô hình SDLC hiện đại. Tác giả đã triển khai thành công giải pháp kiểm thử tự động sử dụng Robot Framework và SeleniumLibrary trên Visual Studio Code cho ứng dụng web với 20 trường hợp kiểm thử bao phủ 6 phân hệ chức năng chính. Kết quả thực nghiệm đạt tỷ lệ Pass 100%, phản ánh tính chính xác của kịch bản và cung cấp tài liệu tham khảo thực tiễn có giá trị cho hoạt động kiểm thử phần mềm tự động hóa tại doanh nghiệp.