Người đăng
Ẩn danhPhí lưu trữ
30.000 VNĐMục lục chi tiết
Tóm tắt
Trong bối cảnh chuyển đổi số giáo dục, hệ thống VNEDU đã trở thành một hệ thống quản lý học tập (LMS) cốt lõi, phục vụ hàng triệu người dùng trên toàn quốc. Quy mô lớn và tầm quan trọng của hệ thống đòi hỏi một quy trình đảm bảo chất lượng phần mềm (software quality assurance) nghiêm ngặt và hiệu quả. Tuy nhiên, phương pháp kiểm thử thủ công truyền thống không còn đủ khả năng đáp ứng tốc độ phát triển nhanh chóng và sự phức tạp của hệ thống. Nghiên cứu của Lương Quang Cường (2024) về “Nghiên Cứu Phương Pháp Kiểm Thử Chức Năng Tự Động Cho Hệ Thống VNEDU” đã đưa ra một giải pháp toàn diện, ứng dụng kiểm thử tự động (automation testing) để giải quyết bài toán này. Bài viết sẽ phân tích sâu các phương pháp, công cụ và kết quả thực tiễn từ nghiên cứu này, cung cấp một cái nhìn chi tiết về cách tối ưu hóa quy trình kiểm thử cho các phần mềm giáo dục quy mô lớn. Việc áp dụng kiểm thử chức năng tự động không chỉ giúp phát hiện lỗi sớm, giảm thiểu rủi ro mà còn tiết kiệm đáng kể thời gian và nguồn lực, cho phép đội ngũ tập trung vào việc phát triển các tính năng phức tạp hơn, từ đó nâng cao chất lượng tổng thể của sản phẩm.
VNEDU là hệ sinh thái giáo dục số 1 Việt Nam, được xây dựng trên nền tảng điện toán đám mây với mục tiêu tin học hóa toàn diện công tác quản lý và điều hành. Theo tài liệu gốc, hệ thống hiện đang được triển khai tại 63/63 tỉnh thành, phục vụ hơn 29.000 trường học, 900.000 giáo viên và gần 9 triệu học sinh. Các chức năng chính của hệ thống bao gồm quản lý học sinh, quản lý điểm số, quản lý nhân sự, hồ sơ học tập và sổ liên lạc điện tử. Với quy mô và vai trò quan trọng như vậy, bất kỳ sự cố nào, dù nhỏ, cũng có thể gây ảnh hưởng nghiêm trọng đến hoạt động dạy và học trên diện rộng.
Kiểm thử chức năng tự động là việc sử dụng các công cụ phần mềm để thực thi các kịch bản kiểm thử đã được định nghĩa trước, so sánh kết quả thực tế với kết quả mong đợi một cách tự động. Lợi ích chính của phương pháp này là khả năng thực hiện kiểm thử hồi quy (regression testing) một cách nhanh chóng và chính xác sau mỗi lần cập nhật mã nguồn. Điều này đặc biệt quan trọng với VNEDU, một hệ thống phát triển theo mô hình Agile với các bản cập nhật liên tục. Tự động hóa giúp loại bỏ yếu tố sai sót của con người, tăng độ bao phủ kiểm thử và giải phóng nguồn lực kiểm thử viên cho các tác vụ đòi hỏi tư duy phân tích phức tạp hơn.
Trước khi áp dụng tự động hóa, quy trình kiểm thử của VNEDU đối mặt với nhiều thách thức đáng kể, ảnh hưởng trực tiếp đến chất lượng và tiến độ phát hành sản phẩm. Tài liệu nghiên cứu chỉ ra rằng, với đội ngũ chỉ có 5 kiểm thử viên nhưng phải xử lý hơn 300 yêu cầu thay đổi trong mỗi sprint (2 tuần), áp lực về thời gian là cực kỳ lớn. Việc kiểm thử hồi quy thủ công toàn bộ hệ thống trở thành một gánh nặng, tiêu tốn phần lớn thời gian và dễ bỏ sót lỗi. Hệ thống có hạ tầng phức tạp với 11 máy chủ ứng dụng và 10 máy chủ cơ sở dữ liệu, đòi hỏi phải kiểm tra trên nhiều môi trường khác nhau, làm tăng khối lượng công việc theo cấp số nhân. Nghiên cứu đã ghi nhận các sự cố nghiêm trọng xảy ra sau khi triển khai do không đủ thời gian kiểm thử hồi quy, ví dụ như lỗi không tạo được lớp học (21/11/2021) hay lỗi duyệt giáo án (16/12/2021). Những vấn đề này khẳng định tính cấp thiết của việc chuyển đổi sang một quy trình kiểm thử phần mềm hiệu quả hơn, và automation testing chính là chìa khóa để giải quyết những thách thức cố hữu này.
Với mô hình phát triển Agile, việc cập nhật liên tục các tính năng mới đòi hỏi quy trình kiểm thử hồi quy phải được thực hiện thường xuyên để đảm bảo các thay đổi không làm ảnh hưởng đến các chức năng hiện có. Tuy nhiên, việc thực hiện thủ công các kịch bản này rất tốn thời gian. Theo tài liệu gốc, một lần kiểm thử hồi quy toàn diện có thể mất đến 6-8 giờ làm việc của nhiều người. Với tần suất 2 lần cập nhật mỗi tuần, thời gian dành cho kiểm thử hồi quy chiếm một tỷ lệ quá lớn, gây chậm trễ cho việc kiểm thử các tính năng mới và tăng nguy cơ lỗi lọt ra môi trường production.
Việc kiểm thử thủ công lặp đi lặp lại dễ gây ra sự nhàm chán và chủ quan, dẫn đến sai sót. Các lỗi được phát hiện muộn sau khi triển khai lên môi trường thật không chỉ gây tổn thất về uy tín mà còn tốn kém chi phí để khắc phục. Hệ thống VNEDU với hơn 10 năm phát triển có nghiệp vụ vô cùng phức tạp và các chức năng liên kết chặt chẽ với nhau. Một thay đổi nhỏ ở một module có thể gây ra lỗi ở một module tưởng chừng không liên quan. Việc tối ưu hóa kiểm thử bằng phương pháp tự động giúp đảm bảo mọi kịch bản quan trọng đều được kiểm tra một cách nhất quán sau mỗi lần thay đổi.
Để giải quyết các thách thức, đề án đã đề xuất một giải pháp toàn diện bằng cách xây dựng framework kiểm thử tự động dựa trên công cụ Robot Framework và áp dụng mô hình thiết kế Page Object Model (POM). Việc lựa chọn công cụ được cân nhắc kỹ lưỡng dựa trên các tiêu chí: chi phí (miễn phí), dễ tiếp cận cho người có kỹ năng lập trình hạn chế, cộng đồng hỗ trợ lớn và khả năng tùy biến cao. Robot Framework, với cú pháp dựa trên keyword và được xây dựng trên nền tảng Python, đã được chọn là công cụ phù hợp nhất. Bên cạnh việc chọn công cụ, việc áp dụng mô hình kiểm thử Page Object Model (POM) là một quyết định chiến lược. POM giúp tách biệt logic của các test case tự động khỏi các chi tiết về giao diện người dùng (UI), giúp cho việc bảo trì và mở rộng kịch bản trở nên dễ dàng hơn rất nhiều. Khi giao diện của một trang thay đổi, chỉ cần cập nhật lại đối tượng trang tương ứng mà không cần phải sửa đổi hàng loạt các kịch bản kiểm thử, giúp tiết kiệm thời gian và công sức đáng kể.
Nghiên cứu đã thực hiện so sánh ba công cụ phổ biến: Selenium WebDriver, Katalon Studio, và Robot Framework. Trong khi Selenium có độ tùy biến cao nhưng đòi hỏi kỹ năng lập trình tốt, Katalon Studio thân thiện với người dùng nhưng có chi phí bản quyền cao. Robot Framework nổi lên như một lựa chọn cân bằng hoàn hảo: miễn phí, mã nguồn mở, cú pháp đơn giản, dễ học và có khả năng tích hợp linh hoạt với nhiều thư viện khác nhau. Đây là yếu tố then chốt giúp đội ngũ kiểm thử viên của VNEDU có thể nhanh chóng tiếp cận và triển khai.
Mô hình Page Object Model (POM) là một design pattern trong đó mỗi trang web của ứng dụng được xem như một đối tượng lớp (class object). Mỗi đối tượng này sẽ chứa tất cả các phần tử (WebElements) và các phương thức tương tác với các phần tử đó. Việc này giúp mã nguồn trở nên sạch sẽ, dễ đọc và quan trọng nhất là dễ bảo trì. Khi có sự thay đổi về kiểm thử giao diện người dùng (UI), chẳng hạn như thay đổi ID của một nút bấm, người thực hiện chỉ cần cập nhật ở một nơi duy nhất trong file đối tượng trang, thay vì phải tìm và sửa ở tất cả các test script có sử dụng nút bấm đó.
Từ nền tảng công cụ và mô hình đã chọn, việc triển khai viết test script được thực hiện một cách có hệ thống. Đề án đề xuất một cấu trúc thư mục rõ ràng, phân chia các thành phần của framework thành: Resource
(chứa các đối tượng trang và keywords của từng màn hình), Testcases
(chứa logic của các kịch bản kiểm thử), Utils
(chứa các keywords dùng chung), và Testsuite
(file chính để thực thi các kịch bản). Cách tổ chức này đảm bảo tính module hóa và tái sử dụng cao. Một điểm nổi bật trong nghiên cứu là việc xây dựng các thư viện tùy chỉnh để mở rộng khả năng của Robot Framework. Cụ thể, tác giả đã phát triển các thư viện Python để đọc/ghi dữ liệu từ file Excel (phục vụ cho data-driven testing) và gửi báo cáo kiểm thử tự động qua Telegram. Điều này giúp kết quả kiểm thử được thông báo ngay lập tức đến đội ngũ, tạo ra một vòng lặp phản hồi nhanh chóng, phù hợp với tinh thần của quy trình CI/CD và DevOps.
Không phải tất cả các chức năng đều phù hợp để tự động hóa. Nghiên cứu đã phân loại rõ các nhóm tính năng: Nhóm có thể tự động hóa bao gồm các chức năng cốt lõi, ổn định, có độ rủi ro cao và lặp đi lặp lại nhiều lần như Đăng nhập, Quản lý nhân sự, Quản lý lớp, Quản lý học sinh. Nhóm không nên tự động hóa trong giai đoạn đầu bao gồm các chức năng phức tạp, yêu cầu xác thực bên ngoài (ký số), hoặc được thiết kế để chống tự động hóa (Captcha). Việc phân loại này giúp tập trung nguồn lực vào những nơi mang lại hiệu quả cao nhất.
Để nâng cao hiệu quả, đề án đã xây dựng các keyword tùy chỉnh để xử lý các tác vụ đặc thù như sinh dữ liệu ngẫu nhiên, upload file, và đặc biệt là tạo file báo cáo kiểm thử bằng Excel. Báo cáo này được thiết kế rút gọn, dễ hiểu, trình bày các thông tin quan trọng như tổng số kịch bản, tỷ lệ pass/fail. Sau đó, báo cáo được tự động gửi qua Telegram, giúp các bên liên quan (quản lý dự án, lập trình viên) nắm bắt tình hình chất lượng một cách nhanh chóng mà không cần truy cập trực tiếp vào máy chủ thực thi.
Điểm thành công nhất của đề án là việc tích hợp thành công bộ kịch bản kiểm thử chức năng tự động vào quy trình CI/CD (Continuous Integration/Continuous Deployment) của VNEDU bằng Jenkins. Giờ đây, mỗi khi lập trình viên commit mã nguồn mới, quy trình sẽ tự động được kích hoạt: build dự án, triển khai lên môi trường kiểm thử, và sau đó thực thi toàn bộ bộ kịch bản kiểm thử hồi quy. Nếu tất cả các kịch bản đều vượt qua, phiên bản mới được xem là ổn định và sẵn sàng cho các bước tiếp theo. Kết quả thực nghiệm sau hơn một năm áp dụng đã chứng minh hiệu quả vượt trội. Theo tài liệu của Lương Quang Cường, thời gian kiểm thử hồi quy giảm tới 75% (từ 8 giờ công cho mỗi lần release xuống còn 2 giờ). Tốc độ kiểm thử tăng lên 6 lần. Hệ thống đã phát hiện sớm 56 lỗi nghiêm trọng mà nếu kiểm thử thủ công có thể đã bỏ sót. Số lượng kịch bản đã tăng từ 20 lên 160, bao phủ hầu hết các chức năng quan trọng của hệ thống, góp phần nâng cao đáng kể sự ổn định và chất lượng của VNEDU.
Quy trình DevOps được thiết lập khép kín: Jenkins lắng nghe thay đổi trên kho mã nguồn (Bitbucket), tự động lấy mã nguồn về, phân tích chất lượng mã nguồn bằng SonarQube, đóng gói và lưu trữ phiên bản trên Nexus. Sau đó, Jenkins triển khai phiên bản này lên môi trường Test và kích hoạt câu lệnh chạy Testsuite của Robot Framework. Kết quả kiểm thử sẽ quyết định xem chu trình có tiếp tục hay không. Việc này đảm bảo không một phiên bản lỗi nào có thể được triển khai lên các môi trường cao hơn.
Các con số đã chứng minh sự thành công của đề án. Ngoài việc giảm 75% thời gian và tăng tốc độ kiểm thử lên 6 lần, số lượng lỗi phát hiện sau khi sản phẩm được đưa lên môi trường production đã giảm 25%. 100% kiểm thử viên trong đội đã sử dụng thành thạo Robot Framework. Đáng chú ý, đề án còn giúp tối ưu hóa kiểm thử trong các hoạt động phức tạp như chuyển đổi hạ tầng hay nâng cấp máy chủ, đảm bảo hệ thống hoạt động ổn định trong mọi tình huống.
Nghiên cứu và áp dụng phương pháp kiểm thử chức năng tự động cho hệ thống VNEDU đã mang lại những thành công rõ rệt, không chỉ giải quyết được các vấn đề cố hữu của kiểm thử thủ công mà còn tạo ra một nền tảng vững chắc cho việc đảm bảo chất lượng phần mềm trong tương lai. Việc lựa chọn Robot Framework kết hợp với mô hình POM và tích hợp vào quy trình CI/CD đã chứng tỏ là một chiến lược đúng đắn, mang lại hiệu quả cao về mặt thời gian, chi phí và chất lượng. Đây là một bài học kinh nghiệm quý báu không chỉ cho VNEDU mà còn cho bất kỳ tổ chức nào đang phát triển các hệ thống phần mềm quy mô lớn. Tuy nhiên, vẫn còn những hướng phát triển tiềm năng để tiếp tục cải thiện quy trình. Các thách thức trong tương lai bao gồm việc tối ưu hóa thời gian thực thi khi số lượng kịch bản ngày càng lớn và xử lý các tương tác phức tạp hơn.
Thành công chính của đề án là đã xây dựng được một quy trình kiểm thử phần mềm tự động, hiệu quả và dễ dàng mở rộng. Bài học rút ra là việc đầu tư vào việc xây dựng một framework bài bản ngay từ đầu, kết hợp với việc đào tạo nhân sự và lựa chọn công cụ phù hợp, sẽ mang lại lợi ích lâu dài. Việc tự động hóa thành công đã thay đổi tư duy của đội ngũ, chuyển từ việc "phát hiện lỗi" sang "phòng ngừa lỗi".
Để giải quyết vấn đề thời gian chạy khi bộ kịch bản phình to, hướng phát triển tiếp theo là nghiên cứu triển khai chạy song song (parallel execution), cho phép thực thi nhiều test case tự động cùng một lúc trên nhiều máy ảo hoặc container. Ngoài ra, việc nghiên cứu các thư viện như AutoIT hay Sikuli để tương tác với các phần tử của hệ điều hành (không có Xpath) sẽ giúp mở rộng phạm vi tự động hóa, xử lý được các kịch bản kiểm thử API và các tác vụ phức tạp hơn.
Bạn đang xem trước tài liệu:
Nghiên cứu phương pháp kiểm thử chức năng tự động và áp dụng cho hệ thống vnedu