TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM
Kiểm thử phần mềm
Kiểm thử, hay còn gọi là testing, là quá trình đánh giá một hệ thống hoặc các thành phần của nó để xác định xem hệ thống có đáp ứng các yêu cầu đã chỉ định hay không Mục đích của kiểm thử là phát hiện các lỗ hổng, lỗi, hoặc các yêu cầu thiếu sót, đồng thời kiểm tra tính tương thích giữa các yêu cầu thực tế và yêu cầu đã đề ra.
Theo tiêu chuẩn ANSI/IEEE1059, kiểm thử phần mềm được định nghĩa là quá trình phân tích các thành phần của phần mềm nhằm phát hiện sự khác biệt giữa các điều kiện thực tế và các yêu cầu đã đặt ra, từ đó đánh giá chất lượng của phần mềm.
1.1.2 Mục tiêu của kiểm thử
Xác định những lỗi và khiếm khuyết có thể xảy ra trong quá trình phát triển phần mềm (hay website).
Nâng cao trải nghiệm người dùng là yếu tố quan trọng, và một sản phẩm được kiểm thử kỹ lưỡng sẽ giảm chi phí bảo trì, mang lại kết quả chính xác, phù hợp và đáng tin cậy hơn.
Sau khi khắc phục các lỗi đã được xác định, phần mềm đã được kiểm tra lại và đạt tiêu chuẩn chất lượng chấp nhận được.
Dựa vào các hoạt động kiểm thử theo mục đích ta chia làm 4 loại chính:
Kiểm thử chức năng (Functional Testing)
Kiểm thử chức năng bao gồm nhiều hình thức khác nhau, như Kiểm thử đơn vị (Unit Testing), Kiểm thử tích hợp (Integration Testing), Kiểm thử hệ thống (System Testing) và một số loại kiểm thử khác.
Kiểm thử chức năng là quá trình xác định xem phần mềm có thực hiện đúng các chức năng đã được xác định hay không Hoạt động này được tiến hành ở tất cả các cấp độ kiểm thử để đảm bảo tính chính xác và hiệu quả của phần mềm.
Kiểm thử chức năng có thể được thực hiện bằng hai phương pháp sau:
Kiểm thử dựa trên yêu cầu là phương pháp thiết kế bài kiểm thử dựa vào các yêu cầu cụ thể Các người kiểm thử có thể tận dụng nội dung của yêu cầu để xác định các phần cần thiết và không cần thiết cho quá trình kiểm thử.
Kiểm thử dựa trên bối cảnh thực tế là phương pháp tập trung vào các bước mà khách hàng thực hiện khi sử dụng phần mềm Việc áp dụng các use-case trong quá trình kiểm thử sẽ giúp nâng cao hiệu quả và độ chính xác của việc phát hiện lỗi.
Hệ thống quản lý nhân sự và bảng lương bao gồm quy trình nghiệp vụ từ khi nhân viên gia nhập công ty, nhận lương định kỳ và cuối cùng là khi họ rời khỏi công ty.
Kiểm thử chức năng thường có 5 bước sau đây:
Xác định các chức năng mà bạn muốn phần mềm sẽ thực hiện.
Tạo các dữ liệu đầu vào dựa trên các tài liệu đặc tả kỹ thuật của các chức năng.
Xác định các kết quả đầu ra dựa trên các tài liệu đặc tả kỹ thuật của các chức năng.
Thực hiện các trường hợp kiểm thử (Test Case)
So sánh kết quả thực tế và kết quả mong muốn.
Kiểm thử phi chức năng (Non-functional Testing)
Kiểm thử phi chức năng giống kiểm thử chức năng ở chỗ cả hai đều xuất hiện trong mọi mức độ kiểm thử.
Kiểm thử phi chức năng là quá trình đánh giá các đặc tính chất lượng của hệ thống, nhằm đảm bảo mọi thứ hoạt động hiệu quả và nhanh chóng Chúng ta sẽ tiến hành đo lường các yếu tố quan trọng như thời gian phản hồi và khả năng xử lý nhiều người dùng đăng nhập đồng thời Tương tự như kiểm thử chức năng, kiểm thử phi chức năng được thực hiện ở tất cả các cấp độ kiểm thử để đảm bảo hiệu suất tối ưu cho hệ thống.
Kiểm thử phi chức năng bao gồm:
Kiểm thử hiệu năng (Performance Testing)
Kiểm thử khả năng chịu tải (Load Testing)
Kiểm thử áp lực (Stress Testing)
Kiểm thử khả năng sử dụng (Usability Testing)
Kiểm thử khả năng bảo trì (Maintainability Testing)
Kiểm thử độ tin cậy (Reliability Testing)
Kiểm thử khả năng thích ứng (Portability Testing)
Kiểm thử cấu trúc (Structural Testing)
Kiểm thử cấu trúc thường được gọi là "hộp trắng" hoặc "hộp thủy tinh" vì chúng quan tâm đến những gì đang xảy ra bên trong hộp.
Kiểm thử cấu trúc là phương pháp đánh giá hiệu quả của kiểm thử thông qua việc đo lường mức độ bao phủ của các yếu tố cấu trúc hoặc các mục tiêu cụ thể.
Kiểm thử có thể xảy ra ở bất kỳ mức độ nào, chủ yếu là ở kiểm thử thành phần và tích hợp Tại cấp độ thành phần, cũng như ở mức thấp hơn trong kiểm thử tích hợp, có nhiều công cụ hỗ trợ tốt để đo mức độ bao phủ mã Các công cụ này đánh giá tỷ lệ phần trăm thực thi đã được thực hiện bởi bộ kiểm thử Nếu độ bao phủ không đạt 100%, có thể cần viết và chạy thêm các kiểm thử để bao phủ những phần chưa được thực hiện.
Các kỹ thuật kiểm tra cấu trúc bao gồm kiểm thử hộp trắng, trong đó các mô hình luồng điều khiển thường được áp dụng để hỗ trợ quá trình này.
Kiểm thử cấu trúc có thể được áp dụng ở mọi cấp độ kiểm thử, tương tự như hai loại kiểm thử trước đó Các nhà phát triển có thể sử dụng kiểm thử cấu trúc trong quá trình kiểm thử thành phần hoặc ở các mức độ thấp hơn trong kiểm thử thành phần.
Kiểm thử liên quan đến thay đổi (Change-related Testing)
Kiểm thử thay đổi nhằm xác định xem phần mềm hoạt động ổn định sau khi sửa lỗi Có hai loại kiểm thử liên quan đến thay đổi chính.
Kiểm thử tự động
1.2.1 Tổng quan về kiểm thử tự động
Kiểm thử tự động là quá trình tự động hóa các bước thực hiện của một trường hợp kiểm thử, nhằm nâng cao hiệu quả và độ chính xác trong việc phát hiện lỗi Quá trình này được thực hiện thông qua phần mềm kiểm thử tự động, còn được gọi là công cụ kiểm thử tự động (Automation Testing Tool).
Mục tiêu: tăng hiệu quả kiểm thử và phát triển giá trị phần mềm.
Nguyên tắc: tuân thủ theo các nguyên tắc trong kiểm thử phần mềm. Ưu điểm:
Công cụ kiểm thử tự động mang lại độ tin cậy cao nhờ vào sự ổn định vượt trội so với kiểm thử thủ công, đặc biệt khi đối mặt với nhiều trường hợp kiểm thử khác nhau.
Công cụ kiểm thử tự động ra đời nhằm giảm thiểu sự lặp lại trong quá trình kiểm thử, giúp người thực hiện không phải thực hiện các thao tác như nhập dữ liệu, nhấp chuột và kiểm tra kết quả một cách nhàm chán Điều này không chỉ nâng cao độ tin cậy mà còn đảm bảo tính ổn định trong quy trình kiểm thử.
Khả năng tái sử dụng của bộ kiểm thử tự động cho phép áp dụng cho nhiều phiên bản ứng dụng khác nhau, mang lại hiệu quả cao trong quy trình kiểm thử.
Kiểm thử tự động mang lại tốc độ nhanh chóng, với khả năng thực thi nhanh hơn nhiều so với con người Chẳng hạn, nếu một trường hợp kiểm thử thủ công mất khoảng 5 phút, thì kiểm thử tự động chỉ cần khoảng 30 giây để hoàn thành.
Kiểm thử tự động giúp tiết kiệm chi phí, thời gian và nhân lực đáng kể, bởi vì nó nhanh hơn so với kiểm thử thủ công Khi áp dụng đúng cách, chỉ cần một lượng nhân lực nhỏ để thực hiện và bảo trì các kịch bản kiểm thử.
1.2.2 Các loại kiểm thử tự động
Tự động hóa kiểm thử đơn vị
Tự động hóa kiểm thử đơn vị là quá trình viết các bài kiểm thử trực tiếp trong mã nguồn của ứng dụng, giúp phát hiện lỗi ngay trong từng chức năng và phương thức do các kỹ sư phát triển thực hiện.
Một số công ty yêu cầu kỹ sư phát triển tự thực hiện kiểm thử đơn vị, trong khi những công ty khác lại thuê nhân sự chuyên trách cho nhiệm vụ này Những nhân sự này có quyền truy cập vào mã nguồn của ứng dụng và phát triển các bài kiểm thử đơn vị dựa trên mã nguồn đó Khi có kiểm thử đơn vị, mọi lần mã nguồn được biên dịch, tất cả các bài kiểm thử sẽ được thực thi, giúp xác định chức năng nào hoạt động tốt và chức năng nào gặp sự cố Nếu một bài kiểm thử thất bại, điều đó cho thấy có lỗi trong mã nguồn hiện tại.
Hiện nay, NUnit và JUnit là hai công cụ kiểm thử đơn vị phổ biến trên thị trường Ngoài ra, Microsoft cũng cung cấp MSTest, một nền tảng riêng cho kiểm thử đơn vị Trên các trang web của những công cụ này, người dùng có thể tìm thấy nhiều ví dụ và hướng dẫn chi tiết về cách sử dụng để viết bài kiểm thử hiệu quả.
Kiểm thử tự động API/ dịch vụ Web (API test)
Giao diện lập trình ứng dụng (API) là cách mà một ứng dụng tương tác với ứng dụng khác, và như mọi ứng dụng, API cũng cần được kiểm thử Trong quá trình kiểm thử này, giao diện đồ họa người dùng (GUI) thường không được chú trọng nhiều.
Chúng ta kiểm thử các vấn đề liên quan đến chức năng, sự phù hợp và bảo mật của ứng dụng Cụ thể, trong ứng dụng Web, việc kiểm thử các câu lệnh Request/Response là cần thiết để đảm bảo rằng chúng đáp ứng yêu cầu bảo mật và mã hóa.
Một trong những công cụ phổ biến nhất cho việc kiểm thử API là SOAPUI, với cả phiên bản bản quyền và phiên bản cộng đồng (tính phí và miễn phí) Ngoài SOAPUI, còn nhiều công cụ khác mà bạn có thể khám phá tùy theo nhu cầu của dự án.
Kiểm thử tự động giao diện đồ họa người dùng (GUI test)
Loại kiểm thử này là loại khó khăn nhất trong kiểm thử tự động bởi vì nó liên quan đến kiểm thử giao diện người dùng của ứng dụng.
Kiểm thử giao diện người dùng (GUI) là một thách thức lớn do tính biến đổi cao của nó, nhưng lại phản ánh chính xác hành vi của người sử dụng Người dùng tương tác với ứng dụng thông qua chuột và bàn phím, vì vậy bài kiểm thử cũng cần mô phỏng các hành động này để thực hiện các thao tác như nhấn hoặc nhập liệu trên giao diện Phương pháp này không chỉ giúp phát hiện lỗi dễ dàng mà còn hữu ích trong nhiều tình huống, chẳng hạn như kiểm thử hồi quy hoặc điền thông tin vào biểu mẫu, tiết kiệm thời gian so với việc thực hiện thủ công.
Các công cụ phổ biến cho kiểm thử giao diện người dùng (GUI) bao gồm QTP (hiện nay là UFT), Selenium, TestComplete và Microsoft Coded UI, một phần của các phiên bản Ultimate và Premium của Visual Studio.
1.2.3 Quy trình kiểm thử tự động
Lựa chọn công cụ kiểm thử
Việc chọn công cụ kiểm thử chủ yếu phụ thuộc vào công nghệ mà ứng dụng được xây dựng Ví dụ, QTP không tương thích với Informatica, do đó không thể sử dụng QTP để kiểm thử các ứng dụng của Informatica.
Xác định phạm vi tự động
Phạm vi tự động là phạm vi ứng dụng được kiểm thử tự động hóa Các điểm sau giúp xác định phạm vi tự động:
Các tính năng quan trọng
Kịch bản có lượng dữ liệu lớn
Các chức năng chung trên ứng dụng
Tính khả thi về mặt kỹ thuật
Mức độ các thành phần được sử dụng lại
Độ phức tạp của trường hợp kiểm thử
Khả năng sử dụng các trường hợp kiểm thử tương tự để kiểm thử trên nhiều trình duyệt
Lập kế hoạch, thiết kế và phát triển
Tester tạo một chiến lược và kế hoạch kiểm thử tự động chi tiết như sau:
Công cụ kiểm thử tự động được chọn
Thiết kế Framework và các tính năng của Framework
Các mục trong phạm vi và ngoài phạm vi tự động hóa
Chuẩn bị kiểm thử tự động hóa
Lịch trình và mốc thời gian thực thi kịch bản kiểm thử
Bàn giao sản phẩm được kiểm thử tự động
GIỚI THIỆU CHUNG VỀ CÔNG CỤ KIỂM THỬ TỰ ĐỘNG TESTCOMPLETE
Tổng quan về công cụ TestComplete
TestComplete là một công cụ kiểm thử tự động mạnh mẽ, hỗ trợ đa dạng các ứng dụng và công nghệ như Windows, NET, WPF, Visual C++, Visual Basic, Java và các ứng dụng Web.
TestComplete được thiết kế để hỗ trợ kiểm thử đơn vị một cách hiệu quả Nó cung cấp khả năng thực hiện các thử nghiệm hồi quy hàng ngày và hỗ trợ đa dạng các loại kiểm thử, bao gồm kiểm thử dữ liệu điều khiển và kiểm thử đối tượng điều khiển.
Chúng ta có thể tạo ra các trường hợp kiểm thử bằng cách ghi lại hoặc chỉnh sửa lệnh kiểm thử trong bảng của TestComplete Kiểm thử có thể được thực hiện trực tiếp trong TestComplete hoặc xuất sang ứng dụng bên ngoài để chạy.
TestComplete nhận diện đối tượng và điều khiển trong ứng dụng thử nghiệm, cung cấp lệnh đặc biệt để mô phỏng hành động với chúng Ngoài ra, nó còn có các trạm kiểm soát cụ thể, giúp bạn dễ dàng kiểm thử trạng thái ứng dụng trong quá trình chạy thử nghiệm.
TestComplete hiện nay được sử dụng bởi hơn 5000 công ty.
Keyword testing involves utilizing built-in keyword checkers, enabling testers to easily develop frameworks that effectively manage keywords.
Script Testing: người kiểm thử có thể viết kịch bản kiểm thử từ scratch hoặc sửa đổi các tập lệnh được ghi trong trình chỉnh sửa thích hợp sẵn.
Chức năng Ghi và Phát lại Kiểm thử cung cấp cơ chế cơ bản để ghi lại và phát lại các kiểm thử đã được khởi tạo Các trường hợp kiểm thử đã ghi có thể được điều chỉnh và sửa đổi khi cần thiết để đảm bảo tính chính xác và hiệu quả trong quá trình kiểm thử.
Integration to Bug Tracking Software: Tích hợp nhiều phần mềm theo dõi lỗi khác nhau.
Test Visualizer là công cụ cho phép chụp ảnh màn hình trong quá trình kiểm thử, giúp người dùng phân biệt rõ ràng giữa các màn hình mong muốn và thực tế thực hiện.
Các kiểu ngôn ngữ lập trình hỗ trợ
2.1.3 Ưu và nhược điểm của TestComplete Ưu điểm:
Các tính năng kiểm tra tự động toàn diện, chỉn chu được tích hợp vào một hệ thống duy nhất.
Hỗ trợ nhiều ngôn ngữ kịch bản
Chỉ cần các kỹ năng lập trình cơ bản.
Chi phí đắt đỏ: giấy phép và bảo trì
Chi phí cao cho việc nâng cấp và cập nhật các module
Cài đặt TestComplete
2.2.1 Yêu cầu về cầu hình
Cấu hình tối thiểu Cấu hình đề nghị
Độ phân giải màn hình:1024x768
Độ phân giải màn hình:
Bảng 2 2:Yêu cầu về cấu hình
NET Application Testing (Microsoft NET Framework v2.0, 3.0, 4.0 hoặc 4.5)
Web Testing (Google chrome, Firefox,…)
Link download: https://smartbear.com/product/testcomplete/free-trial/ đăng kí rồi tải về phiên bản dùng thử 30 ngày Hoặc có thể mua bản quyển với giá 4999$.
Sau khi tải về hãy làm theo các bước sau để có thể cài đặt công cụ TestComplete:
1) Nhấn đúp vào gói cài đặt TestComplete đã tải xuống
2) Cài đặt phần mềm sẽ bắt đầu và thỏa thuận cấp phép sẽ được hiển thị
3) Chỉ định đường dẫn của thư mục bạn muốn cài đặt phần mềm
Hình 2 2: Thêm đường dẫn để cài đặt TestComplete
4) Bây giờ hộp thoại chào mừng được hiển thị để yêu cầu kích hoạt giấy phép, chúng ta có thể bắt đầu bằng cách nhấp vào giấy phép dùng thử 30 ngày.
Hình 2 3: Giao diện khi lần đầu cài TestComplete
2.3 Hướng dẫn sử dụng công cụ Testcomplete
Hình 2 4: Giao diện chính của TestComplete
Tạo 1 dự án (Project) trong TestComplete
Chọn File -> New -> New Project từ giao diện chính Hộp thoại mới sẽ xuất hiện.
Hình 2 5: Tạo mới 1 project trong TestComplete
Cho phép lưu tên dự án và Nơi lưu trữ dự án của bạn, chọn ngôn ngữ bạn sử dụng
Hình 2 6: Đặt tên cho project và lựa chọn ngôn ngữ lập trình Ấn “Finish” để kết thúc quá trình tạo dự án.
Hình 2 7: Hoàn tất việc tạo một project
KẾT QUẢ THỰC NGHIỆM VÀ ĐÁNH GIÁ
Giới thiệu chung về website kiểm thử
Website BuyBook.vn được thiết kế để cung cấp dịch vụ mua sách trực tuyến, giúp khách hàng dễ dàng tiếp cận sách mà không cần đến cửa hàng, đặc biệt trong bối cảnh dịch Covid-19 hạn chế việc di chuyển.
Các chức năng chính của hệ thống:
Tìm kiếm: người dùng có thể tra cứu loại sách mà mình yêu thích thông qua các keyword (từ khóa).
Sau khi đăng nhập thành công vào hệ thống, người dùng có thể dễ dàng quản lý giỏ hàng của mình và kiểm tra các sản phẩm đã được thêm vào giỏ hàng.
Đặt hàng: người dùng (user) sau khi đăng nhập thành công vào hệ thống có thể tiến hàng đặt sản phẩm mà mình mong muốn
Nội dung kiểm thử sẽ gồm 3 chức năng chính: tìm kiếm, giỏ hàng và đặt hàng.
Thực hiện kiểm thử tự động
3.2.1 Xây dựng test case kiểm thử
Chức năng tìm kiếm cho phép người dùng thực hiện các thao tác mà không cần đăng nhập.
Nhập từ khóa muốn tìm kiếm
Kiểm tra kết quả nhập chữ có dấu và nhập chữ không có dấu
Kiểm tra kết quả nhập chữ thường chữ hoa
Kiểm tra kết quả hiển thị tìm kiếm
Kiểm tra kết quả gợi ý tìm kiếm
Kiểm tra độ dài minlength maxlength ô tìm kiếm
Kiểm tra kết quả khi nhập ký tự không có ý nghĩa
Kiểm tra kết quả tìm kiếm theo các tiêu chí
Sau khi đăng nhập tài khoản thành công, người dùng có thể thực hiện các thao tác với chức năng giỏ hàng, bao gồm thêm sản phẩm, chỉnh sửa số lượng và xóa mặt hàng Việc kiểm thử chức năng giỏ hàng đảm bảo rằng tất cả các tính năng hoạt động đúng cách, mang lại trải nghiệm mua sắm mượt mà và hiệu quả cho người dùng.
Chọn sản phẩm cần thêm vào giỏ hàng
Kiểm tra hiển thị thông tin sản phẩm trong giỏ hàng
Kiểm tra thay đổi số lượng sản phẩm
Kiểm tra thêm sản phẩm vào giỏ hàng
Kiểm tra hiển thị sản phẩm trong giỏ hàng
Kiểm tra tính tiền trong giỏ hàng
Kiểm tra xóa sản phẩm trong giỏ hàng
Kiểm thử chức năng đặt hàng là quá trình xác định các thao tác cần thiết để người dùng thực hiện đặt hàng sau khi đã đăng nhập tài khoản thành công Người dùng có thể dễ dàng sử dụng chức năng này để thực hiện các đơn hàng của mình.
Kiểm tra điền thông tin của trường Họ Tên
Kiểm tra điền thông tin của trường Email
Kiểm tra chọn thông tin trường quốc gia
Kiểm tra chọn thông tin trường Tỉnh/Thành Phố
Kiểm tra chọn thông tin Quận/Huyện
Kiểm tra nhập thông tin trường Số Nhà & Tên Đường
Kiểm tra nhập thông tin trường SĐT
Chọn giao đến địa chỉ này
Kiểm tra đặt hàng chọn phương thức vận chuyển và phương thức thanh toán
Hình 3 1: Test script của chức năng tìm kiếm
Hình 3 2: Test script của chức năng giỏ hàng
Hình 3 3: Test Log chức năng kết quả tìm kiếm
Hình 3 4: Test Log chức năng giỏ hàng
Kiểm thử phần mềm đóng vai trò quan trọng trong việc đảm bảo chất lượng sản phẩm Việc áp dụng công cụ kiểm thử tự động đã giúp tiết kiệm thời gian, chi phí và nguồn lực trong quy trình phát triển phần mềm.
Dù công cụ kiểm thử tự động mang lại nhiều lợi ích, vẫn có những nhiệm vụ mà kiểm thử thủ công không thể thay thế Việc cấu hình cho kiểm thử tự động trong những trường hợp này thường phức tạp hơn rất nhiều so với kiểm thử thủ công.
Sau thời gian thực hiện đồ án dưới sự hướng dẫn của ThS Thái Thị Thanh Vân, kết quả mà nhóm em thu được cụ thể như sau:
Trình bày được kiến thức cơ bản về kiểm thử đặc biệt là kiểm thử tự động
Giới thiệu đặc điểm, công cụ TestComplete trong kiểm thử website
Áp dụng những kiến thức đã tìm hiểu để thực hiện kiểm thử chức năng tìm kiếm, giỏ hàng, đặt hàng(order) sản phẩm của website: Bookbuy.com.
Mặc dù đã cố gắng hết sức trong quá trình thực hiện đề tài nhưng với kinh nghiệm còn hạn chế nên chúng em còn nhiều thiếu sót:
Chỉ áp dụng được kiểm thử trên chức năng cơ bản của website.
Mới kiểm thử với website nhỏ.
Hướng phát triển của đề tài:
Nhóm chúng tôi sẽ tiếp tục nghiên cứu sâu về các vấn đề liên quan đến kiểm thử, nhằm áp dụng vào việc kiểm thử các ứng dụng lớn hơn trong công việc tương lai Chúng tôi mong muốn góp phần vào việc chuyên nghiệp hóa kiểm thử tại Việt Nam.