Mục tiêu đề tàiMục tiêu bọn em hướng đến cho đề tài này là:- Nắm chắc về cái khái niệm liên quan đến kiểm thử phần mềm, quy trình kiểm thửvà đảm bảo chất lượng phần mềm- Khai phá tối đa
CƠ SỞ LÝ THUYẾT
Tổng quan đề tài
1.1.1 Lý do chọn đề tài
Kiểm thử phần mềm là một phần quan trọng trong quy trình phát triển phần mềm vì nó đảm bảo rằng sản phẩm hoạt động như mong đợi và đáp ứng được yêu cầu của người dùng Kiểm thử phần mềm giúp đảm bảo rằng sản phẩm được phát triển đáp ứng được các tiêu chí chất lượng như độ tin cậy, hiệu suất và tính sẵn sàng Ngoài ra kiểm thử phần mềm giúp đảm bảo rằng sản phẩm được phát triển đáp ứng được các tiêu chí chất lượng như độ tin cậy, hiệu suất và tính sẵn sàng Qua quá trình kiểm thử, các lỗi và vấn đề trong phần mềm có thể được phát hiện và sửa chữa trước khi sản phẩm được phát hành ra thị trường Điều này giúp giảm thiểu rủi ro và chi phí sửa chữa sau này.Vì vậy phần mềm đã được kiểm thử kỹ lưỡng hơn có khả năng hoạt động một cách ổn định và đáng tin cậy hơn trong môi trường sản xuất Để đảm bảo độ tin cậy cuối cùng, việc kiểm thử cẩn thận giúp giảm thiểu rủi ro liên quan đến việc phát hành sản phẩm không ổn định hoặc có lỗi
Có nhiều phương pháp kiểm thử phần mềm như kiểm thử phân vùng tương đương, kiểm thử phân tích giá trị biên, kiểm thử theo bảng quyết định,… nhóm chúng em đã quyết định chọn phương pháp kiểm thử phân vùng tương đương để làm đề tài cho môn học “Kiểm thử và đảm bảo chất lượng phần mềm”.
Mục tiêu bọn em hướng đến cho đề tài này là:
- Nắm chắc về cái khái niệm liên quan đến kiểm thử phần mềm, quy trình kiểm thử và đảm bảo chất lượng phần mềm
- Khai phá tối đa được công dụng của kỹ thuật kiểm thử phân vùng tương đương
- Ứng dụng được kỹ thuật kiểm thử phân vùng tương đương để xây dựng, thiết kế các testcase
- Kiểm thử được một số chức năng trên website nhờ vào các testcase vừa thiết kế
Tổng quan về kiểm thử phần mềm
1.2.1 Khái niệm kiểm thử phần mềm
Kiểm thử phần mềm (Software testing) là một cuộc kiểm tra được tiến hành để cung cấp cho các bên liên quan thông tin về chất lượng của sản phẩm hoặc dịch vụ được kiểm thử Kiểm thử có thể cung cấp cho doanh nghiệp một quan điểm, một cách nhìn độc lập về phần mềm để từ đó cho phép đánh giá và thấu hiểu được những rủi ro trong quá
Kiểm thử phần mềm là phương pháp kiểm tra xem sản phẩm phần mềm đó trên thực tế có phù hợp với các yêu cầu đã đặt ra hay không, và đảm bảo rằng không có lỗi hay khiếm khuyết Testing bao gồm việc kiểm tra, phân tích, quan sát và đánh giá các khía cạnh khác nhau của sản phẩm Tester sử dụng kết hợp các công cụ thủ công và tự động Sau khi kiểm thử, Tester báo cáo kết quả cho team phát triển để xác định các lỗi, khiếm khuyết hoặc các yêu cầu còn thiếu so với yêu cầu thực tế.
1.2.2 Tại sao kiểm thử lại cần thiết?
Kiểm thử phần mềm là rất cần thiết bởi vì tất cả chúng ta đều có thể mắc sai lầm Một số tại lầm có thể không quan trọng nhưng có một số sai lầm lại rất nguy hiểm và phải trả giá đắt nếu không được phát hiện Chúng ta cần kiểm tra mọi thứ và bất cứ thứ gì chúng ta tạo ra bởi vì mọi thứ luôn có thể sai Con người gây ra nhiều lỗi ở mọi lúc Giá định công việc của mình có thể có sai sót, nên chúng ta cần kiểm tra lại công việc đó Tuy nhiên, một số sai lầm đến từ những giả định không tốt và những điểm mù Từ đó, khi thực hiện công việc, con người có thể mắc phải những sai lầm tương tự Vì vậy, chúng ta có thể không nhận thấy những sai sót trong những việc mình đã làm Tốt nhất, nên đề người khác kiểm tra công việc của chúng ta vì họ có nhiều khả năng phát hiện ra sai sốt hơn.
Một câu hỏi luôn đặt ra là tại sao kiểm thử phần mềm lại quan trọng như vậy và sau đây là những lý do mà chúng ta nên xem xét khi kiểm thử bất kỳ sản phẩm phần mềm hoặc ứng dụng nào:
- Kiểm thử phần mềm thực sự được yêu cầu để chỉ ra các khiếm khuyết và lỗi đã được thực hiện trong các giai đoạn phát triển.
- Kiểm thử là cần thiết vì nó đảm bảo rằng khách hàng thấy tổ chức đăng tin cậy và sự hài lòng của họ trong ứng dụng được duy trì
- Kiểm thử là rất quan trọng để đảm bảo chất lượng của sản phẩm.
- Kiểm thử là cần thiết để cung cấp các tiện ích cho khách hàng
- Kiểm thử là bắt buộc để có hiệu suất, hiệu quả của ứng dụng phần mềm hoặc sản phẩm đảm bảo rằng ứng dụng sẽ không dẫn đến bất kỳ lỗi nào vì nó có
- Kiểm thử là quan trọng để thể rất tốn kém trong tương lai hoặc trong các giai đoạn phát triển sau này
- Kiểm thử cũng là một yêu cầu bắt buộc trong doanh nghiệp
1.2.3 Mục tiêu kiểm thử phần mềm
Kiểm thử phần mềm có những mục tiêu và đối tượng khác nhau Nhưng mục tiêu chính của nó là:
- Phát hiện càng nhiều lỗi càng tốt trong thời gian kiểm thử xác định trước
- Chưng minh rằng sản phẩm phần mềm phù hợp với các đặc tả yêu cầu của nó
- Xác thực chất lượng kiểm thử phần mềm đã dung chi phí và nỗ lực tối thiểu
- Tạo các testcase chất lượng cao thực hiện kiểm thử hiệu quả và tạo ra các báo có vấn đề đúng và hữu dụng
Kiểm thử phần mềm sẽ giúp hoàn thiện các ứng dụng phần mềm hoặc sản phẩm so với yêu cầu kinh doanh và người sử dụng Nó rất quan trọng để có thể đảm bảo kiểm thử các ứng dụng phần mềm và khẳng định chắc chắn rằng phần mềm hoạt động tốt và đúng theo các bản đặc tả.
1.2.4 Các nguyên tắc trong kiểm thử phần mềm
Kiểm thử phần mềm là quá trình thực thì một chương trình nhâm tim ra lỗi của nó Để phần mềm hoạt động trơn tru, nó cần phải sạch lỗi Nếu kiểm thử phần mềm được thực hiện thành công, việc này sẽ khiến các lối không còn xuất hiện Tuy nhiên, để tiết kiệm thời gian và công sức truy tìm các lỗi, có 7 nguyên tắc kiểm thử quan trọng, đó là:
- Kiểm thử cho thấy sự hiện diện của lỗi: Kiểm thử có thể cho thấy lỗi đang hiện diện nhưng không thể chứng minh rằng không có lỗi Kiểm thử làm giảm khả năng các lỗi chưa được phát hiện tồn tại trong phần mềm nhưng ngay cả khi không tìm được lỗi nào cũng không phải là 1 bằng chứng của tính đúng đắn.
- Kiểm thử vét cạn là không thể: Kiểm thử mọi thứ là không khả thi, ngoại trừ quá đơn giản Thay vì kiểm thử vét cạn, nên tập trung vào phân tích và đánh giá mức ưu tiên cho các rủi ro để tập trung nỗ lực kiểm thử.
- Kiểm thử sớm tiết kiệm thời gian và tiền bạc: Để sớm phát hiện lỗi, các hoạt động kiểm thử cả động và tĩnh nên được tiến hành càng sớm càng tốt, giúp giảm thiểu hoặc loại bỏ chi phí phát sinh do thay đổi.
- Phân cụm lỗi cùng nhau: Một số lượng nhỏ các mô đun thường chứa hầu hết các lỗi phát hiện được trong giai đoạn kiểm thử trước khi phát hành, hoặc chiu trách nhiệm về hầu hết các hỏng hóc trong quá trình hoạt động Các cụm lỗi dự đoán được và bị phát hiện khi kiểm thử và vận hành là đầu vào quan trọng cho phân tích rủi ro được áp dụng trong lần kiểm thử.
- Đề phòng nghịch lý thuốc trừ sâu: Nếu lặp đi lặp lại một tập trường hợp kiểm thử, sẽ không tìm thấy bất kỳ lỗi mới nào nữa Để phát hiện lỗi mới, vì các bước kiểm thử hiện tại và dữ liệu kiểm thử đã thay đổi nên cần viết thêm bước kiểm thử mới (Kiểm thử không còn hiệu quả trong việc phát hiện lỗi, giống như thuốc trừ sâu không còn tác dụng diệt côn trùng) Trong vài trường hợp, như kiểm thử hồi quy tự động, nghịch lý thuốc trừ sâu vẫn còn hiệu quả khiến số lỗi bị phát hiện hồi quy tương đối thấp.
- Kiểm thử phụ thuộc vào bối cảnh: Kiểm thử được thực hiện khác nhau trong các bối cảnh khác nhau Ví dụ một phần mềm yêu cầu tính an toàn cao được kiểm thử khác với một trang thương mại điện tử Kiểm thử trong dự án Agile được thực
- Ảo tưởng về sự vắng mặt của lỗi: Một số tổ chức mong đợi kiểm thử viên có thể thực hiện tất cả các bước kiểm thử để phát hiện ra lỗi, nhưng nguyên lý 1 và 2 cho thấy đây là điều không thể Hơn nữa, sẽ sai lầm khi kỳ vọng tìm ra và sửa 1 lượng lỗi lớn sẽ đảm bảo thành công của hệ thống Ví dụ việc kiểm thử trơn tru tất cả các yêu cầu cụ thể và sửa mọi lỗi tìm thấy vẫn có thể tạo ra 1 hệ thống khó sử dụng, không thỏa mãn nhu cầu mông đợi của người dung hoặc kém hiệu quả hơn so với hệ thống cạnh tranh
Hình 1.1: Các nguyên tắc trong kiểm thử phần mềm
1.2.5 Quy trình kiểm thử phần mềm
KỸ THUẬT KIỂM THỬ PHÂN VÙNG TƯƠNG ĐƯƠNG
Tổng quan về kiểm thử phân vùng tương đương
2.2.1 Khái niệm kiểm thử phân vùng tương đương
Phân vùng tương đương là phương pháp kiểm thử hộp đen chia miền đầu vào của một chương trình thành các lớp dữ liệu, từ đó suy dẫn ra các ca kiểm thử Thiết kế ca kiểm thử cho phân vùng tương đương dựa trên sự đánh giá về các vùng tương đương với một điều kiện vào Vùng tương đương biểu thị một tập cho các trạng thái hợp lệ hay không hợp lệ đối với điều kiện vào.
Hình 2.3: Kỹ thuật kiểm thử phân vùng tương đương
2.2.2 Thiết kế testcase bằng phân lớp tương đương
Thiết kế test case bằng phân vùng tương đương tiến hành theo hai bước:
- Xác định các lớp tương đương
- Xác định các ca kiểm thử a Xác định các lớp tương đương
Lớp tương đương được xác định bằng cách lấy mỗi trạng thái đầu vào và chia nó thành 2 hay nhiều nhóm Điều kiện đầu vào:
- Vùng tương đương hợp lệ
- Vùng tương đương không hợp lệ Điều kiện đầu vào là một giá trị đặc biệt mảng, số hay chuỗi, tập hợp hay điều kiện đúng sai Vùng tương đương hợp lệ là mô tả các đầu vào hợp lệ của chương trình Vùng tương đương không hợp lệ là mô tả các trạng thái khác của chương trình như: sai, thiếu,
Với 1 đầu vào hay điều kiện bên ngoài đã cho, việc xác định các lớp tương đương hầu như là 1 quy trình mang tính kinh nghiệm Để xác định các lớp tương đương c có thể áp dụng tập các nguyên tắc dưới đây:
- Nếu 1 trạng thái đầu vào định rõ giới hạn của các giá trị, xác định 1 lớp tương đương hợp lệ và 2 lớp tương đương không hợp lệ.
- Nếu 1 trạng thái đầu vào xác định số giá trị, xác định 1 lớp tương đương hợp lệ và
2 lớp tương đương bất hợp lệ.
- Nếu 1 trạng thái đầu vào chỉ định tập các giá trị đầu vào và chương trình sử dụng mỗi giá trị là khác nhau, xác định 1 lớp tương đương hợp lệ cho mỗi loại và 1 lớp tương đương không hợp lệ.
- Nếu 1 trạng thái đầu vào chỉ định một tình huống “chắc chắn – must be”, xác định
1 lớp tương đương hợp lệ và 1 lớp tương đương không hợp lệ.
Nếu có bất kỳ lý do nào để tin rằng chương trình không xử lý các phần tử trong cùng
1 lớp là như nhau, thì hãy chia lớp tương đương đó thành các lớp tương đương nhỏ hơn. b Xác định các ca kiểm thử
Với các lớp tương đương xác định được ở bước trên, bước thứ hai là sử dụng các lớp tương đương đó để xác định các ca kiểm thử Quá trình này như sau:
- Gán 1 số duy nhất cho mỗi lớp tương đương.
- Cho đến khi tất cả các lớp tương đương hợp lệ được bao phủ bởi (hợp nhất thành) các ca kiểm thử, viết 1 ca kiểm thử mới bao phủ càng nhiều các lớp tương đương đó chưa được bao phủ càng tốt.
- Cho đến khi các ca kiểm thử của bạn đã bao phủ tất cả các lớp tương đương không hợp lệ, viết 1 ca kiểm thử mà bao phủ một và chỉ một trong các lớp tương đương không hợp lệ chưa được bao phủ.
- Lý do mà mỗi ca kiểm thử riêng bao phủ các trường hợp không hợp lệ là vì các kiểm tra đầu vào không đúng nào đó che giấu hoặc thay thế các kiểm tra đầu vào không đúng khác.
Mặc dù việc phân lớp tương đương là rất tốt khi lựa chọn ngẫu nhiên các ca kiểm thử, nhưng nó vẫn có những thiếu sót Ví dụ, nó bỏ qua các kiểu test – case có lợi nào đó Hai phương pháp tiếp theo, phân tích giá trị biên và đồ thị nguyên nhân – kết quả , bao phủ được nhiều những thiếu sót này.
2.2.3 Ưu điểm, nhược điểm của kỹ thuật kiểm thử phân vùng tương đương Ưu điểm:
- Vì mỗi vùng tương đương ta chỉ cần test trên các phần tử đại diện nên số lượng test case được giảm đi khá nhiều nhờ đó mà thời gian thực hiện test cũng giảm đáng kể.
- Không phải với bất kỳ bài toán nào đều có thể áp dụng kỹ thuật này
- Có thể bị lack lỗi ở biên nếu chỉ chọn giá trị ở khoảng giữa của miền tương đương.
Vì vậy khi phần lớn các lỗi được tìm thấy lúc kiểm tra giá trị ở biên của các phân vùng thì chúng ta nên tìm hiểu thêm một kỹ thuật nữa là Boundary value analysis (phân tích giá trị biên).
Ví dụ
Form nhập số tầng của tòa nhà bao gồm:
Thiết kế test case sao cho người dùng nhập vào ô text-box Salary chỉ cho nhập ký tự là số với độ dài trong khoảng [0-10]
HÌnh 2.2: Ví dụ về kiểm thử phân vùng tương đương
Dựa vào yêu cầu bài toán ta có thể có các lớp tương đương(phân vùng) sau:
- Phân vùng 1: Nhập giá trị hợp lệ từ 0=> 10 ký tự
- Phân vùng 2: Nhập giá trị không hợp lệ < 0 ký tự
- Phân vùng 3: Nhập giá trị không hợp lệ > 10 ký tự
- Phân vùng 4: Trường hợp để trống không nhập gì hay nhập ký tự không phải dạng số
Sau khi áp dụng phân vùng tương đương có thể chọn được các ca kiểm thử (test case) sau:
- Case 1: Nhập giá trị từ 0 => 10 (có thể chỉ nhập số 5)=> pass
- Case 2: Nhập giá trị < 0 (có thể chỉ nhập số -5) => hiển thị lỗi
- Case 3: Nhập giá trị > 10 => hiển thị lỗi
- Case 4: Để trống không nhập gì hay nhập ký tự không phải dạng số => hiển thị lỗi
THỰC NGHIỆM VÀ TRIỂN KHAI TEST WEBSITE BÁN QUẦN ÁO
Cài đặt môi trường
Selenium là một công cụ tự động hóa thử nghiệm phần mềm được sử dụng để kiểm tra ứng dụng web Nền tảng cho phép người dùng tạo và thực thi các kịch bản thử nghiệm tự động để kiểm tra tính năng của các ứng dụng web trên nhiều trình duyệt hoặc nhiều nền tảng khác nhau.
Selenium cung cấp nhiều ngôn ngữ lập trình giúp cho việc viết và triển khai các kịch bản thử nghiệm trở nên linh hoạt hơn Bên cạnh đó, Selenium còn hoạt động trên nhiều nền tảng khác nhau, bao gồm:
- Trình duyệt Web: Chrome, Firefox, Internet Explorer, Edge, Safari và Opera.
- Hệ điều hành: Windows, macOS và Linux.
- Ngôn ngữ lập trình: Java, C#, Python, Ruby, JavaScript (sử dụng Node.js), PHP và Perl.
Sự linh hoạt trong việc hỗ trợ Multiple đã giúp Selenium trở thành một công cụ thử nghiệm tự động phổ biến và mạnh mẽ trong cộng đồng phát triển phần mềm.
Các thành phần chính của Selenium:
- Selenium IDE: Đây là một công cụ cung cấp giao diện người dùng đơn giản để ghi, chỉnh sửa và chạy các kịch bản thử nghiệm trên trình duyệt web Selenium IDE tạo kịch bản thử nghiệm trong thời gian ngắn và hỗ trợ thử nghiệm cơ bản diễn ra thuận lợi hơn.
- Selenium WebDriver: Đây là thành phần chính của Selenium với khả năng cung cấp API linh hoạt để tương tác với trình duyệt web WebDriver cho phép người dùng viết mã kiểm thử bằng nhiều ngôn ngữ lập trình và chạy chúng trên các trình duyệt khác nhau.
- Selenium Grid: Công cụ có nhiệm vụ phục vụ cho việc thực thi đồng thời các kịch bản thử nghiệm trên nhiều trình duyệt và hệ thống khác nhau Selenium Grid cho phép phân phối các kịch bản thử nghiệm trên các thiết bị và môi trường riêng biệt.
Từ đó làm tăng hiệu suất và giảm thời gian kiểm thử.
- Selenium RC: Selenium RC (Remote Control) đã được loại bỏ và thay thế bởi Selenium WebDriver Tuy nhiên, về cấu trúc Selenium trước khi có sự thay đổi này, Selenium RC có thành phần chính như là Server: Là một dịch vụ HTTP được sử dụng để thực thi các câu lệnh Selenium và định lượng cấu hình các trình duyệt để thực hiện kịch bản kiểm thử Client Libraries: Selenium RC hỗ trợ các thư viện khách hàng cho nhiều ngôn ngữ lập trình như Java, C#, Python, Ruby, và Perl. Điều này giúp cho việc tạo và thực thi các kịch bản kiểm thử tự động trở nên dễ dàng RC Interface: Là một API (Giao diện lập trình ứng dụng) cho phép người dùng tương tác với server và điều khiển trình duyệt từ xa để chạy các kịch bản kiểm thử.
Tính năng nổi bật của Selenium:
- Tối ưu cho ứng dụng web: Phiên bản Selenium mới nhất được tối ưu hóa để cung cấp các tính năng và công cụ cần thiết trong việc kiểm thử, tương tác với ứng dụng web Cụ thể, Selenium đưa ra các phương pháp và hàm để tương tác với các thành phần web như textbox, button, dropdown
- Hỗ trợ đa nền tảng: Selenium được thiết kế để hỗ trợ nhiều nền tảng khác nhau. Trong đó bao gồm các trình duyệt web phổ biến như Chrome, Firefox, Internet Explorer, Edge, Safari và Opera trên các hệ điều hành Windows, MacOS và Linux. Người dùng có thể kiểm thử tính đúng đắn và khả năng tương thích của ứng dụng web trên nhiều môi trường khác nhau một cách toàn diện hơn.
- Ngôn ngữ lập trình đa dạng: Selenium hỗ trợ nhiều ngôn ngữ lập trình phổ biến như Java, C#, Python, Ruby, JavaScript (sử dụng Node.js), PHP và Perl Công nghệ cho phép người dùng lựa chọn ngôn ngữ lập trình ưa thích để viết các kịch bản thử nghiệm Từ đó tạo điều kiện thuận lợi cho việc sử dụng và triển khaiSelenium trong môi trường phát triển phần mềm.
- Tích hợp với các công cụ kiểm thử: Selenium được tích hợp tốt với các công cụ quản lý kiểm thử như JUnit và TestNG cũng như các công cụ CI/CD là Jenkins. Hoạt động này kiến tạo quy trình kiểm thử tự động liền mạch và hiệu quả Thông qua cách kết hợp Selenium vào quy trình kiểm thử và triển khai dự án phần mềm.
Selenium IDE là một extension (plugin) dùng để tự động hóa việc kiểm thử chạy trên trình duyệt Firefox thông qua tính năng record và playback, được tạo ra bởi Shinya Kasatani người Nhật Bản, người sau này đã donate Selenium IDE cho dự án Selenium, đúng như bản chất của dự án là open source. Ưu điểm:
- Dễ sử dụng: Selenium IDE có giao diện dễ sử dụng và không đòi hỏi về kiến thức kỹ thuật sâu Người mới bắt đầu với việc kiểm thử tự động có thể ứng dụng công nghệ một cách vô cùng tiện lợi.
- Tạo kịch bản nhanh: Selenium IDE cho phép người dùng dễ dàng ghi lại các hành động trên trình duyệt và tạo kịch bản kiểm thử một cách nhanh chóng.
- Hỗ trợ nhiều trình duyệt: Selenium IDE hỗ trợ nhiều trình duyệt phổ biến như Chrome và Firefox.
- Là công cụ miễn phí: Selenium IDE là một công cụ mã nguồn mở, miễn phí cho việc sử dụng.
- Hạn chế về mức độ linh hoạt: Selenium IDE có thể hạn chế về khả năng tùy chỉnh và mở rộng so với các công cụ khác trong họ Selenium như Selenium WebDriver.
- Khó mở rộng: Selenium IDE không cho phép tạo ra các kịch bản phức tạp và khó mở rộng hơn so với các công cụ khác trong họ Selenium.
Áp dụng phân vùng tương đương vào các chức năng trong website
Trang web bán quần áo trực tuyến là một sản phẩm nhỏ nhóm chúng em từng thực hiện ở môn trước Chúng em quyết định chọn web đó làm sản phẩm để kiểm thử.
Trang web cung cấp một nền tảng mua sắm thuận tiện và đáng tin cậy cho khách hàng Trang web sẽ tập trung vào việc hiển thị và bán các sản phẩm quần áo đa dạng như áo, quần, váy,…
Trang web có giao diện đẹp mắt, dễ sử dụng và tương thích với các thiết bị di động Giao diện sẽ được thiết kế sao cho người dùng có thể dễ dàng tìm kiếm sản phẩm, xem chi tiết, thêm vào giỏ hàng, thanh toán
Ngoài ra, trang web cũng có một trang admin có những trang quản lý danh mục, sản phẩm, đơn hàng.
Một số hình ảnh từ trang web:
Hình 3.6: Giao diện trang chủ trang web bán quần áo
Hình 3.7: Giao diện shop của web bán quần áo
- Giao diện đăng nhập khách hàng:
Hình 3.8: Giao diện đăng nhập của trang web bán quần áo
- Giao diện đăng ký khách hàng:
Hình 3.9: Giao diện đăng ký của trang web bán quần áo
- Giang diện đăng nhập admin:
Hình 3.10: Giao diện đăng nhập admin của trang web bán quần áo
- Giao diện quản lý sản phẩm:
Hình 3.11: Giao diện trang quản lý sản phẩm của trang web bán quần áo
- Giao diện thêm sản phẩm:
Hình 3.12: Giao diện trang thêm sản phẩm của trang web bán quần áo
- Giao diện cập nhật sản phẩm:
Hình 3.13: Giao diện trang cập nhật sản phẩm của trang web bán quần áo
Nhóm chúng em sẽ tách ra một số module có trong trang web để tiến hành kiểm thử, bao gồm:
- Module đăng ký khách hàng
- Module đăng nhập khách hàng
- Module tìm kiếm sản phẩm
- Module thêm, sửa, xóa sản phẩm
- Module phản hồi từ khách hàng
3.2.1 Phân vùng tương đương cho từng module a Module đăng ký khách hàng
- Điền đầy đủ thông tin vào các trường “Họ tên”, “Tên đăng nhập”, “Mật khẩu”,
“Email” (Nhập đúng định dạng email), “Số điện thoại”, “Địa chỉ”, “Ngày sinh”.Phân vùng không hợp lệ
- Nhập thiếu một trong các trường “Họ tên”, “Tên đăng nhập”, “Mật khẩu”,
“Email”, “Số điện thoại”, “Địa chỉ”, “Ngày sinh”
- Không điền thông tin gì
- Nhập sai định dạng email
- Bị trùng tên đăng nhập
- Bị trùng số điện thoại b Module đăng nhập khách hàng
- Điền đúng thông tin đã đăng ký vào 2 trường “Tên đăng nhập”, “Mật khẩu”
Phân vùng không hợp lệ:
- Không nhập “Tên đăng nhập”
- Không nhập cả 2 “Tên đăng nhập” và “Mật khẩu”
- Nhập thông tin không đúng với thông tin đã đăng ký c Module đăng nhập admin
- Điền đúng thông tin đã đăng ký vào 2 trường “Tên đăng nhập”, “Mật khẩu”
Phân vùng không hợp lệ:
- Không nhập “Tên đăng nhập”
- Không nhập cả 2 “Tên đăng nhập” và “Mật khẩu”
- Nhập thông tin không đúng với tài khoản admin đã được cấp d Module tìm kiếm sản phẩm
- Tìm kiếm theo từ khoá: Đây là tính năng cơ bản nhất của một chức năng tìm kiếm sản phẩm Nó cho phép người dùng nhập từ khoá tìm kiếm và hiển thị kết quả phù hợp nhất với yêu cầu của họ.
- Bộ lọc: Tính năng này cho phép người dùng lọc kết quả tìm kiếm theo các tiêu chí như giá cả, thương hiệu, kích thước, màu sắc, và nhiều yếu tố khác Điều này giúp cải thiện trải nghiệm người dùng bằng cách giảm bớt số lượng kết quả không cần thiết.
- Sắp xếp kết quả: Người dùng có thể sắp xếp kết quả tìm kiếm theo nhiều tiêu chí khác nhau như giá từ thấp đến cao, từ cao đến thấp, độ phổ biến, đánh giá của người dùng, v.v.
- Gợi ý tìm kiếm: Hệ thống có thể cung cấp gợi ý tìm kiếm tự động dựa trên từ khoá mà người dùng nhập vào ô tìm kiếm Điều này giúp người dùng nhanh chóng tìm thấy những sản phẩm phù hợp mà họ có thể chưa nghĩ đến.
Phân vùng không hợp lệ:
- Kết quả không phù hợp: Khi người dùng nhập từ khoá tìm kiếm nhưng hệ thống không trả về kết quả phù hợp hoặc không có kết quả nào được tìm thấy Điều này có thể là do dữ liệu không được cập nhật đầy đủ hoặc không có thông tin liên quan đến từ khoá tìm kiếm.
- Bộ lọc không hoạt động: Nếu tính năng lọc không hoạt động đúng cách hoặc không cung cấp các tùy chọn phù hợp cho người dùng, điều này có thể gây khó khăn cho người dùng trong việc thu hẹp kết quả tìm kiếm.
- Sắp xếp không hiệu quả: Nếu tính năng sắp xếp không hoạt động đúng cách hoặc không tạo ra sự phân loại hợp lý, người dùng có thể gặp khó khăn trong việc tìm kiếm sản phẩm mong muốn.
- Gợi ý tìm kiếm không chính xác: Nếu hệ thống cung cấp các gợi ý tìm kiếm không chính xác hoặc không phù hợp với nhu cầu của người dùng, điều này có thể gây khó chịu hoặc làm giảm trải nghiệm người dùng. e Module giỏ hàng
- Thêm sản phẩm vào giỏ hàng: Người dùng có thể thêm sản phẩm vào giỏ hàng từ trang sản phẩm một cách dễ dàng và thuận tiện.
- Xóa sản phẩm khỏi giỏ hàng: Người dùng có thể loại bỏ sản phẩm ra khỏi giỏ hàng nếu họ muốn.
- Thay đổi số lượng sản phẩm: Người dùng có thể điều chỉnh số lượng sản phẩm trong giỏ hàng của họ một cách linh hoạt.
- Tính toán tổng giá trị: Hệ thống tính toán tổng giá trị của các sản phẩm trong giỏ hàng, bao gồm cả số tiền vận chuyển và thuế (nếu có), để người dùng có thể biết được tổng chi phí của đơn hàng của họ.
Phân vùng không hợp lệ:
- Lỗi trong tính toán tổng giá trị: Nếu hệ thống tính toán tổng giá trị sản phẩm trong giỏ hàng không chính xác, điều này sẽ gây ra sự không hài lòng cho người dùng và có thể dẫn đến lỗi trong quá trình thanh toán.
- Sản phẩm không có sẵn: Nếu sản phẩm mà người dùng thêm vào giỏ hàng không còn sẵn hàng, hệ thống cần thông báo cho họ biết và loại bỏ sản phẩm đó khỏi giỏ hàng.
- Lỗi khi thêm hoặc xóa sản phẩm: Nếu người dùng gặp lỗi khi thêm hoặc xóa sản phẩm khỏi giỏ hàng, điều này sẽ gây ra sự không hài lòng và làm giảm trải nghiệm của họ.
Thiết kế testcase
Dựa vào kết quả phân vùng tương đương từng module ở trên, ta thiết kế các từng testcase cho từng module: a Testcase đăng ký khách hàng
Hình 3.14: Tescase đăng ký khách hàng
Hình 3.15: Tescase đăng ký khách hàng (tiếp)
Hình 3.16: Testcase đăng ký khách hàng (tiếp
Hình 3.17: Testcase đăng ký khách hàng (tiếp)
Hình 3.18: Testcase đăng ký khách hàng (tiếp) b Testcase đăng nhập khách hàng
Hình 3.19: Testcase đăng nhập khách hàng c Testcase đăng nhập admin
Hình 3.20: Testcase đăng nhập admin d Testcase tìm kiếm sản phẩm
Hình 3.21: Testcase tìm kiếm sản phẩm e Testcase giỏ hàng
Hình 3.22: Testcase giỏ hàng f Testcase thanh toán
Hình 3.23: Testcase thanh toán g Testcase thêm, sửa, xóa sản phẩm
Hình 3.24: Testcase thêm, sửa, xóa sản phẩm
Hình 3.25: Testcase thêm, sửa, xóa sản phẩm (tiếp) h Testcase phản hồi từ khách hàng
Hình 3.26: Testcase phản hồi từ khách hàng
Test các module với Selenium IDE và đánh giá kết quả
a Module đăng ký khách hàng Đăng ký khi để trống trường “Họ tên”:
Hình 3.27: Test module đăng ký khi để trống "Họ tên"
Hình 3.28: Test module đăng ký khi để trống "Họ tên" (tiếp) Đăng ký khi để trống “Tên đăng nhập”:
Hình 3.29: Test module đăng ký khi để trống "Tên đăng nhập"
HÌnh 3.30: Test module đăng ký khi để trống "Tên đăng nhập" (tiếp) Đăng ký khi để trống “Mật khẩu”:
Hình 3.31: Test module đăng ký khi để trống "Mật khẩu"
Hình 3.32: Test module đăng ký khi để trống "Mật khẩu" (tiếp) Đăng ký khi để trống email:
Hình 3.33: Test module đăng ký khi để trống "Email"
Hình 3.34: Test module đăng ký khi để trống "Email" (tiếp) Đăng ký khi để trống “Số điện thoại”:
HÌnh 3.35: Test module đăng ký khi để trống "Số điện thoại"
Hình 3.36: Test module đăng ký khi để trống "Số điện thoại" (tiếp) Đăng ký khi để trống “Địa chỉ”:
Hình 3.37: Test module đăng ký khi để trống "Địa chỉ"
Hình 3.38: Test module đăng ký khi để trống "Địa chỉ" (tiếp) Đăng ký khi để trống “Ngày sinh”:
HÌnh 3.39: Test module đăng ký khi để trống "Ngày sinh"
Hình 3.40: Test module đăng ký khi để trống "Ngày sinh" (tiếp) Đăng ký khi để trống tất cả thông tin:
Hình 3.41: Test module đăng ký khi để trống tất cả thông tin Đăng ký không đúng định dạng email:
Hình 3.42: Test module đăng ký không đúng định dạng email
Hình 3.43:Test module đăng ký không đúng định dạng email (tiếp) Đăng ký khi nhập đầy đủ thông tin, đúng định dạng email:
Hình 3.44: Test module đăng ký khi nhập đầy đủ thông tin, đúng định dạng email
Hình 3.45: Test module đăng ký khi nhập đầy đủ thông tin, đúng định dạng email (tiếp) Đăng ký khi tên đăng nhập đã tồn tại:
Hình 3.46: Test module đăng ký khi tên đăng nhập đã tồn tại
Hình 3.47: Test module đăng ký khi tên đăng nhập đã tồn tại (tiếp) Đăng ký khi email đã tồn tại:
Hình 3.48: Test module đăng ký khi email đã tồn tại
Hình 3.49: Test module đăng ký khi email đã tồn tại (tiếp) Đăng ký khi số điện thoại đã tồn tại:
Hình 3.50: Test module đăng ký khi số điện thoại đã tồn tại
Hình 3.51: Test module đăng ký khi số điện thoại đã tồn tại (tiếp) b Module đăng nhập khách hàng Đăng nhập khi để trống “Tên đăng nhập”:
Hình 3.52: Test module đăng nhập khi để trống "Tên đăng nhập" Đăng nhập khi để trống “Mật khẩu”:
Hình 3.53: Test module đăng nhập khi để trống "Mật khẩu" Đăng nhập khi để trống cả hai: Đăng nhập đúng thông tin đã đăng ký:
Hình 3.55: Test module đăng nhập khi nhập đúng thông tin đã đăng ký
Hình 3.56: Test module đăng nhập khi nhập đúng thông tin đã đăng ký (tiếp) Đăng nhập sai thông tin đã đăng ký:
Hình 3.57: Test module đăng nhập khi nhập sai thông tin c Module đăng nhập admin Đăng nhập khi để trống “Tên đăng nhập”:
Hình 3.58: Test module đăng nhập admin khi để trống "Tên đăng nhập" Đăng nhập khi để trống “Mật khẩu”:
HÌnh 3.59: Test module đăng nhập admin khi để trống "Mật khẩu" Đăng nhập khi để trống cả hai:
Hình 3.60: Test module đăng nhập admin khi để trống cả hai Đăng nhập đúng thông tin:
Hình 3.61: Test module đăng nhập admin khi nhập đúng thông tin Đăng nhập sai thông tin:
Hình 3.62: Test module đăng nhập admin khi nhập sai thông tin d Module tìm kiếm sản phẩm
Tìm kiếm sản phẩm có ký tự “váy”:
Hình 3.63: Test module tìm kiếm sản phẩm
Tìm kiếm sản phẩm với ký tự không trùng khớp với bất kỳ sản phẩm nào :
Hình 3.64: Test module tìm kiếm sản phẩm (tiếp)
Hủy tìm kiếm sản phẩm:
Hình 3.65: Test module hủy tìm kiếm sản phẩm e Module giỏ hàng
Thêm sản phẩm vào giỏ hàng:
Hình 3.66: Test module giỏ hàng
Thêm sản phẩm đã có trong giỏ hàng:
Hình 3.67: Test module giỏ hàng (tiếp)
Kiểm tra sản phẩm trong giỏ hàng:
Hình 3.68:Test module kiểm tra giỏ hàng
Tăng số lượng sản phẩm trong giỏ hàng:
Hình 3.69: Test module tăng số lượng sản phẩm giỏ hàng
Giảm số lượng sản phẩm trong giỏ hàng:
Hình 3.70: Test module giảm số lượng trong giỏ hàng f Module thanh toán
Thanh toán khi khách hàng chưa đăng nhập:
Hình 3.71: Test module thanh toán
Thanh toán khi khách hàng đã đăng nhập:
Hình 3.72: Test module thanh toán (tiếp)
Thanh toán khi chưa có sản phẩm trong giỏ hàng:
Hình 3.73: Test module thanh toán (tiếp) g Module thêm, sửa, xóa sản phẩm
Thêm mới sản phẩm với mục “Tên sản phẩm” để trống:
Hình 3.74: Test module thêm sản phẩm với mục "Tên sản phẩm" để trống
Thêm mới sản phẩm với mục “Mô tả” để trống:
Hình 3.75: Test module thêm sản phẩm với mục "Mô tả" để trống
Thêm mới sản phẩm với mục “Giá” để trống:
Thêm mới sản phẩm với mục “Giảm giá” để trống:
Hình 3.77: Test module thêm mới sản phẩm với mục "Giảm giá" để trống
Thêm mới sản phẩm với mục “Hình ảnh” để trống:
Hình 3.78: Test module thêm sản phẩm với mục "Giảm giá" để trống
Thêm mới sản phẩm với mục “Mã danh mục” để trống:
Hình 3.79: Test module thêm mới sản phẩm với mục "Mã danh mục" để trống
Thêm mới sản phẩm với mục “Ngày tạo” để trống:
Thêm mới sản phẩm mà không để mục nào trống :
Hình 3.81: Test module thêm sản phẩm thành công
Cập nhật sản phẩm khi bỏ trống “tên sản phẩm”:
Hình 3.82: Test module cập nhật sản phẩm khi bỏ trống "Tên sản phẩm"
Cập nhật sản phẩm khi bỏ trống “mô tả”:
Hình 3.83: Test module cập nhật sản phẩm khi bỏ trống "Mô tả"
Cập nhật sản phẩm khi bỏ trống “giá”:
Hình 3.84:Test module cập nhật sản phẩm khi bỏ trống "Giá"
Hình 3.85: Test module cập nhật sản phẩm khi bỏ trống "Giá" (tiếp)
Cập nhật sản phẩm khi bỏ trống “giamgia”:
Hình 3.86: Testcase cập nhật sản phẩm khi bỏ trống "Giảm giá"
Cập nhật sản phẩm khi bỏ trống “hinhanh”:
Hình 3.87: Test module cập nhật sản phẩm khi bỏ trống "Hình ảnh"
Cập nhật sản phẩm khi bỏ trống “madanhmuc”:
Hình 3.88: Test module cập nhật sản phẩm khi bỏ trống "Mã danh mục"
Cập nhật sản phẩm khi bỏ trống “ngaytao”:
Hình 3.89: Test module cập nhật sản phẩm khi bỏ trống "Ngày tạo"
Cập nhật sản phẩm thành công:
Hình 3.90: Test module cập nhật sản phẩm thành công
Hình 3.91: Test module xóa sản phẩm
Hình 3.92: Test module hủy xóa sản phẩm h Module gửi phản hồi
Gửi phản hồi với nội dung “Hello”:
Hình 3.93: Test module phản hồi từ khách hàng
Gửi phản hồi không có nội dung:
Hình 3.94: Test module phản hồi từ khách hàng (tiếp)
- Module đăng ký khách hàng: Đã kiểm tra 13 ca và tất cả đều pass Điều này cho thấy chức năng đăng ký khách hàng hoạt động tốt và đáng tin cậy.
- Module đăng nhập khách hàng: Đã kiểm tra 5 ca và tất cả đều pass Tính năng đăng nhập khách hàng cũng hoạt động đúng như mong đợi.
- Module đăng nhập admin: Đã kiểm tra 5 ca và tất cả đều pass Điều này cho thấy tính năng đăng nhập admin cũng hoạt động đúng như kỳ vọng.
- Module tìm kiếm sản phẩm: Đã kiểm tra 3 ca và tất cả đều pass Tính năng tìm kiếm sản phẩm cũng hoạt động tốt.
- Module giỏ hàng: Đã kiểm tra 6 ca và tất cả đều pass Điều này cho thấy tính năng giỏ hàng hoạt động ổn định và đáng tin cậy.
- Module thanh toán: Đã kiểm tra 3 ca, pass 2 ca và fail 1 ca Việc có một ca kiểm thử không pass cho thấy cần phải kiểm tra lại tính năng thanh toán để sửa lỗi.
- Module thêm, sửa, xóa sản phẩm: Đã kiểm tra 22 ca và có 3 ca fail Tính năng này hoạt động ổn định ở mức cơ bản nhưng mà vẫn lỗi ở số chỗ nhỏ, cần được cải thiện.
- Module gửi phản hồi: Đã kiểm tra 2 ca và tất cả đều pass Tính năng này hoạt động ổn định.
Tóm lại, website đã triển khai một số tính năng cơ bản một cách thành công và ổn định,tuy nhiên vẫn cần có những cải tiến và sửa đổi nhất định để cải thiện trải nghiệm người dùng và đảm bảo tính chính xác của các tính năng quan trọng như thanh toán và quản lý sản phẩm.