Đây là bài tập lớn môn Đồ án hệ thống thông tin mà nhóm mình đã làm và được đánh giá cao từ giáo viên hướng dẫn, các bạn có thể tham khảo cách làm của bọn mình. Bọn mình làm khá chi tiết từng phần cụ thể thiết kế word theo đúng chuẩn sạch đẹp.
TỔNG QUAN VỀ PHẦN MỀM VÀ LỖI PHẦN MỀM
Định nghĩa phần mềm và công nghệ phần mềm
Phần mềm là hệ thống ngôn ngữ lập trình được tổ chức theo cấu trúc nhất định, bao gồm các câu lệnh và chỉ thị Ngoài các câu lệnh, phần mềm còn chứa dữ liệu và file hướng dẫn để thực hiện các chức năng trên thiết bị máy tính Để thực hiện nhiệm vụ, phần mềm gửi câu lệnh đến phần cứng, cho phép nó thực hiện hoặc cung cấp dữ liệu cho các chương trình và phần mềm khác.
Công nghệ phần mềm là quá trình áp dụng hệ thống các công cụ và kỹ thuật để phát triển ứng dụng máy tính Nó bao gồm việc áp dụng các quan điểm và quy trình có kỷ luật nhằm phát triển, vận hành và bảo trì phần mềm Các tác vụ chính trong công nghệ phần mềm bao gồm thiết kế, xây dựng, kiểm thử và bảo trì phần mềm.
Mục tiêu chính của công nghệ phần mềm là phát triển các ứng dụng chất lượng cao, giảm thiểu tối đa lỗi trong quá trình hoạt động, đồng thời tạo điều kiện thuận lợi cho việc bảo trì và nâng cấp phần mềm.
Vòng đời của phần mềm
Vòng đời phần mềm bao gồm một chuỗi các giai đoạn mà phần mềm trải qua, từ việc khám phá ý tưởng cho đến khi phần mềm bị loại bỏ Mô hình này được chia thành 7 giai đoạn chính.
1) Thu thập yêu cầu: Giai đoạn này tập trung vào việc thu thập thông tin và yêu cầu từ khách hàng hoặc người dùng.
2) Phân tích yêu cầu: Giai đoạn này nhằm xác định các yêu cầu của khách hàng hoặc người dùng, phân tích và đưa ra giải pháp phù hợp.
3) Thiết kế: Giai đoạn này tập trung vào thiết kế kiến trúc và cấu trúc của phần mềm, bao gồm cả giao diện người dùng.
4) Lập trình: Giai đoạn này tập trung vào việc viết mã và triển khai giải pháp đã thiết kế.
5) Kiểm thử: Giai đoạn này nhằm đảm bảo rằng phần mềm hoạt động đúng và đáp ứng được các yêu cầu đã đề ra.
6) Triển khai: Giai đoạn này tập trung vào triển khai phần mềm vào môi trường sản xuất.
7) Bảo trì: Giai đoạn này nhằm duy trì và nâng cấp phần mềm trong quá trình sử dụng,đảm bảo tính ổn định và an toàn của phần mềm7).
Chất lượng phần mềm và đảm bảo chất lượng phần mềm
Chất lượng phần mềm theo Pressman được định nghĩa là sự phù hợp với các yêu cầu về hiệu năng và chức năng, cùng với các tiêu chuẩn phát triển phần mềm được ghi chép rõ ràng Định nghĩa này nhấn mạnh ba yêu cầu cần được đáp ứng để đảm bảo chất lượng phần mềm trong quá trình phát triển.
- Các yêu cầu chức năng rõ ràng là nhân tố chính quyết định chất lượng đầu ra của phần mềm
- Các tiêu chuẩn chất lượng phần mềm sẽ được nói đến trong hợp đồng.
Trong quá trình phát triển phần mềm, các đặc tính ngầm định cần được đáp ứng mặc dù không được nêu rõ trong hợp đồng Theo Daniel Galin, đảm bảo chất lượng phần mềm là một tập hợp các hành động được lên kế hoạch hệ thống nhằm cung cấp niềm tin rằng quá trình phát triển phần mềm đáp ứng các yêu cầu chức năng kỹ thuật, cũng như các yêu cầu quản lý về lịch trình và ngân sách.
Lỗi phần mềm
Lỗi phần mềm có thể được định nghĩa đơn giản là sự không khớp giữa chương trình và đặc tả của nó.
Dựa vào định nghĩa, ta có thể phân loại lỗi phần mềm thành 3 dạng:
- Lỗi sai: Sản phẩm phần mềm được xây dựng khác với đặc tả.
- Lỗi thiếu: Các yêu cầu của sản phẩm phần mềm đã có trong đặc tả nhưng lại không có trong sản phẩm thực tế.
- Lỗi thừa: Sản phẩm thực tế có những tính năng không có trong tài liệu đặc tả.
Lỗi phần mềm có thể xuất phát từ nhiều nguyên nhân, bao gồm cả nguyên nhân chủ quan và khách quan Dưới đây là chín nguyên nhân chính gây ra lỗi phần mềm.
1) Định nghĩa các yêu cầu bị lỗi: Những lỗi trong việc xác định yêu cầu thường nằm ở phía khách hàng Một số lỗi thường gặp là: định nghĩa sai yêu cầu, lỗi không hoàn chỉnh, thiếu các yêu cầu quan trọng hoặc là quá chú trọng các yêu cầu không thật sự cần thiết.
2) Các lỗi trong giao tiếp giữa khách hàng và nhà phát triển : Hiểu lầm trong giao tiếp giữa khách hàng và nhà phát triển cũng là nguyên nhân gây lỗi Những lỗi này thường xuất hiện trong giai đoạn đầu của dự án Một số lỗi hay gặp phải: hiểu sai chỉ dẫn trong tài liệu yêu cầu, hiểu sai thay đổi khi khách hàng trình bày bằng lời nói và tài liệu, hiểu sai về phản hồi và thiếu + quan tâm đến những đề cập của khách hàng.
Để khắc phục vấn đề giao tiếp giữa khách hàng và nhà cung cấp, cần thành lập một ủy ban liên kết Ủy ban này sẽ do quản trị dự án lãnh đạo, và khách hàng cần giới thiệu những người có hiểu biết về mặt nghiệp vụ tham gia vào ủy ban.
3) Sai lệch có chủ ý với các yêu cầu phần mềm: Trong một số trường hợp các nhà phát triển cố tình làm sai lệnh các yêu cầu trong tài liệu đặc tả Nguyên nhân của việc này đến từ các áp lực thời gian, ngân sách, hay cố tình sử dụng lại các mô-đun từ các dự án trước mà chưa phân tích đầy đủ những thay đổi để thích nghi với các yêu cầu mới.
Để khắc phục vấn đề, cần dựa vào các thống kê để xác định giải pháp phù hợp, sắp xếp ưu tiên để quyết định yêu cầu nào có thể loại bỏ và mô-đun nào có thể tái sử dụng.
4) Các lỗi thiết kế logic: Lỗi phần mềm xảy ra trong quá trình các chuyên gia thiết kế hệ thống, các kiến trúc sư hệ thống, kỹ sư phần mềm, các nhà phân tích xây dựng phần mềm theo yêu cầu Các lỗi điển hình bao gồm:
- Định nghĩa các yêu cầu phần mềm bằng các thuật toán sai Quy trình định nghĩa có chứa trình tự lỗi.
- Sai sót trong các định nghĩa biên như >3 hay >=3.
- Thiếu sót các trạng thái hệ thống phần mềm được yêu cầu.
5) Các lỗi lập trình: Có rất nhiều lý do dẫn đến việc các lập trình viên gây ra các lỗi lập trình Những lý do này bao gồm: sự hiểu sai các tài liệu thiết kế, ngôn ngữ; sai sót trong ngôn ngữ lập trình; sai sót trong việc áp dụng các công cụ phát triển; sai sót trong lựa chọn dữ liệu
6) Không tuân thủ theo các tài liệu hướng dẫn và tiêu chuẩn lập trình: Các lỗi phần mềm có thể đến từ việc không tuân thủ các tài liệu và tiêu chuẩn lập trình của các tổ chức phát triển phần mềm.
7) Thiếu sót trong quá trình kiểm thử: Lỗi phần mềm có thể đến từ chính quá trình kiểm thử khi mà người kiểm thử để lọt lỗi Những lỗi này đến từ các nguyên nhân sau đây:
- Kế hoạch kiểm thử chưa hoàn chỉnh, để sót yêu cầu cần kiểm thử.
- Lỗi trong tài liệu và báo cáo kiểm thử.
- Việc sửa chữa các lỗi được phát hiện không hoàn chỉnh do áp lực thời gian hay do thiếu cẩn thận.
Giải pháp: Lên kế hoạch kiểm thử cụ thể tại giai đoạn đầu của dự án.
8) Các lỗi thủ tục: Các thủ tục hướng dẫn cho người sử dụng tại từng bước của tiến trình Chúng có tầm quan trọng đặc biệt trong các hệ thống phần mềm phức tạp mà các tiến trình được thực bằng nhiều bước, mỗi bước có thể có nhiều kiểu dữ liệu và cho phép kiểm tra các kết quả trung gian Các lỗi có thể đến từ việc viết các thủ tục.
9) Các lỗi về tài liệu: Các lỗi về tài liệu là vấn đề của các đội phát triển và bảo trì khi có những sai sót trong các tài liệu liên quan Những lỗi này có thể là nguyên nhân gây ra lỗi trong giai đoạn phát triển kế tiếp và giai đoạn bảo trì.
Quy trình xử lý lỗi
Trước khi giới thiệu về quy trình xử lý lỗi, chúng ta sẽ trình bày về các trạng thái có thể có của lỗi.
Quy trình xử lý lỗi
Quy trình xử lý lỗi có thể bao gồm 6 bước sau:
1) Bắt đầu: phát hiện phần mềm có lỗi và đưa lỗi lên hệ thống quản lý lỗi (Open)
2) Gán lỗi cho nhân viên phát triển
5) Đóng lỗi (Closed)/ Reopen lỗi (Open)
TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM
Kiểm thử phần mềm
2.1.1 Khái niệm và mục tiêu của kiểm thử phần mềm
Kiểm thử phần mềm là quá trình thực hiện hệ thống phần mềm nhằm xác định tính chính xác của nó so với các yêu cầu đã được đặt ra, đồng thời đảm bảo phần mềm hoạt động hiệu quả trong môi trường dự kiến.
Mục đích của kiểm thử phần mềm là tìm ra lỗi chưa được phát hiện, tìm một cách sớm nhất và bảo đảm rằng lỗi sẽ được sửa
Mục tiêu của kiểm thử phần mềm là thiết kế và thực hiện tài liệu kiểm thử một cách hệ thống, nhằm đạt hiệu quả cao trong khi tiết kiệm thời gian, công sức và chi phí.
Kiểm thử phần mềm là hoạt động thiết yếu để đảm bảo chất lượng sản phẩm và là yếu tố sống còn trong các dự án phát triển hoặc gia công phần mềm Do đó, kiểm thử phần mềm đã trở thành quy trình bắt buộc trong các dự án phát triển phần mềm toàn cầu.
2.1.2 Quy trình kiểm thử phần mềm
Quy trình kiểm thử phần mềm xác định các giai đoạn trong kiểm thử, mặc dù không có quy trình tiêu chuẩn cố định nào trên thế giới Tuy nhiên, quy trình kiểm thử cơ bản thường bao gồm các giai đoạn sau:
1 Requirenment analysis - Phân tích yêu cầu
2 Test planning - Lập kế hoạch kiểm thử
3 Test case development - Thiết kế kịch bản kiểm thử
4 Test environment set up - Thiết lập môi trường kiểm thử
5 Test execution - Thực hiện kiểm thử
6 Test cycle closure - Đóng chu trình kiểm thử
Các giai đoạn kiểm thử diễn ra theo trình tự, với mỗi giai đoạn có mục tiêu, đầu vào và kết quả đầu ra riêng biệt Tuy nhiên, mục đích cuối cùng vẫn là đảm bảo chất lượng sản phẩm phần mềm đạt tiêu chuẩn tốt nhất.
2.1.3 Các mức độ kiểm thử
Các mức kiểm thử được thể hiện ở hình 2.1
Hình 2.1 Bốn mức độ cơ bản của kiểm thử phần mềm
Mức 1 - Kiểm thử đơn vị (Unit Test)
A unit is the smallest testable component of software, which can include functions, procedures, classes, or methods.
Mức 2 - Kiểm thử tích hợp (Integration Test)
Kiểm thử tích hợp là quá trình kết hợp các thành phần của một ứng dụng và kiểm tra chúng như một ứng dụng hoàn chỉnh Trong khi kiểm thử đơn vị tập trung vào việc kiểm tra các thành phần riêng lẻ, kiểm thử tích hợp chú trọng vào việc kiểm tra sự giao tiếp và tương tác giữa các thành phần này.
Mức 3 - Kiểm thử hệ thống (System Test)
Mục đích của kiểm thử hệ thống là xác định xem thiết kế và toàn bộ hệ thống đã được tích hợp có đáp ứng đầy đủ các yêu cầu đã đề ra hay không.
Kiểm thử hệ thống đánh giá cả hành vi chức năng của phần mềm và các yêu cầu chất lượng như độ tin cậy, tính tiện lợi, hiệu năng và bảo mật.
Kiểm thử hệ thống diễn ra sau khi tất cả các thành phần phần mềm đã được tích hợp thành công Sự khác biệt chính giữa kiểm thử tích hợp và kiểm thử hệ thống là kiểm thử hệ thống tập trung vào hành vi và lỗi toàn diện của hệ thống, trong khi kiểm thử tích hợp chú trọng vào sự tương tác giữa các đơn thể hoặc đối tượng khi hoạt động cùng nhau Thông thường, cần thực hiện kiểm thử đơn vị và kiểm thử tích hợp để đảm bảo mọi chức năng hoạt động đúng cách.
Unit và sự tương tác giữa chúng hoạt động chính xác trước khi thực hiện kiểm thử hệ thống.
Mức 4 - Kiểm thử chấp nhận sản phẩm (Acceptance Test)
Mục đích của kiểm thử chấp nhận là xác định khả năng chấp nhận cuối cùng của sản phẩm, đảm bảo rằng sản phẩm đáp ứng đầy đủ các yêu cầu của khách hàng và được khách hàng chấp nhận.
Trong giai đoạn kiểm thử chấp nhận, khách hàng đóng vai trò là người kiểm tra phần mềm Họ sẽ đánh giá sản phẩm dựa trên những thao tác sử dụng quen thuộc, do đó, việc kiểm tra ở giai đoạn này rất quan trọng để đảm bảo không có sự hiểu lầm về yêu cầu và mong đợi của khách hàng.
2.1.4 Các phương pháp kiểm thử phần mềm
Có 3 phương pháp kiểm thử phần mềm:
Trong kiểm thử hộp trắng, người kiểm thử xem xét cấu trúc mã và thuật toán của chương trình Các trường hợp kiểm thử được thiết kế dựa trên cách thức hoạt động của mã nguồn Người kiểm thử có quyền truy cập vào mã nguồn để thực hiện kiểm tra, từ đó hỗ trợ cho quá trình kiểm thử hiệu quả hơn.
Kiểm thử hộp đen không yêu cầu người kiểm thử có kiến thức về mã hay thuật toán của chương trình Phương pháp này tập trung vào việc kiểm tra các chức năng của hệ thống dựa trên các "Đặc tả yêu cầu" Các trường hợp kiểm thử thường được xây dựng xung quanh những yêu cầu này.
Kiểm thử hộp đen là phương pháp kiểm tra phần mềm dựa trên đầu vào và đầu ra của chương trình, mà không cần quan tâm đến mã nguồn bên trong.
Kiểm thử hộp xám là một phương pháp kiểm thử phần mềm được kết hợp giữa phương pháp kiểm thử hộp đen và phương pháp kiểm thử hộp trắng.
Kiểm thử tự động
2.2.1 Khái niệm 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 test case, giúp rút ngắn thời gian kiểm thử thông qua việc sử dụng công cụ.
2.2.2 Quy trình kiểm thử tự động
Quy trình kiểm thử tự động gồm 4 bước:
Bước 1: Lập kế hoạch kiểm thử
Bước 2: Thiết kế test case
Bước 3: Phát triển test script
Bước 4: Thực hiện kiểm thử
Bước 5: Đánh giá kết quả kiểm thử
2.2.3 So sánh kiểm thử tự động và kiểm thử thủ công
Kiểm thử tự động mang lại độ tin cậy cao hơn so với kiểm thử thủ công nhờ vào sự ổn định vượt trội của nó, đặc biệt khi phải xử lý một lượng lớn test case.
Khả năng lặp (Repeatability) của công cụ kiểm thử tự động giúp các tester tránh việc lặp lại các thao tác như nhập dữ liệu, click và kiểm tra kết quả một cách nhàm chán, đồng thời đảm bảo độ tin cậy và ổn định cao.
Khả năng tái sử dụng trong kiểm thử tự động cho phép một bộ kiểm thử được áp dụng cho nhiều phiên bản ứng dụng khác nhau, mang lại hiệu quả cao và tiết kiệm thời gian.
Kiểm thử tự động mang lại tốc độ thực thi nhanh chóng, với khả năng hoàn thành một test case trong khoảng 30 giây so với 5 phút khi thực hiện thủ công Bên cạnh đó, việc áp dụng kiểm thử tự động một cách hiệu quả giúp tiết kiệm chi phí, thời gian và nhân lực, do quy trình này nhanh hơn nhiều so với kiểm thử thủ công và yêu cầu ít nhân lực cho việc thực thi và bảo trì các script.
Khó khăn trong việc mở rộng và bảo trì kiểm thử tự động so với kiểm thử thủ công là một vấn đề lớn Để mở rộng phạm vi kiểm thử tự động, số lượng công việc cần thực hiện nhiều hơn và phức tạp hơn so với kiểm thử thủ công Việc cập nhật một test case thủ công chỉ cần mở ra và chỉnh sửa đơn giản, trong khi kiểm thử tự động yêu cầu nhiều công việc như debug, thay đổi dữ liệu đầu vào và cập nhật mã nguồn, làm cho quá trình này trở nên khó khăn hơn.
Khả năng bao phủ của kiểm thử tự động hiện nay còn thấp do những khó khăn trong việc ứng dụng và mở rộng, cùng với yêu cầu về nhiều kỹ năng lập trình.
Mặc dù hiện nay có nhiều công cụ hỗ trợ kiểm thử tự động hiệu quả, nhưng chúng vẫn tồn tại nhiều hạn chế Hơn nữa, số lượng nhân lực có khả năng sử dụng thành thạo các công cụ này vẫn còn hạn chế.
2.2.4 Một số công cụ kiểm thử tự động phổ biển
CÔNG CỤ KIỂM THỬ TỰ ĐỘNG SELENIUM VÀ SELENIUM WEBDRIVER
Khái quát về Selenium
Selenium là một công cụ kiểm thử tự động cho ứng dụng Web, hỗ trợ nhiều trình duyệt phổ biến như Firefox, Internet Explorer và Safari, cùng với các hệ điều hành như Windows, Linux và Mac Nó tương thích với nhiều ngôn ngữ lập trình Web như C#, Java, Perl, PHP, Python và Ruby Người dùng có thể sử dụng Selenium mà không cần cài đặt thêm các công cụ bổ trợ, mặc dù nó có thể kết hợp với Junit và TestNG để nâng cao hiệu quả kiểm thử.
Selenium nổi bật với ưu điểm mã nguồn mở, cho phép người dùng sử dụng miễn phí mà không cần lo lắng về phí bản quyền hay thời hạn sử dụng, điều này làm cho nó trở thành một công cụ kiểm thử lý tưởng so với các công cụ khác.
Selenium có một cộng đồng hỗ trợ mạnh mẽ nhờ vào tính chất mã nguồn mở và sự phát triển từ Google, mang lại sự yên tâm về hỗ trợ miễn phí Tuy nhiên, điểm yếu của Selenium là do tính miễn phí và cộng đồng đông đảo, dẫn đến nhiều giải pháp cho một vấn đề, trong đó một số có thể không hữu ích Hơn nữa, việc yêu cầu hỗ trợ không thể bị thúc ép hay đặt deadline.
- Selenium hỗ trợ nhiều ngôn ngữ lập trình.
Selenium có khả năng hoạt động trên nhiều hệ điều hành mà không cần chỉnh sửa script nhiều Tuy nhiên, điều này chủ yếu phụ thuộc vào kỹ năng viết script của người dùng.
Chạy test case ở chế độ nền cho phép chúng ta thực hiện các công việc khác trên cùng một máy tính trong khi test script đang được thực thi Điều này giúp tiết kiệm tài nguyên máy móc và nâng cao hiệu quả làm việc.
Selenium không hỗ trợ tương tác với ứng dụng Windows, bao gồm cả các hộp thoại như Download/Upload Để xử lý các tình huống cần tương tác với hệ thống hoặc ứng dụng bên thứ ba, chúng ta cần sử dụng các thư viện bổ sung như AutoIt hoặc Coded UI.
Selenium là một công cụ hỗ trợ kiểm tra tính năng, nhưng không thể giả lập nhiều người dùng ảo đồng thời Nó thực hiện kiểm thử tự động dựa trên kịch bản đã được thiết kế trước, giúp xác định xem đối tượng kiểm thử có hoạt động đúng như mong đợi hay không Các thành phần của Selenium đóng vai trò quan trọng trong quá trình này.
Selenium là bộ công cụ kiểm thử tự động cho ứng dụng web, bao gồm bốn thành phần chính: Selenium IDE, Selenium Grid, Selenium Remote Control (Selenium RC) và Selenium WebDriver (Selenium 2.0) Mỗi thành phần đóng vai trò quan trọng trong việc hỗ trợ phát triển tự động hóa kiểm thử ứng dụng web.
Selenium IDE (Intergrated Development Environment)
Selenium IDE là một add-on được phát triển cho trình duyệt Firefox, cho phép người dùng ghi lại các thao tác Mặc dù việc ghi lại chỉ có thể thực hiện trên Firefox, nhưng người dùng có thể phát lại các kịch bản trên nhiều trình duyệt khác như Internet Explorer và Chrome.
Selenium là công cụ hỗ trợ sinh mã tự động hoặc nạp mã viết tay, với chức năng "thu và chạy lại" (Record and Playback) giúp tiết kiệm thời gian viết kịch bản kiểm thử Chức năng này cho phép người dùng chạy lại các câu lệnh đã thu để kiểm thử hiệu quả Ngoài ra, Selenium IDE còn cho phép lưu kịch bản đã thu dưới nhiều ngôn ngữ lập trình khác nhau như Java, PHP, C#, Ruby, mang lại sự linh hoạt cho người dùng.
Selenium Core, được tích hợp trong Selenium IDE, là công cụ chạy các test script viết bằng Selenese Công cụ này có khả năng chạy test script trên hầu hết các trình duyệt, nhưng yêu cầu phải được cài đặt trên máy chủ của website cần kiểm tra, điều này gây khó khăn cho Tester khi không có quyền truy cập vào máy chủ đó.
Selenium Remote Control là một framework kiểm thử mạnh mẽ, cho phép thực hiện các hành động trên trình duyệt một cách tự động và tuyến tính Nó cung cấp cho các nhà phát triển khả năng tự động hóa kiểm thử bằng cách sử dụng ngôn ngữ lập trình, mang lại tính linh hoạt và khả năng mở rộng tối đa trong việc phát triển logic thử nghiệm.
Công cụ này hỗ trợ nhận các test script từ Selenium IDE, cho phép chỉnh sửa và cải tiến linh hoạt bằng nhiều ngôn ngữ lập trình khác nhau Nó có khả năng khởi động trình duyệt Web để thực hiện kiểm thử trực tiếp và lưu lại kết quả kiểm thử Selenium RC cung cấp API và thư viện cho các ngôn ngữ như HTML, Java, C#, Perl, PHP, Python và Ruby, giúp tích hợp kiểm thử tự động vào dự án xây dựng môi trường tự động.
Selenium WebDriver là phiên bản nâng cấp của Selenium Remote Control, hoạt động trực tiếp với trình duyệt ở cấp độ hệ điều hành, cho phép gửi lệnh trực tiếp và nhận kết quả từ trình duyệt.
Selenium Grid là một công cụ giúp người dùng thực hiện các kịch bản kiểm thử trên nhiều trình duyệt cùng lúc mà không cần phải thay đổi mã kiểm thử.
Selenium WebDriver
Tiền thân của Selenium WebDriver
Trước khi Selenium WebDriver ra đời, Selenium RC đã là công cụ chính trong một thời gian dài Mặc dù hiện nay Selenium RC không còn phổ biến như Selenium WebDriver, người dùng vẫn có thể tiếp tục phát triển các kịch bản kiểm thử với Selenium RC.
Selenium RC là một công cụ mạnh mẽ cho kiểm thử tự động ứng dụng Web, cho phép viết kịch bản kiểm thử phức tạp bằng các ngôn ngữ lập trình như Java, C#, Python, Perl và PHP Công cụ này hỗ trợ thực hiện các tác vụ như đọc và viết tệp tin, truy vấn cơ sở dữ liệu, và gửi email kết quả kiểm thử, giúp nâng cao hiệu quả và độ chính xác trong quy trình kiểm thử.
Các thành phần của Selenium RC gồm:
Máy chủ Selenium thực hiện phân tích và chạy các lệnh từ ứng dụng kiểm thử, đồng thời xử lý các thao tác như HTTP proxy, phân tích và xác minh các thông điệp HTTP giữa trình duyệt và ứng dụng cần kiểm tra.
Các thư viện máy khách cung cấp hỗ trợ lập trình để thực thi lệnh Selenium từ các chương trình Mỗi thư viện máy khách tương ứng với các ngôn ngữ lập trình khác nhau và bao gồm một tập hợp các chức năng để chạy lệnh Selenium, với mỗi giao diện cung cấp các chức năng lập trình hỗ trợ riêng cho Selenium.
Đặc trưng của Selenium WebDriver
Selenium WebDriver là một công cụ mạnh mẽ được phát triển từ Selenium IDE, Selenium RC và Selenium Grid Nó cho phép tương tác trực tiếp với trình duyệt mà không cần thông qua trung gian, khác với Selenium RC, vốn phụ thuộc vào một máy chủ.
Selenium 2.0 nổi bật với tính năng tích hợp WebDriver API, giúp khắc phục những hạn chế của Selenium RC API WebDriver được thiết kế với giao diện lập trình đơn giản hơn, cho phép lập trình viên sử dụng nhiều ngôn ngữ như HTML, Java, Net, Perl, Ruby để tạo kịch bản kiểm thử Điều này kết hợp với việc sử dụng các điều kiện và vòng lặp, giúp nâng cao độ chính xác của test script.
Selenium WebDriver đã được cải tiến để hỗ trợ kiểm thử các trang web động, nơi mà các phần tử có thể thay đổi liên tục mà không cần tải lại trang Điều này giúp quá trình kiểm thử diễn ra một cách hiệu quả mà không cần thực hiện lại khi có sự thay đổi.
Cách hoạt động của Selenium WebDriver
Selenium WebDriver là tập hợp các API mã nguồn mở, cho phép tạo và chạy các bài test tự động ở cấp độ trình duyệt và hệ điều hành
WebDriver protocol bao gồm một đầu cuối cục bộ (máy khách) gửi lệnh (test script) đến driver dành riêng cho trình duyệt, và driver này sẽ thực thi các lệnh trên phiên bản trình duyệt của nó.
Ví dụ: ChromeDriver sẽ thực hiện test trên Chrome; GeckoDriver sẽ làm điều đó trên Firefox.
Cấu trúc hoạt động của Selenium WebDriver.
API: Giúp chuyển các test script viết bằng ngôn ngữ lập trình sang Selenese (ngôn ngữ scripting của Selenium), thông qua các binding.
Library: Nơi chứa API và các binding
Driver: Module thực hiện việc mở trình duyệt và chạy test script Ví dụ:Chromedriver hỗ trợ tự động hóa Selenium trên Chrome.
Framework hỗ trợ tích hợp các thư viện với các framework kiểm thử ngôn ngữ tự nhiên hoặc ngôn ngữ lập trình, chẳng hạn như Selenium kết hợp với Cucumber hoặc Selenium với TestNG.
Các câu lệnh sử dụng trong Selenium WebDriver
a Các câu lệnh trình duyệt
Selenium WebDriver có một số các câu lệnh thao tác với trình duyệt như mở, đóng, lấy tiêu đề của trang Web như dưới đây:
Mục đích: Câu lệnh này sử dụng để mở một trang Web mới trong trình duyệt hiện tại.
Cú pháp: drive.get(URL);
Trong đó: URL: Là url để tải trang, nên sử dụng một url đầy đủ
- Câu lệnh lấy tiêu đề getTitle:
Mục đích: Câu lệnh này sử dụng để lấy tiêu đề của trang Web hiện tại
- Câu lệnh lấy URL hiện tại getCurrentUrl:
Mục đích: Câu lệnh này dùng để lấy URL của trang hiện tại đã được tải trên trình duyệt.
- Câu lệnh lấy source của trang Web getPageSource:
Mục đích: Câu lệnh này dùng để lấy source của trang được tải cuối cùng.
To interact with a webpage, it is essential to locate elements on the page The WebDriver offers two methods, "Find Element" and "Find Elements," to identify the position of these elements Additionally, the syntax for retrieving the page source is `driver.getPageSource();`.
Phương thức “Find Element” và “Find Elements” khác nhau ở chỗ “Find Element” trả về một đối tượng WebElement và ném một ngoại lệ nếu không tìm thấy, trong khi “Find Elements” trả về một danh sách WebElement, có thể là danh sách rỗng nếu không có phần tử DOM nào phù hợp với truy vấn Phương thức “Find” được sử dụng để xác định vị trí hoặc đối tượng truy vấn.
- Tìm phần từ bằng ID: By ID:
Mục đích của đoạn mã là xác định vị trí của phần tử dựa trên ID Nếu tìm thấy ID phù hợp, nó sẽ trả về vị trí của phần tử đó Ngược lại, nếu không có phần tử nào tương ứng với ID, sẽ xuất hiện lỗi NoSuchElementException.
Cú pháp: driver.findElement(By.id(""));
- Tìm phần tử bằng Name (By Name):
Mục đích của việc tìm kiếm phần tử bằng thuộc tính name là xác định vị trí của phần tử đó Nếu giá trị thuộc tính name phù hợp được tìm thấy, hệ thống sẽ trả về vị trí của phần tử Ngược lại, nếu không có phần tử nào phù hợp với thuộc tính name, sẽ xuất hiện lỗi NoSuchElementException.
Cú pháp: driver.findElement(By.name(""));
- Tìm phần tử bằng Class Name (className):
Mục đích: Tìm phần tử dựa trên giá trị của thuộc tính “class”.
Cú pháp: driver.findElement(By.className(""));
- Tìm phần tử bằng Link Text:
Mục đích: Tìm phần tử của thẻ a bằng tên của link
Cú pháp: driver.findElement(By.tagName("")); c Các câu lệnh điều hướng trình duyệt
Mục đích: Lệnh này dùng để đi đến trang tiếp theo, giống với nút forward trên trình duyệt.
Cú pháp: driver.navigate().forward();
Mục đích: Lệnh này dùng để quay về trang trước, giống với nút back trên trình duyệt Cú pháp: driver.navigate().back();
Mục đích: Lệnh này dùng để làm mới trang hiện tại
Cú pháp: driver.navigate().refresh(); d Các câu lệnh switch
Một số trang Web có nhiều frames hoặc nhiều cửa sổ Selenium WebDriver gán
ID của mỗi cửa sổ được tạo ra ngay khi đối tượng WebDriver được khởi tạo, được gọi là cửa sổ xử lý Selenium sử dụng ID duy nhất này để điều khiển nhiều cửa sổ, giúp phân biệt giữa các cửa sổ khác nhau khi chuyển đổi điều khiển.
Dưới đây là một số câu lệnh switch:
Mục đích: Lệnh này dùng để lấy cửa sổ xử lý (window handle) của cửa sổ hiện tại.
Mục đích: Lệnh này dùng để lấy cửa sổ xử lý (window handle) của tất cả các cửa sổ hiện tại.
- Câu lệnh Switch To Window:
Mục đích: Lệnh này dùng hỗ trợ di chuyển giữa các cửa sổ khác nhau thông qua tên của chúng bằng cách sử dụng phương thức “switchTo”.
Cú pháp: driver.switchTo().window("windowName"); e Các câu lệnh wait
Mục đích: Đợi một thời gian nhất định trước khi ném một ngoại lệ khi không thể tìm thấy các phần tử trên trang web.
Cú pháp: drive.manage().timeouts().implicitlyWait(10, TimeUnit SECONDS);
Mục đích: Thiết lập giá trị thời gian để chờ đợi cho trang Web hoàn thành tải(loadding) trước khi ném một lỗi.
Cú pháp: driver.manage().timeouts().pageLoadTimeout(100, SECONDS);
Mục đích của bài viết này là thiết lập giá trị thời gian chờ cho một kịch bản không đồng bộ, nhằm đảm bảo rằng quá trình thực hiện sẽ kết thúc trước khi xảy ra lỗi Nếu giá trị thời gian chờ được chỉ định là tiêu cực, kịch bản sẽ tiếp tục chạy mãi mãi.
Cú pháp: driver.manage().timeouts().setScriptTimeout(100,SECONDS);
Mục đích: Câu lệnh này hiếm khi được sử dụng vì nó luôn luôn buộc các trình duyệt chờ đợi một thời gian cụ thể.
ỨNG DỤNG SELENIUM WEBDRIVER KIỂM THỬ WEBSITE BÁN ĐIỆN THOẠI TIENDATPHONE
Hướng giải quyết bài toán và thực thi kiểm thử tự động
4.2.1 Các yêu cầu về công nghệ
- Công cụ lập trình Eclipse đã được cấu hình với Selenium WebDriver, Chrome Driver và đã được cài đặt framwork TestNG.
- Bộ công cụ phát triển ứng dụng bằng ngôn ngữ lập trình Java: JDK (Java Development Kit).
- Hệ quản trị CSDL SQL Server.
4.2 2 Hướng thực thi kiểm thử tự động
Nhóm thực thi kiểm thử tự động qua các bước:
Quá trình kiểm thử tự động
Nhóm thực hiện xây dựng các testcase cho từng chức năng dựa trên đặc tả yêu cầu, và sử dụng các testcase này để phát triển testscript.
- Sử dụng Eclipse đã được cấu hình với Selenium WebDriver, Chrome Driver và đã được cài đặt framwork TestNG để viết các testscript.
- Tạo các Class để thực thi cho từng chức năng
- Sử dụng các chú thích (annotations) của TestNG đánh dấu các phương thức kiểm thử và cấu hình kiểm thử:
@BeforeTest: Đánh dấu một phương thức sẽ được thực thi trước khi một bộ kiểm thử (test) được chạy.
@AfterTest: Đánh dấu một phương thức sẽ được thực thi sau khi một bộ kiểm thử (test) được chạy xong.
@BeforeMethod: Đánh dấu một phương thức sẽ được thực thi trước mỗi phương thức kiểm thử.
@Test: Đánh dấu một phương thức là một phương thức kiểm thử (tương ứng với 1 testcase)
- Trong mỗi phương thức kiểm thử, xây dựng các bước kiểm thử bằng cách sử dụng các phương thức của các thư viện hoặc công cụ kiểm thử.
Tạo testscript trên công cụ Eclipse sử dụng thư viện Selenium và framwork TestNG
Sau khi tạo các testscript, sử dụng TestNG Runner để chạy các phương thức kiểm thử trong lớp kiểm thử (hoặc chạy trước tiếp từ Eclipse)
Thực thi các ca kiểm thử:
Thực thi các ca kiểm thử
- Xem kết quả trực tiếp trên Console: Khi chạy các test script, kết quả kiểm thử sẽ được hiển thị trực tiếp trên console của IDE.
Kết quả trên console của Eclipse
- Xem kết quả trực tiếp trên Console: Eclipse cung cấp tích hợp TestNG và cho phép xem kết quả kiểm thử trực tiếp trong giao diện người dùng.
Kết quả kiểm thử từ TestNG
TestNG cung cấp báo cáo HTML hấp dẫn về kết quả kiểm thử, có thể tìm thấy trong thư mục "test-output" của dự án sau khi kiểm thử hoàn tất Mở các tệp HTML trong trình duyệt để xem chi tiết kết quả kiểm thử, bao gồm số lượng bài kiểm tra đã chạy, thành công, thất bại và thời gian thực thi.
Báo cáo kiểm thử dưới dạng tệp HTML từ TestNG
Thiết kế test case cho các chức năng chính
4.3.1 Chức năng đăng nhập a Đặc tả yêu cầu
Người dùng có thể đăng nhập vào tài khoản cá nhân để đặt hàng, theo dõi đơn hàng và cập nhật thông tin tài khoản một cách dễ dàng.
- Khi người dùng đăng nhập thành công sẽ hiển thị thông báo "" và chuyển đến màn hình trang chủ.
- Trang đăng nhập bao gồm: textbox Email textbox Mật khẩu (mật khẩu được mã hóa dưới dạng ******) button Đăng nhập
Tên trường Bắt buộc Khoảng hợp lệ Ngoại lệ
Email Có Không có Vui lòng nhập Email
Tài khoản hoặc mật khẩu không đúng
Mật khẩu Có Không có Vui lòng nhập mật khẩu
Tài khoản mật khẩu không đúng b Thiết kế testcase
ID Trường hợp kiểm thử
Các bước thực hiện Kết quả mong muốn
Tc - 1 Test đăng nhập khi không nhập email
Hiển thị message dưới trường email: "Vui lòng nhập email"
Tc - 2 Test đăng nhập khi không nhập mật khẩu
Hiển thị message dưới trường mật khẩu: "Vui lòng nhập mật khẩu"
Tc - 3 Test đăng nhập khi không nhập cả email và mật khẩu
Hiển thị đồng thời 2 message:
"Vui lòng nhập mật khẩu"
Tc - 4 Test đăng nhập sai email
Hiển thị popup thông báo "Thất bại! Tài khoản hoặc mật khẩu không chính xác"
Tc - 5 Test đăng nhập sai 1 Không nhập email Hiển thị popup thông mật khẩu 2 Nhập mật khẩu sai
3 Click button Đăng nhập báo "Thất bại! Tài khoản hoặc mật khẩu không chính xác"
Tc - 6 Test đăng nhập sai cả email và mật khẩu
Hiển thị popup thông báo "Thất bại! Tài khoản hoặc mật khẩu không chính xác"
Tc - 7 Test đăng nhập thành công
1 Nhập email đã được đăng ký và kích hoạt
- Điều hướng đến trang chủ hệ thống
Tc - 8 Test đăng nhập không thành công với email chưa được kích hoạt
1 Nhập email đã được đăng ký nhưng chưa kích hoạt
Hiển thị popup thông báo "Tài khoản của bạn chưa được kích hoạt Kiểm tra địa chỉ email để kích hoạt và đăng nhập tài khoản "
4.3.2 Chức năng tìm kiếm sản phẩm a Đặc tả yêu cầu
- Cho phép người dùng tìm kiếm các sản phẩm hoặc thông tin sản phẩm trên trang web
Người dùng chỉ cần di chuột vào biểu tượng tìm kiếm trên thanh công cụ, sau đó thanh công cụ tìm kiếm sẽ hiện ra, bao gồm ô nhập từ khóa và biểu tượng kính lúp để thực hiện tìm kiếm.
Khi người dùng nhập từ khóa tìm kiếm và nhấn vào biểu tượng kính lúp hoặc phím Enter, trang web sẽ hiển thị các sản phẩm liên quan đến từ khóa đã nhập.
- Nếu không có sản phẩm liên quan tới từ khóa tìm kiếm, trang web hiển thị "Không tìm thấy kết quả". b Thiết kế test case
ID Trường hợp kiểm thử Các bước thực hiện Kết quả mong muốn
Tc - 1 Kiểm tra khi nhập từ khóa có kết quả vào textbox tìm kiếm
3 Click vào textbox tìm kiếm
4 Nhập từ khóa tìm kiếm
Hiển thị tất cả sản phẩm có chứa từ khóa tìm kiếm
Tc - 2 Để trống ô tìm kiếm 1 Truy cập link: http://127.0.0.1:8000/
3 Click vào textbox tìm kiếm
4 Không nhập gì vào textbox tìm kiếm
5 Click icon search/ nhấn Enter
Hiển thị tất cả sản phẩm
Tc - 3 Chỉ nhập space vào ô tìm kiếm 1 Truy cập link: http://127.0.0.1:8000/
3 Click vào textbox tìm kiếm
4 Chỉ nhập space vào ô tìm kiếm
5 Click icon search/ nhấn Enter
Hiển thị tất cả sản phẩm
Tc - 4 Nhập từ khóa không có kết quả vào ô tìm kiếm
3 Click vào textbox tìm kiếm
4 Nhập vào từ khóa không có kết quả
4 Click icon search/ nhấn Enter
Hiển thị thông báo không tìm thấy sản phẩm với từ khóa tìm kiếm
4.3.3 Chức năng thêm vào giỏ hàng a Đặc tả yêu cầu
- Cho phép người dùng chọn sản phẩm và thêm chúng vào giỏ hàng để mua sau
Khi người dùng chọn sản phẩm và thêm vào giỏ hàng, sản phẩm sẽ được lưu lại với số lượng 1 cho đến khi họ quyết định thanh toán Thiết kế test case cần đảm bảo rằng chức năng này hoạt động chính xác.
ID Trường hợp kiểm thử
Các bước thực hiện Kết quả mong muốn
Tc - 1 Test thêm 1 loại sản phẩm vào giỏ hàng
Holder vào sản phẩm click icon thêm vào giỏ
Sản phẩm được thêm vào giỏ hàng thành công - thêm bằng icon giỏ hàng trên ảnh sp hàng/ Click vào sản phẩm click button thêm vào giỏ hàng
Tc - 2 Test thêm 1 loại sản phẩm vào giỏ hàng thành công - thêm từ trang chi tiết sp
Holder vào sản phẩm click icon thêm vào giỏ hàng/ Click vào sản phẩm click button thêm vào giỏ hàng
Sản phẩm được thêm vào giỏ hàng
4.3.4 Chức năng cập nhật giỏ hàng a Đặc tả yêu cầu
- Cho phép người dùng chỉnh sửa số lượng sản phẩm trong giỏ hàng của mình trước khi tiến hành thanh toán
- Điều kiện tiên quyết: Người dùng đã đăng nhập
- Nếu người dùng muốn xóa một sản phẩm khỏi giỏ hàng, có thể nhấn nút "Xóa" để loại bỏ sản phẩm đó khỏi giỏ hàng.
- Nếu người dùng giảm số lượng xuống dưới 1, chức năng Xóa sản phẩm trong giỏ hàng sẽ được thực hiện.
Khi người dùng thay đổi số lượng hoặc xóa sản phẩm, giỏ hàng sẽ tự động cập nhật để hiển thị số lượng mới và tính toán lại giá trị đơn hàng.
ID Trường hợp kiểm thử
Các bước thực hiện Kết quả mong muốn
TC -1 Test tăng số lượng sản phẩm trong giỏ hàng
- Hiển thị đúng số lượng sản phẩm vừa tăng
- Hiển thị đúng tổng tiền cần thanh toán
TC -2 Test giảm số lượng sản phẩm trong giỏ hàng
- Hiển thị đúng số sản phẩm còn lại
- Hiển thị đúng tổng tiền cần thanh toán
TC -3 Test giảm số lượng sản phẩm về 0 1 Click icon giỏ hàng
2 Click icon số lượng - giảm số lượng về 0
- Tự động xóa sản phẩm khỏi giỏ hàng
- Hiển thị đúng tổng tiền cần thanh toán
TC -4 Test xóa 1 sản phẩm trong giỏ hàng
- Giỏ hàng cập nhật các sản phẩm còn lại
- Cập nhật lại tổng tiền cần thanh toán
TC -5 Test xóa tất cả sản phẩm trong giỏ hàng
2 Click button Xóa ở tất cả sản phẩm
- Cập nhật tổng tiền cần thanh toán về 0
4.3.5 Chức năng đặt hàng a Đặc tả yêu cầu
- Cho phép người dùng đặt hàng với các sản phẩm hiện có trong giỏ hàng.
- Điều kiện tiên quyết: Giỏ hàng có ít nhất 1 sản phẩm.
- Người dùng click button Đặt hàng ở trang Giỏ hàng để tiến hàng các bước đặt hàng.
- Nếu giỏ hàng không có sản phẩm mà người dùng click Đặt hàng, trang web sẽ hiển thị thông báo "Giỏ hàng đang trống"
- Trang đặt hàng bao gồm:
+ Tab Thông tin đặt hàng : Email, Địa chỉ, SĐT, Ghi chú (mô tả ở bảng dưới).
+ Tab Danh sách sản phẩm: Tên sản phẩm, Số lượng, Đơn giá, Tổng tiền đơn hàng. + Button Xác nhận đặt hàng
- Khi người dùng nhập các thông tin đặt hàng hợp lệ và click "Xác nhận đặt hàng", trang web hiển thị thông báo "Hoàn tất quá trình đặt hàng"
- Khi nhập thông tin không hợp lệ sẽ hiển thị các thông báo tương ứng.
Tên trường Bắt buộc Khoảng hợp lệ Ngoại lệ
Họ tên Disable Địa chỉ Có Không quá 250 ký tự Vui lòng nhập địa chỉ Địa chỉ không quá 250 ký tự
SĐT Có 10 ký tự số Vui lòng nhập số điện thoại
SĐT hợp lệ bao gồm 10 ký tự số
Ghi chú Không Không quá 250 ký tự
Ghi chú không quá 250 ký tự b Thiết kế test case
ID Trường hợp kiểm thử Các bước thực hiện Kết quả mong muốn
TC -1 Kiểm tra khi click button Đặt hàng từ màn hình giỏ hàng -
2 Click button Đặt hàng Chuyển sang màn hình thông tin đặt hàng khi có sản phẩm trong giỏ hàng
TC -2 Kiểm tra khi click button Đặt hàng từ màn hình giỏ hàng - khi không có sản phẩm trong giỏ hàng
Hiển thị message thông báo lỗi ''Giỏ hàng đang trống''
TC -3 Kiểm tra khi click vào trường Họ tên
Click vào Họ tên textbox Disable - không cho phép chỉnh sửa
TC -4 Kiểm tra khi click vào trường Email Click vào Email textbox Disable - không cho phép chỉnh sửa
TC -5 Check đặt hàng thành công
1 Nhập vào các trường hợp lệ
2 Click button Xác nhận đặt hàng Đặt hàng thành công
TC -6 Nhập địa chỉ quá maxlenght
1 Nhập địa chỉ = 251 kí tự
2 Nhập các thông tin còn lại hợp lệ
3 Click button Xác nhận đặt hàng
Hiển thị message lỗi thông báo dưới trường địa chỉ "Địa chỉ khống quá 250 kí tự"
TC -7 Để trống địa chỉ 1 Để trống địa chỉ
2 Nhập các thông tin còn lại hợp lệ
3 Click button Xác nhận đặt hàng
Hiển thị message lỗi thông báo dưới trường địa chỉ "Vui lòng nhập địa chỉ"
TC -8 Chỉ nhập space vào địa chỉ
1 Nhập space vào địa chỉ
2 Nhập các thông tin còn lại hợp lệ
3 Click button Xác nhận đặt hàng
Hiển thị message lỗi thông báo dưới trường địa chỉ "Vui lòng nhập địa chỉ"
TC -9 Để trống sđt 1 Click button Đặt hàng
3 Click button Xác nhận đặt hàng
Hiển thị message lỗi thông báo dưới trường sđt "Vui lòng nhập số điện thoại"
Chỉ nhập space vào sđt
2 Chỉ nhập space vào sđt
3 Click button Xác nhận đặt hàng
Hiển thị message lỗi thông báo dưới trường sđt "Vui lòng nhập số điện thoại"
TC - Check nhập sđt = 9 1 Nhập sđt gồm 9 kí tự số Hiển thị message lỗi
11 chữ số 2 Nhập các thông tin còn lại hợp lệ
3 Click button Xác nhận đặt hàng thông báo dưới trường sđt "Số điện thoại hợp lệ bao gồm 10 kí tự số"
12 Check nhập sđt = 11 chữ số 1 Nhập sđt gồm 11 kí tự số
2 Nhập các thông tin còn lại hợp lệ
3 Click button Xác nhận đặt hàng
Hiển thị message lỗi thông báo dưới trường sđt "Số điện thoại hợp lệ bao gồm 10 kí tự số"
13 Check nhập sđt có kí tự chữ 1 Nhập sđt có chứa kí tự chữ
2 Nhập các thông tin còn lại hợp lệ
3 Click button Xác nhận đặt hàng
Hiển thị message lỗi thông báo dưới trường sđt "Số điện thoại hợp lệ bao gồm 10 kí tự số"
14 Check nhập sđt có kí tự đặc biệt 1 Nhập sđt có chứa kí tự đặc biệt
2 Nhập các thông tin còn lại hợp lệ
3 Click button Xác nhận đặt hàng
Hiển thị message lỗi thông báo dưới trường sđt "Số điện thoại hợp lệ bao gồm 10 kí tự số"
15 Check nhập ghi chú 1 Nhập ghi chú
2 Nhập các thông tin còn lại hợp lệ
3 Click button Xác nhận đặt hàng Đặt hàng thành công
Check nhập ghi chú quá maxlenght
1 Nhập ghi chú %1 kí tự
2 Nhập các thông tin còn lại hợp lệ
3 Click button Xác nhận đặt hàng
Hiển thị message lỗi thông báo dưới trường ghi chú "Địa chỉ khống quá 250 kí tự"
Check không nhập ghi chú
2 Nhập các thông tin còn lại hợp lệ
3 Click button Xác nhận đặt hàng Đặt hàng thành công
18 Check danh sách sản phẩm trong giỏ hàng Check danh sách sản phẩm Hiển thị đầy đủ các sản phẩm có trong giỏ hàng
Check thông tin các sản phẩm
Check thông tin các sản phẩm
Hiển thị đầy đủ tên, hình ảnh, số lượng, đơn giá của từng sản phẩm
Check tổng tiền cần thanh toán
Check tổng tiền cần Đặt hàng
Hiển thị đúng só tiền cần thanh toán
4.3.6 Chức năng cập nhật thông tin tài khoản a Đặc tả yêu cầu
- Cho phép người dùng thay đổi hoặc cập nhật các thông tin cá nhân đã được đăng ký trên trang web.
- Điều kiện tiên quyết: Người dùng đã đăng nhập
- Thông tin được phép chỉnh sửa bao gồm: Họ tên, ảnh đại diện, địa chỉ, số điện thoại.
- Trường Email không cho phép chỉnh sửa.
Tên trường Bắt buộc Khoảng hợp lệ Ngoại lệ
Họ và tên Có 2 – 50 ký tự Vui lòng nhập họ tên
Họ tên hợp lệ phải có từ 2-50 kí tự chữ
Số điện thoại Có 10 ký tự số Vui lòng nhập SĐT
SĐT hợp lệ bao gồm 10 kí tự số Địa chỉ Không Không quá 250 ký tự Địa chỉ không quá 250 kí tự
Avatar Không Định dạng ảnh: img/png/gif
Vui lòng chọn tệp có định dạng ảnh b Thiết kế test case
ID Trường hợp kiểm thử
Các bước thực hiện Kết quả mong muốn
TC -1 Kiểm tra khi click vào trường Email
Click vào Email textbox Disable - không cho phép chỉnh sửa
TC -2 Cập nhật thành công 1 Nhập vào họ tên
2 Nhập các thông tin còn lại hợp lệ
3 Click button Cập nhật thông tin
Hiển thị popup thông báo: "Cập nhật tài khoản thành công "
TC -3 Cập nhật không thành công - bỏ trống trường Họ tên
1 Không nhập gì vào trường Họ tên
2 Nhập các thông tin còn lại hợp lệ
Hiển thị message: "Vui lòng nhập họ tên" thông tin
TC -4 Test nhập số vào trường họ tên
1 Nhập số vào trường Họ tên
2 Nhập các thông tin còn lại hợp lệ
3 Click button Cập nhật thông tin
Hiển thị message: "Họ tên bao gồm các kí tự chữ"
TC -5 Test nhập kí tự đặc biệt vào trường họ tên
1 Nhập kí tự đặc biệt vào trường Họ tên
2 Nhập các thông tin còn lại hợp lệ
3 Click button Cập nhật thông tin
Hiển thị message: "Họ tên bao gồm các kí tự chữ"
TC -6 Test nhập họ tên toàn là space
1 Nhập vào Họ tên có khoảng trắng ở đầu và cuối
2 Nhập các thông tin còn lại hợp lệ
3 Click button Cập nhật thông tin
Hiển thị message: "Vui lòng nhập họ tên"
TC -7 Test nhập họ tên có khoảng trắng ở đầu và cuối
1 Nhập vào Họ tên có khoảng trắng ở đầu và cuối
2 Nhập các thông tin còn lại hợp lệ
3 Click button Cập nhật thông tin
Hiển thị popup thông báo: "Cập nhật tài khoản thành công "
TC -8 Cập nhật thành công 1 Nhập vào sđt gồm 10 chữ số
2 Nhập các thông tin còn lại hợp lệ
3 Click button Cập nhật thông tin
Hiển thị popup thông báo: "Cập nhật tài khoản thành công "
TC -9 Test nhập sđt gồm 9 chữ số
1 Nhập vào sđt gồm 9 chữ số
2 Nhập các thông tin còn lại hợp lệ
3 Click button Cập nhật thông tin
Hiển thị thông báo: "Số điện thoại hợp lệ bao gồm 10 kí tự số "
TC - Test nhập sđt gồm 1 Nhập vào sđt gồm 11 Hiển thị thông báo: "Số
2 Nhập các thông tin còn lại hợp lệ
3 Click button Cập nhật thông tin điện thoại hợp lệ bao gồm 10 kí tự số "
Test không nhập sđt 1 Không nhập gì vào trường sđt
2 Nhập các thông tin còn lại hợp lệ
3 Click button Cập nhật thông tin
Hiển thị popup thông báo: "Cập nhật tài khoản thành công "
Test nhập sđt chứa kí tự chữ
1 Nhập kí tự chữ vào sđt
2 Nhập các thông tin còn lại hợp lệ
3 Click button Cập nhật thông tin
Hiển thị thông báo: "Số điện thoại hợp lệ bao gồm 10 kí tự số "
13 Test nhập sđt chứa kí tự đặc biệt 1 Nhập kí tự đặc biệt vào sđt
2 Nhập các thông tin còn lại hợp lệ
3 Click button Cập nhật thông tin
Hiển thị thông báo: "Số điện thoại hợp lệ bao gồm 10 kí tự số "
14 Test nhập sđt chứa khoảng trắng ở đầu và cuối
1 Nhập vào sđt có khoảng trắng ở đầu và cuối
2 Nhập các thông tin còn lại hợp lệ
3 Click button Cập nhật thông tin
Hiển thị popup thông báo: "Cập nhật tài khoản thành công "
15 Test upload ảnh thành công 1 Click button Browser và chọn file có định dạng ảnh
3 Nhập các thông tin còn lại hợp lệ
4 Click button Cập nhật thông tin
- Hiển thị chính xác ảnh được upload
- Hiển thị popup thông báo: "Cập nhật tài khoản thành công "
Test upload file không phải định dạng ảnh
1 Click button Browser và chọn file không phải định dạng ảnh
2 Nhập các thông tin còn
Hiển thị thông báo: "Vui lòng chọn file có định dạng ảnh" lại hợp lệ
3 Click button Cập nhật thông tin
Test để trống upload file
1 Không chọn upload file ảnh
2 Nhập các thông tin còn lại hợp lệ
3 Click button Cập nhật thông tin
Hiển thị popup thông báo: "Cập nhật tài khoản thành công "
Cập nhật thành công 1 Nhập địa chỉ hợp lệ
2 Nhập các thông tin còn lại hợp lệ
3 Click button Cập nhật thông tin
Hiển thị popup thông báo: "Cập nhật tài khoản thành công "
Cập nhật không thành công - địa chỉ quá maxlength
1 Nhập địa chỉ %1 kí tự
2 Nhập các thông tin còn lại hợp lệ
3 Click button Cập nhật thông tin
Hiển thị message: "Địa chỉ không quá 250 kí tự"
20 Test không nhập địa chỉ 1 Không nhập gì vào trường địa chỉ
2 Nhập các thông tin còn lại hợp lệ
3 Click button Cập nhật thông tin
Hiển thị popup thông báo: "Cập nhật tài khoản thành công "
21 Test nhập địa chỉ có khoảng trắng đầu và cuối
1 Nhập địa chỉ hợp lệ, có khoảng trắng ở đầu và cuối
2 Nhập các thông tin còn lại hợp lệ
3 Click button Cập nhật thông tin
Hiển thị popup thông báo: "Cập nhật tài khoản thành công "
Kiểm thử tự động với Selenium WebDriver
4.2.1 Chức năng đăng nhập a Kịch bản kiểm thử tự động b Báo cáo kết quả chạy testscript
Báo cáo kiểm thử TestNG - chức năng Đăng nhập. c Kết quả kiểm thử chức năng đăng nhập
Số test case chưa được thực hiện 0
Kết quả test chức năng đăng nhập d Nhận xét
4.2.2 Chức năng tìm kiếm sản phẩm a Kịch bản kiểm thử tự động b Báo cáo kết quả chạy testscript
Báo cáo kiểm thử TestNG - chức năng Tìm kiếm c Kết quả kiểm thử chức năng tìm kiếm sản phẩm
Số test case chưa được thực hiện 0
Bảng :Kết quả test chức năng tìm kiếm sản phẩm d Nhận xét
4.2.3 Chức năng thêm vào giỏ hàng a Kịch bản kiểm thử tự động b Báo cáo kết quả chạy testscript
Báo cáo kiểm thử TestNG - chức năng Thêm vào giỏ hàng. c Kết quả kiểm thử chức năng tìm kiếm sản phẩm
Số test case chưa được thực hiện 0
Bảng :Kết quả test chức năng Thêm vào giỏ hàng. d Nhận xét
4.2.4 Chức năng cập nhật giỏ hàng a Kịch bản kiểm thử tự động b Báo cáo kết quả chạy testscript
Báo cáo kiểm thử TestNG - chức năng Cập nhật giỏ hàng. c Kết quả kiểm thử chức năng tìm kiếm sản phẩm
Số test case chưa được thực hiện 3
Bảng :Kết quả test chức năng Cập nhật giỏ hàng. d Nhận xét
4.2.5 Chức năng đặt hàng a Kịch bản kiểm thử tự động b Báo cáo kết quả chạy testscript
Báo cáo kiểm thử TestNG - chức năng Đặt hàng c Kết quả kiểm thử chức năng tìm kiếm sản phẩm
Số test case chưa được thực hiện 3
Bảng :Kết quả test chức năng chức năng Đặt hàng d Nhận xét
4.2.6 Chức năng cập nhật thông tin tài khoản
Báo cáo kiểm thử TestNG - chức năng Cập nhật thông tin người dùng c Kết quả kiểm thử chức năng tìm kiếm sản phẩm
Số test case chưa được thực hiện 0
Bảng :Kết quả test chức năng cập nhật thông tin tài khoản d Nhận xét
Đánh giá và hướng phát triển
Sau khi thực thi kiểm thử tự động, nhóm nhận thấy đề tài còn một số hạn chế sau đây:
- Chưa tạo được hết testscript cho các testcase
- Dữ liệu test đầu vào mới chỉ thực hiện nhập trực tiếp trên testscript
- Mới chỉ thực hiện kiểm thử trên 1 trình duyệt Chrome
Từ những hạn chế trên, nhóm đề xuất hướng phát triển tiếp theo cho đề tài này là:
Tiếp tục hoàn thiện testscript và nâng cao độ phủ kiểm thử tự động cho các chức năng, nhằm đảm bảo mọi trường hợp có thể xảy ra đều được kiểm tra, từ đó giảm thiểu rủi ro trong quá trình triển khai sản phẩm.
- Tìm hiểu thêm và ứng dụng đọc dữ liệu đầu vào từ Excel
- Xuất kết quả kiểm thử ra Excel để dễ dàng cho việc so sánh, đánh giá các ca kiểm thử.
- Thực hiện kiểm thử đa luồng, trên nhiều trình duyệt khác nhau.