o Hệ thống đang ở trạng thái hoạt độngo Người dùng đã được cấp tài khoảno Người dùng đăng nhập thành công vào hệ thốngo Hiển thị giao diện hệ thống tương ứng với quyền của tài khoảnLuồng
ĐẶC TẢ YÊU CẦU PHẦN MỀM
Giới thiệu
1.1 Lí do chọn đề tài
“Hệ thống tính tiền nước cho hộ cá nhân” bắt nguồn từ nhu cầu cấp bách về việc quản lí và sử dụng hiệu quả nguồn nước sạch trong bối cảnh đô thị hóa và hiện đại hóa ngày càng phát triển Hiện nay sự thiếu minh bạch và hiệu quả trong việc đo lường và tính toán chi phí sử dụng nước đã gây ra nhiều khó khăn cho cả người tiêu dùng và nhà cung cấp dịch vụ Việc triển khai một hệ thống tự động, dựa trên công nghệ và phân tích dữ liệu không chỉ giúp giải quyết những bất cập này mà còn mang lại sự tiện lợi, chính xác và minh bạch trong quản lí nước.
Hơn nữa, đề tài này còn phản ánh xu hướng phát triển mạnh mẽ của công nghệ thông tin và đáp ứng nhu cầu ngày càng cao về các giải pháp thông minh trong quản lí tài nguyên Chúng tôi nhận thấy rằng, việc áp dụng các công nghệ tiên tiến không chỉ đóng góp vào việc nâng cao chất lượng cuộc sống mà còn thúc đẩy sự phát triển bền vững của cộng đồng Lựa chọn đề tài này cho phép chúng em vận dụng những kiến thức đã học vào thực tiễn, tạo ra những giá trị thiết thực và góp phần giải quyết các vấn đề xã hội một cách hiệu quả và sáng tạo.
Thông qua việc nghiên cứu và triển khai hệ thống này, chúng tôi hy vọng sẽ mang đến một giải pháp quản lí nước thông minh , đáp ứng nhu cầu thiết yếu của các hộ gia đình trong bối cảnh hiện đại Điều này không chỉ giúp người tiêu dùng có cái nhìn rõ ràng hơn về mức tiêu thụ và chi phí của mình mà còn hỗ trợ các các cơ quan cung cấp nước trong việc tối ưu hóa nguồn tài nguyên, đảm bảo sự phát triển bền vững và bảo vệ môi trường.
Trong bối cảnh đô thị hóa và hiện đại hóa hiện nay, nhu cầu sử dụng nước sạch của các hộ gia đình ngày càng tăng cao, dẫn đến thách thức không nhỏ trong việc quản lí và tính toán chính xác lượng nước tiêu thụ Hệ thống tính tiền nước truyền thống, chủ yếu dựa vào phương pháp thủ công hoặc các thiết bị đo lường cơ bản, thường gặp phải nhiều bất cập như sai số trong đo lường, thiếu minh bạch trong thông tin và khó khăn trong việc theo dõi tiêu thụ nước theo thời gian thực Các thiết bị đo lường truyền thống thường không đủ chính xác, dễ bị ảnh hưởng bởi các yếu tố ngoại cảnh như áp lực nước, nhiệt độ và tình trạng bảo dưỡng, dẫn đến việc tính toán sai lệch, không phản ánh đúng mức tiêu thụ thực tế của các hộ gia đình Quy trình ghi chỉ số nước và tính tiền phức tạp và thiếu minh bạch, khiến người tiêu dùng khó kiểm tra và xác nhận thông tin, dẫn đến nghi ngờ và không hài lòng Hệ thống hiện tại không cung cấp khả năng theo dõi và phân tích dữ liệu tiêu thụ nước theo thời gian thực, làm cho người tiêu dùng không thể nắm bắt được mức tiêu thụ hàng ngày, hàng tuần hoặc hàng tháng của mình, từ đó khó có thể điều chỉnh hành vi sử dụng nước một cách hiệu quả Hơn nữa, việc ghi chỉ số nước và lập hóa đơn đòi hỏi nhiều nhân lực và thời gian, gây lãng phí tài nguyên và giảm hiệu suất của các đơn vị cung cấp nước Những vấn đề này không chỉ ảnh hưởng đến hiệu quả quản lý nước mà còn gây khó khăn cho người tiêu dùng trong việc kiểm soát chi phí và sử dụng nước hợp lý Chính vì vậy, cần thiết phải xây dựng một hệ thống tính tiền nước thông minh, tự động và minh bạch, giúp tối ưu hóa quy trình quản lý và mang lại lợi ích thiết thực cho cả người sử dụng lẫn nhà cung cấp dịch vụ.
Hiện nay, nhiều người vẫn còn khá thắc mắc về cách tính tiền nước sinh hoạt sao cho chính xác để có thể chủ động trong việc tính toán chi phí tiêu thụ nước của gia đình, cơ quan hoặc công ty Việc nắm rõ quy trình này không chỉ giúp bạn đưa ra phương án sử dụng nước hợp lý và tiết kiệm mà còn đảm bảo minh bạch trong việc thanh toán Giá nước sinh hoạt thay đổi theo từng thời điểm và phụ thuộc vào nguồn nước cung cấp từ các nhà máy nước khác nhau Giá này cũng biến động dựa trên từng đối tượng khách hàng và mục đích sử dụng, khi các nhà máy và công ty nước căn cứ vào tình hình thực tế để xác định mức giá cụ thể Việc phân loại đối tượng và lập bảng giá hóa đơn riêng biệt theo từng nhu cầu sử dụng không chỉ tạo ra sự công bằng cho người tiêu dùng mà còn khuyến khích việc tiết kiệm nước Đồng thời, việc xây dựng một hệ thống tính tiền nước tự động cho từng hộ gia đình sẽ giúp các nhà quản lý kiểm soát dễ dàng từng đối tượng sử dụng, từng khu vực, tạo thuận lợi trong quá trình xuất hóa đơn và truy xuất dữ liệu Điều này cũng mang lại sự minh bạch cho người tiêu dùng, giúp họ rõ ràng về số tiền phải trả và lượng nước đã sử dụng, từ đó quản lý chi phí hiệu quả hơn.
Người dùng mà chúng tôi hướng đến là các hộ gia đình thông thường, được xác định theo quy định của Nhà nước Phương pháp tính tiền nước được áp dụng là phương pháp công khai và đã được Nhà nước ban hành thông qua các công văn chính thức Công thức tính toán sẽ tuân theo quy định này Trong phần này, chúng tôi sẽ giới thiệu về các chức năng chính của phần mềm thanh toán hóa đơn nước, cùng với việc mô tả mối quan hệ giữa người dùng và người quản lý hóa đơn nước.
Với cấu trúc được chia thành 3 phần: o Phần 1: Cung cấp cái nhìn tổng quát về hệ thống tính tiền nước theo hộ cá nhân o Phần 2: Mô tả tổng quan hệ thống Cung cấp thông tin chi tiết về các yêu cầu chức năng của người dùng về hệ thống o Phần 3: Các yêu cầu phi chức năng
Các yêu cầu chức năng
Khách - Người tiêu dùng - Nhà cung cấp - Quản trị viên Khách có vai trò là người dùng khi chưa đăng nhập vào hệ thống Người tiêu dùng đăng nhập vào hệ thống kiểm tra hóa đơn, in hóa đơn và tiến hành thanh toán Nhà cung cấp được cấp tài khoản và đăng nhập vào hệ thống cung cấp các thông tin như giá nước - cách tính tiền theo số nước, Quản trị viên có vai trò quản trị và duy trì hoạt động của hệ thống
2.2 Các chức năng của hệ thống o Đăng nhập: Chức năng này nhắm mục đích xác định người dùng khi tương tác với hệ thống nhắm cung cấp quyền gì cũng như phạm vi truy cập của hệ thống o Đăng ký: Để sử dụng được các chức năng cụ thể của hệ thống thì Người dùng đầu tiên sẽ đăng ký tài khoản o Quản lý người dùng: Người quản trị có vai trò quản lý người dùng bao gồm khách hàng và người quản lý trong hệ thống o Các nhóm chức năng theo dõi số nước, quản lý thanh toán hoá đơn, cập nhập thông tin khách hàng là công việc của Người quản lý o Thanh toán hoá đơn: Khách hàng sử dụng chức năng của hệ thống để thanh toán, tra cứu hoá đơn nước hàng tháng 12 Để có thể hình dung rõ hơn về các tác nhân cũng như yêu cầu chức năng của hệ thống bằng các mô hình hoá chúng dưới dạng các usecase, các sơ đồ được trình bầy phía sau
Hình 1: Sơ đồ chức năng
2.4 Biểu đồ Use Case tổng quan
Hình 2: Biểu đồ use case tổng quan 2.5 Biểu đồ Use Case phân rã a) Khách hàng
Hình 3: Biểu đồ use case khách hàng b) Người quản lí
Hình 4: Biểu đồ use case người quản lí c) Quản trị viên
Hình 5: Biểu đồ use case quản trị viên 2.6 Quy trình nghiệp vụ a) Quy trình quản lí hoạt động khách hàng
Hình 6: Quy trình quản lí hoạt động của khách hàng b) Quy trình quản lí tin tức
Hình 7: Quy trình quản lí tin tức c) Quy trình quản lí câu hỏi và trả lời của khách hàng (Q&A)
Hình 8: Quy trình quản lí câu hỏi và câu trả lời (Q&A) 2.7 Đặc tả Use Case a) Đăng nhập
Actor: Người dùng (khách hàng)
Mô tả: Cho phép người dùng đăng nhập vào hệ thống
Pre-Conditions: o Hệ thống đang ở trạng thái hoạt động o Người dùng đã được cấp tài khoản
Post-Conditions: o Người dùng đăng nhập thành công vào hệ thống o Hiển thị giao diện hệ thống tương ứng với quyền của tài khoản
Luồng sự kiện chính: o Người dùng chọn nút đăng nhập o Hệ thống hiển thị giao diện đăng nhập o Người dùng nhập tài khoản và mật khẩu o Người dùng nhấn nút Submit o Hệ thống kiểm tra khách hàng có nhập đúng yêu cầu bắt buộc của hệ thống hay không o Hệ thống kiểm tra dữ liệu của người nhập có trùng với dữ liệu trong hệ thống hay không o Hệ thống hiển thị trang chủ và các chức năng tương ứng với người dùng
Luồng sự kiện thay thế: o Hệ thống thông báo lỗi cần nhập đủ và đúng yêu cầu bắt buộc khi người dùng nhập sai thông tin o Hệ thống thông báo lỗi nếu email/mật khẩu không đúng hoặc không tìm thấy email/mật khẩu trên hệ thống
Hậu điều kiện: Khách hàng đăng nhập được vào hệ thống
STT Trường dữ liệu Mô tả Bắt buộc Điều kiện hợp lí
Có Đúng định dạng email hangoc@gmail.com
2 Mật khẩu Passw ord field
Có Tối thiếu 6 kí tự
Bảng 1: Dữ liệu chức năng “Đăng nhập” b) Đăng ký
Actor: Người dùng (khách hàng)
Mô tả: Người dùng chưa có tài khoản và muốn đăng kí tài khoản để sử dụng chức năng của hệ thống
Pre-Conditions: o Hệ thống đang ở trạng thái hoạt động o Người dùng chưa có tài khoản
Post-Conditions: o Người dùng đăng ký thành công vào hệ thống o Hệ thống sẽ lưu thông tin tài khoản của người dùng
Luồng sự kiện chính: o Người dùng chọn chức năng đăng ký o Hệ thống hiển thị giao diện đăng ký tài khoản o Người dùng nhập các thông tin tài khoản o Người dùng nhấn nút Register trên màn hình o Hệ thống kiểm tra thông tin dữ liệu xem người dùng đã nhập đủ chưa o Hệ thống kiểm tra thông tin đã nhập đúng định dạng hay không o Hệ thống kiểm tra mật khẩu và mật khẩu nhập lại có trùng nhau hay không o Hệ thống kiểm tra mật khẩu đã đủ mức độ an toàn hay không o Hệ thống lưu thông tin và thông báo tạo tài khoản thành công đưa đến giao diện của người dùng
Luồng sự kiện thay thế: o Hệ thống thông báo lỗi cần nhập đầy đủ thông tin bắt buộc trên giao diện đăng kí o Hệ thống thông báo lỗi địa chỉ email không hợp lệ nếu email sai định dạng, thông tin khác không đúng định dạng o Hệ thống thông báo lỗi mật khẩu nhập lại không trùng khớp với mật khẩu nếu hai mật khẩu không trùng nhau o Hệ thống thông báo lỗi mật khẩu cần đảm bảo an toàn nếu mật khẩu không đảm bảo độ an toàn theo quy định
Hậu điều kiện: Tài khoản được tạo thành công và lưu trữ dữ liệu vào hệ thống
STT Trường dữ liệu Mô tả Bắt buộc Điều kiện hợp lí Ví dụ
Có Đúng định dạng email hangoc@gmail.com
2 Mật khẩu Passw ord field
Có Tối thiếu 6 kí tự
3 Xác nhận mật khẩu Passw ord field
Có Trùng với mật khẩu Password
Bảng 2: Dữ liệu chức năng “Đăng ký” c) Cập nhật tài khoản
Actor: Người dùng (khách hàng)
Mô tả: Người dùng muốn cập nhật thông tin cá nhân
Pre-Conditions: o Hệ thống đang ở trạng thái hoạt động o Người dùng đã có tài khoản
Post-Conditions: o Người dùng vào “My profile” để cập nhật tài khoản của mình o Hệ thống sẽ lưu thông tin người dùng vừa cập nhật vào hệ thống
Luồng sự kiện chính: o Người dùng chọn chức năng cập nhật thông tin cá nhân o Hệ thống hiển thị giao diện cập nhật thông tin cá nhân o Người dùng nhập các thông tin cần cập nhật o Người dùng chọn nút lưu để cập nhật thông tin o Hệ thống kiểm tra thông tin nhập dữ liệu của người dùng o Hệ thống cập nhật và thông báo lưu thành công
Luồng sự kiện thay thế: o Hệ thống thông báo lỗi thông tin nhập không đúng định dạng nếu người dùng nhập sai định dạng o Hệ thống thông báo lỗi không cập nhật được nếu hệ thống không cập nhật được thông tin hoặc bị lỗi mạng
Hậu điều kiện: Cập nhật thành công và thông tin mới sẽ được lưu trữ vào hệ thống
STT Trường dữ liệu Mô tả Bắt buộc Điều kiện hợp lí
1 Họ và tên Input text field
Có Đúng định dạng email hangoc@gmail.com
3 Ngày sinh Date Không Ngày tháng hợp lệ
4 Điện thoại Input text field
Nữ Không Chọn mục nam hoặc nữ
Không Chọn định dạng ảnh png, jpg, jpeg, gif
Bảng 3: Dữ liệu chức năng “Cập nhật tài khoản” d) Đổi mật khẩu
Actor: Người dùng (khách hàng)
Mô tả: Người dùng muốn thay đổi mật khẩu khi quên mật khẩu đăng nhập Pre-Conditions: o Hệ thống đang ở trạng thái hoạt động o Người dùng đã có tài khoản nhưng quên mật khẩu
Post-Conditions: o Người dùng chọn quên mật khẩu trên giao diện đăng nhập của hệ thống o Hệ thống sẽ hiển thị ra giao diện quên mật khẩu cho người dùng nhập thông tin.
Luồng sự kiện chính: o Người dùng chọn chức năng thay đổi mật khẩu o Hệ thống hiển thị giao diện đổi mật khẩu o Người dùng nhập thông tin tài khoản email/tên tài khoản o Người dùng nhấn Submit để yêu cầu thiết lập lại mật khẩu o Hệ thống kiểm tra email xem có đúng định dạng hay không và email đó có tồn tại trên hệ thống không nếu thỏa mãn thì hệ thống sẽ gửi link cập nhật mật khẩu mới đến email đã liên kết với hệ thống cho người dùng
Luồng sự kiện thay thế: o Hệ thống thông báo lỗi thông tin không hợp lệ nếu thông tin mật khẩu đối tượng cung cấp không đúng hoặc không trùng khớp o Hệ thống thông báo thành công nếu gửi được liên kết đến với người dùng
Hậu điều kiện: Hệ thống gửi được liên kết thiết lập lại mật khẩu đến email người yêu cầu nó tồn tại trong vòng 24h nếu người dùng không thay đổi pass thì liên kết sẽ không còn hiệu quả và người dùng sẽ sử dụng pass cũ để truy cập vào hệ thống e) Thiết lập mật khẩu mới
Actor: Người dùng (khách hàng)
Mô tả: Người dùng muốn thay đổi mật khẩu
Pre-Conditions: o Hệ thống đang ở trạng thái hoạt động o Tài khoản của người dùng đã đăng nhập được vào hệ thống
Post-Conditions: o Người dùng vào tool “đổi mật khẩu” ở trong menu o Hệ thống sẽ hiển thị ra giao diện đổi mật khẩu cho người dùng thao tác.
Luồng sự kiện chính: o Người dùng chọn chức năng thay đổi mật khẩu o Hệ thống hiển thị giao diện đổi mật khẩu o Người dùng điền thông tin mật khẩu cũ để xác nhận, nhập mật khẩu mới và xác minh mật khẩu mới trùng khớp với mật khẩu cần thay đổi o Người dùng nhấn Submit để yêu cầu đổi mật khẩu o Hệ thống kiểm tra mật khẩu cũ, mật khẩu mới và xác nhận mật khẩu mới có trùng khớp hay không nếu trùng khớp thì sẽ tiến hành thay đổi mật khẩu
Luồng sự kiện thay thế: o Hệ thống thông báo lỗi mật khẩu không chính xác nếu mật khẩu cũ của người dùng nhập không chính xác hoặc mật khẩu mới và xác nhận mật khẩu mới không trùng khớp
Hậu điều kiện: Cập nhật mật khẩu mới vào hệ thống f) Tìm kiếm hóa đơn
Actor: Người dùng (khách hàng)
Mô tả: Người dùng muốn tìm kiếm hóa đơn nước cần thanh toán
Pre-Conditions: o Hệ thống đang ở trạng thái hoạt động o Người dùng đã đăng nhập được vào hệ thống
Post-Conditions: o Người dùng vào tìm kiếm trên thanh menu để tìm kiếm hóa đơn
Các yêu cầu phi chức năng
3.1 Giao diện người dùng Đối với người dùng khi truy cập sử dụng hệ thống thông qua trình duyệt web, hệ thống sẽ nhận yêu cầu truy cập từ phía máy khách thông qua trình duyệt và gửi trả về cho trình duyệt các menu chức năng tương ứng với phạm vi của từng người dùng Người dùng có thể sử dụng các chức năng như: o Đăng ký tài khoản o Đăng nhập tài khoản o Trang chủ của hệ thống chứa các bài viết chứa các thông tin cập nhật về giá nước, công ty nước và các bên liên quan o Cung cấp thông tin liên hệ cho người dùng truy cập hệ thống có thể kiểm tra: hóa đơn tiền nước, số lượng nước đã sử dụng, ngày thanh toán gần nhất, nhà máy nước phụ trách, Admin truy cập hệ thống có thể thấy các menu theo từng khu vực
Người dùng chỉ có thể sử dụng các chức năng và truy cập dữ liệu phù hợp với vai trò của người dùng đó.
Hệ thống được sử dụng là hệ thống dựa trên Web do vậy người dùng cần có các thiết bị có kết nối với internet như máy vi tính và được cung cấp các dịch vụ như thư điện tử, hình ảnh, văn bản, đa phương tiện, giao thức truyền thông siêu văn bản để có thể gửi và nhận thông tin, dữ liệu giữa máy khách và web server.Bên phía máy khách – người dùng cần có phần mềm ứng dụng duyệt
Web như Google Chrome, Internet Explorer, Mozilla Firefox, Opera với phiên bản mới nhất có hỗ trợ JavaScript.
NGÔN NGỮ LẬP TRÌNH VÀ CÔNG NGHỆ SỬ DỤNG
Ngôn ngữ lập trình
Hệ thống được nhóm em xây dựng dựa trên ba ngôn ngữ: HTML, CSS và JavaScript a) Giới thiệu về HTML
HTML (viết tắt của từ HyperText Markup Language, hay còn gọi là "Ngôn ngữ đánh dấu siêu văn bản") là một ngôn ngữ đánh dấu được thiết kế ra để tạo nên các trang web.
HTML document có đuôi file dạng html hoặc htm Chúng ta có thể xem chúng bằng các trình duyệt web hiện hành như Google Chrome, Firefox, Safari,… Nhiệm vụ của trình duyệt là đọc những file HTML này và “biến đổi” chúng thành một dạng nội dung visual trên Internet sao cho người dùng có thể xem và hiểu được chúng.
HTML được sử dụng để tạo bố cục, cấu trúc trang web Nó có một số ưu điểm sau: o Có nhiều tài nguyên hỗ trợ với cộng đồng người dùng vô cùng lớn o Có thể hoạt động mượt mà trên hầu hết mọi trình duyệt hiện nay o Học HTML khá đơn giản o Các markup sử dụng trong HTML thường ngắn gọn, có độ đồng nhất cao o Sử dụng mã nguồn mở, hoàn toàn miễn phí o HTML là chuẩn web được vận hành bởi W3C o Dễ dàng để tích hợp với các loại ngôn ngữ backend (ví dụ như: PHP, Node.js,
Bên cạnh ưu điểm, HTML cũng có các nhược điểm nhất định Cụ thể như sau: o Chỉ được áp dụng chủ yếu cho web tĩnh Nếu muốn tạo các tính năng động, lập trình viên phải dùng thêm JavaScript hoặc ngôn ngữ backend của bên thứ 3 (ví dụ như: PHP) o Mỗi trang HTML cần được tạo riêng biệt, ngay có khi có nhiều yếu tố trùng lặp như header, footer. o Khó để kiểm soát cách đọc và hiển thị file HTML của trình duyệt (ví dụ, một số trình duyệt cũ không render được tag mới Do đó, dù trong HTML document có sử dụng các tag này thì trình duyệt cũng không đọc được). o Một vài trình duyệt còn chậm cập nhật để hỗ trợ tính năng mới của HTML
HTML là một loại ngôn ngữ đánh dấu siêu văn bản Như tôi đã đề cập ở trên, nó giúp cấu thành các cấu trúc cơ bản của một Website, làm cho trang Web trở thành một hệ thống hoàn chỉnh Cụ thể, ngôn ngữ đánh dấu siêu văn bản này giúp bố cục, chia khung sườn các thành phần trang Web Đồng thời, nó còn hỗ trợ khai báo các File kỹ thuật số như nhạc, Video, hình ảnh,…
HTML có nhiều thẻ định dạng, do đó chúng ta có thể trình bày trang Web dễ dàng, hiệu quả với ngôn ngữ đánh dấu siêu văn bản này Với tôi, nó là một ngôn ngữ đánh dấu dễ dàng và đơn giản để sử dụng Chúng ta có thể sử dụng nó để thiết kế trang Web cùng với văn bản một cách linh hoạt.
Một đặc điểm theo tôi khá thú vị là HTML có thể liên kết đến các trang Web khác. Nhờ ngôn ngữ đánh dấu này, chúng ta có thể thêm các Video, hình ảnh, âm thanh vào để các Website hấp dẫn, đẹp mắt và dễ tương tác hơn. Đặc biệt, HTML có thể hiển thị trên bất kỳ nền tảng nào khác như Linux, Windows, và Max vì nó là một nền tảng độc lập. b) Giới thiệu về CSS
CSS là viết tắt của Cascading Style Sheets, là một ngôn ngữ thiết kế được sử dụng nhằm mục đích đơn giản hóa quá trình tạo nên một website.
CSS xử lý một phần giao diện của trang web Sử dụng CSS, có thể kiểm soát màu sắc của văn bản, kiểu phông chữ, khoảng cách giữa các đoạn văn, cách các cột được đặt kích thước và bố cục, hình ảnh hoặc màu nền nào được sử dụng, thiết kế bố cục, các biến thể hiển thị cho các thiết bị và kích thước màn hình khác nhau cũng như hàng loạt các hiệu ứng khác.
HTML và CSS có mối quan hệ gắn bó mật thiết với nhau Nếu HTML là nền tảng của một trang web thì CSS là tất cả tính thẩm mỹ của toàn bộ trang web đó.
Một trang web có thể chạy mà không cần CSS, nhưng nó chắc chắn sẽ không có tình thẩm mỹ CSS làm cho giao diện người dùng của một trang web tỏa sáng và mang đến trải nghiệm người dùng tuyệt vời Nếu không có CSS, các trang web sẽ kém bắt mắt hơn và có thể khó điều hướng hơn nhiều Ngoài bố cục và định dạng, CSS chịu trách nhiệm về màu chữ, kích thước hình ảnh, khoảng cách giữa các đoạn và hơn thế nữa.
CSS có một số ưu điểm như sau: o Tăng tốc độ tải trang: CSS cho phép sử dụng ít đoạn mã vì vậy tốc độ tải trang sẽ được cải thiện đáng kể Ngoài ra, còn có thể sử dụng một quy tắc CSS và áp dụng nó cho tất cả các lần xuất hiện của một thẻ nhất định trong tài liệu HTML. o Cải thiện trải nghiệm người dùng: CSS không chỉ làm cho các trang web dễ nhìn hơn, nó còn giúp các website có định dạng thân thiện với người dùng Khi các nút và văn bản ở vị trí hợp lý và được sắp đặt tốt, trải nghiệm người dùng sẽ được cải thiện. o Thời gian phát triển nhanh: Với CSS, có thể áp dụng các quy tắc và kiểu định dạng cụ thể cho nhiều trang bằng một chuỗi mã Một biểu định kiểu xếp tầng có thể được sao chép trên một số trang web Ví dụ: nếu có các trang sản phẩm tất cả phải có cùng định dạng, giao diện, thì việc viết quy tắc CSS cho một trang sẽ đủ cho tất cả các trang cùng loại. o Thay đổi định dạng dễ dàng: Nếu cần thay đổi định dạng của một nhóm trang cụ thể, bạn có thể dễ dàng thực hiện việc này với CSS mà không cần phải sửa từng trang riêng lẻ Chỉ cần chỉnh sửa biểu định kiểu CSS tương ứng và chúng ta sẽ thấy các thay đổi được áp dụng cho tất cả các trang đang sử dụng biểu định kiểu đó. o Khả năng tương thích trên các thiết bị: Thiết kế web đáp ứng là một vấn đề cần được chú trọng Trong thời đại ngày nay, các trang web phải hiển thị đầy đủ và có thể điều hướng dễ dàng trên tất cả các thiết bị Cho dù thiết bị di động hay máy tính bảng, máy tính để bàn hay thậm chí là TV thông minh, CSS kết hợp với HTML để tạo ra thiết kế đáp ứng. c) Giới thiệu về JavaScript
JavaScript là ngôn ngữ lập trình được nhà phát triển sử dụng để tạo trang web tương tác Từ làm mới bảng tin trên trang mạng xã hội đến hiển thị hình ảnh động và bản đồ tương tác, các chức năng của JavaScript có thể cải thiện trải nghiệm người dùng của trang web Là ngôn ngữ kịch bản phía máy khách, JavaScript là một trong những công nghệ cốt lõi của World Wide Web Ví dụ: khi duyệt internet, bất cứ khi nào chúng ta thấy quảng cáo quay vòng dạng hình ảnh, menu thả xuống nhấp để hiển thị hoặc màu sắc phần tử thay đổi động trên trang web cũng chính là lúc chúng ta thấy các hiệu ứng của JavaScript.
JavaScript mang lại những lợi ích gì? o Cú pháp của JavaScript được lấy cảm hứng từ ngôn ngữ lập trình Java, rất dễ để học và viết mã Các nhà phát triển sử dụng JavaScript trong hầu hết các trang web và ứng dụng di động để viết tập lệnh phía máy khách Node.js cũng đã trở nên hết sức phổ biến đối với việc viết mã backend trong thập kỷ qua Nhiều nền tảng phát trực tuyến và video phổ biến đã được viết mã bằng Node.js. o Không giống như các ngôn ngữ lập trình khác, chúng ta có thể chèn JavaScript vào bất kỳ trang web nào và sử dụng với nhiều ngôn ngữ và khung phát triển web khác Sau khi viết, chúng ta có thể chạy mã JavaScript trên bất kỳ máy nào Do đó, với JavaScript, việc phát triển ứng dụng có thể không phụ thuộc vào nền tảng. o Chúng ta có thể sử dụng JavaScript để giảm tải máy chủ và tắc nghẽn mạng vì JavaScript có thể chạy các phép toán logic và thực hiện nhiều công việc của máy chủ trên chính máy khách Ví dụ: hãy xem xét quá trình điền một biểu mẫu đăng ký JavaScript nhanh chóng kiểm tra xem bạn đã nhập số có 10 chữ số cho trường điện thoại di động hay chưa Nếu những yêu cầu này được gửi đến máy chủ, trang của bạn sẽ tải lại mỗi khi có lỗi, làm cho quá trình đăng ký rất chậm chạp và tẻ nhạt. o JavaScript tạo ra các trang web tinh tế giúp thuận tiện trong việc tìm kiếm và xử lý thông tin phức tạp Các nhà phát triển áp dụng JavaScript để mở rộng chức năng và độ dễ đọc cũng như để tương tác giữa người dùng và trang web hiệu quả hơn. o JavaScript có thể chạy song song nhiều tập hợp hướng dẫn khác nhau Về phần backend, Node.js có thể giải quyết và xử lý các phản hồi của máy chủ được mở rộng quy mô mà không tiêu tốn cùng một lượng băng thông để làm việc đó.
Công nghệ sử dụng
Nhóm em sử dụng IDE Visual Studio Code để xây dựng và phát triển cho hệ thống a) Giới thiệu về Visual Studio Code
Visual Studio Code là một trong những trình soạn thảo mã nguồn rất phổ biến được các lập trình viên sử dụng Với các ưu điểm nổi bật là sự nhanh chóng, nhẹ, hỗ trợ đa nền tảng cùng nhiều tính năng và là mã nguồn mở chính Visual Studio Code ngày càng được ưa chuộng sử dụng, là lựa chọn hàng đầu của các lập trình viên Bài viết sau đây sẽ cung cấp các thông tin để giúp bạn hiểu rõ hơn Visual Studio Code là gì cũng như các tính năng nổi bật của Visual Studio Code.
Visual Studio Code chính là ứng dụng cho phép biên tập, soạn thảo các đoạn code để hỗ trợ trong quá trình thực hiện xây dựng, thiết kế website một cách nhanh chóng. Visual Studio Code hay còn được viết tắt là VS Code Trình soạn thảo này vận hành mượt mà trên các nền tảng như Windows, macOS, Linux Hơn thế nữa, VS Code còn cho khả năng tương thích với những thiết bị máy tính có cấu hình tầm trung vẫn có thể sử dụng dễ dàng.
Visual Studio Code hỗ trợ đa dạng các chức năng Debug, đi kèm với Git, có Syntax Highlighting Đặc biệt là tự hoàn thành mã thông minh, Snippets, và khả năng cải tiến mã nguồn Nhờ tính năng tùy chỉnh, Visual Studio Code cũng cho phép các lập trình viên thay đổi Theme, phím tắt, và đa dạng các tùy chọn khác Mặc dù trình soạn thảo Code này tương đối nhẹ, nhưng lại bao gồm các tính năng mạnh mẽ.
Dù mới được phát hành nhưng VSCode là một trong những Code Editor mạnh mẽ và phổ biến nhất dành cho lập trình viên Nhờ hỗ trợ nhiều ngôn ngữ lập trình phổ biến, tích hợp đầy đủ các tính năng và khả năng mở rộng, nên VSCode trở nên cực kì thân thuộc với bất kì lập trình viên nào. b) Những ưu điểm nổi bật của Visual Studio Code o Đa dạng ngôn ngữ lập trình giúp người dùng thỏa sức sáng tạo và sử dụng như HTML, CSS, JavaScript, C++,… o Ngôn ngữ, giao diện tối giản, thân thiện, giúp các lập trình viên dễ dàng định hình nội dung o Các tiện ích mở rộng rất đa dạng và phong phú o Tích hợp các tính năng quan trọng như tính năng bảo mật (Git), khả năng tăng tốc xử lý vòng lặp (Debug),… o Đơn giản hóa việc tìm quản lý hết tất cả các Code có trên hệ thống.
Visual Studio Code là một trong những trình biên tập Code rất phổ biến nhất hiện nay. Ứng dụng này cũng ngày càng chứng tỏ ưu thế vượt trội của mình khi so sánh với những phần mềm khác Tuy bản miễn phí không có nhiều các tính năng nâng cao nhưng Visual Studio Code thực sự có thể đáp ứng được hầu hết nhu cầu cơ bản của lập trình viên. c) Tại sao nên sử dụng Visual Studio Code
Không phải ngẫu nhiên mà nhóm chúng em lựa chọn Visual Studio Code làm IDE để phát triển hệ thống của mình Visual Studio Code mang lại rất nhiều ưu điểm vượt trội so với bất kì IDE nào khác: o Hỗ trợ đa nền tảng: Linux, Mac, Windows, o Hỗ trợ đa ngôn ngữ: C/C++, C#, F#, JavaScript, JSON, Visual Basic, HTML, CSS, o Ít dung lượng o Tính năng mạnh mẽ o Intellisense chuyên nghiệp o Giao diện thân thiện o Kiến trúc mạnh mẽ và người dùng có thể khai thác mở rộng o Số lượng người sử dụng lớn tạo nên ộng đồng hỗ trợ rộng rãi
KẾ HOẠCH KIỂM THỬ PHẦN MỀM – TEST PLANT
Những yêu cầu về tài nguyên
Máy tính cá nhân có kết nối mạng Internet
Intel Core i7, 2.3 GHz 8 GB 1TB 64 bit
Tên phần mềm Phiên bản Loại
Cốc Cốc 115.0.132 Trình duyệt web
Hoạt động Công cụ Nhà cung cấp Phiên bản
Quản lý Test Case Microsoft Office Excel Microsoft 2016
Quản lý Configuration Microsoft Office Word Microsoft 2016
Defect Tracking Microsoft Office Excel Microsoft 2016
Quản lý tiến độ kiểm thử Online gantt Product hunt
Hệ điều hành được sử dụng là Windows, máy tính có kết nối mạng để truy cập các ứng dụng, web
2.5.1 Vai trò và trách nhiệm
Dương Ngọc Hà Test Designer / Tester: Thiết kế và viết các testcase, thực thi các testcase, xem lại Test Plan
Nguyễn Anh Minh Test Designer / Tester: Thiết kế và viết các testcase, thực thi các testcase, xem lại Test Plan Đặng Quang Huy Test Manager / Test Designer / Tester: Lập kế hoạch kiểm thử, quản lý tiến độ hoạt động kiểm thử, thiết kế các testcase bổ sung và thực thi các testcase bổ sung
Phạm vi kiểm thử
3.1 Những chức năng được kiểm thử
3.1.1 Đăng kí a) Đăng ký thành công o Mở trang đăng ký. o Nhập thông tin hợp lệ vào tất cả các trường yêu cầu (ví dụ: tên, email, mật khẩu, xác nhận mật khẩu). o Nhấn nút "Đăng ký". o Xác minh rằng người dùng được chuyển hướng đến trang chào mừng hoặc trang chính. o Kiểm tra email xác nhận (nếu có) được gửi đến email đăng ký. o Đảm bảo tài khoản mới được tạo trong cơ sở dữ liệu. b) Đăng ký với email đã tồn tại o Mở trang đăng ký. o Nhập email đã được đăng ký trước đó. o Nhập các thông tin khác như bình thường. o Nhấn nút "Đăng ký". o Xác minh rằng hệ thống hiển thị thông báo lỗi về việc email đã tồn tại. c) Đăng ký với mật khẩu không hợp lệ o Mở trang đăng ký. o Nhập các thông tin hợp lệ ngoại trừ mật khẩu (ví dụ: mật khẩu quá ngắn, không đủ ký tự đặc biệt). o Nhấn nút "Đăng ký". o Xác minh rằng hệ thống hiển thị thông báo lỗi về mật khẩu không hợp lệ d) Đăng ký với mật khẩu không khớp o Mở trang đăng ký. o Nhập các thông tin hợp lệ ngoại trừ mật khẩu và xác nhận mật khẩu không khớp. o Nhấn nút "Đăng ký". o Xác minh rằng hệ thống hiển thị thông báo lỗi về việc mật khẩu và xác nhận mật khẩu không khớp. e) Đăng ký với các trường bắt buộc bỏ trống o Mở trang đăng ký. o Để trống một hoặc nhiều trường bắt buộc (ví dụ: tên, email, mật khẩu). o Nhấn nút "Đăng ký". o Xác minh rằng hệ thống hiển thị thông báo lỗi yêu cầu điền đầy đủ các trường bắt buộc. f) Đăng ký với định dạng email không hợp lệ o Mở trang đăng ký. o Nhập email không hợp lệ (ví dụ: không có ký tự '@', không có tên miền). o Nhấn nút "Đăng ký". o Xác minh rằng hệ thống hiển thị thông báo lỗi về định dạng email không hợp lệ.
3.1.2 Đăng nhập a) Đăng nhập thành công o Mở trang đăng nhập. o Nhập thông tin hợp lệ vào các trường yêu cầu (email/username và mật khẩu). o Nhấn nút "Đăng nhập". o Xác minh rằng người dùng được chuyển hướng đến trang chính hoặc trang chào mừng. o Đảm bảo các thông tin người dùng (như tên, vai trò) hiển thị đúng. b) Đăng nhập với thông tin không hợp lệ o Mở trang đăng nhập. o Nhập email/username hợp lệ nhưng mật khẩu sai. o Nhấn nút "Đăng nhập". o Xác minh rằng hệ thống hiển thị thông báo lỗi về việc thông tin đăng nhập không đúng. c) Đăng nhập với tài khoản không tồn tại o Mở trang đăng nhập. o Nhập email/username không tồn tại trong hệ thống. o Nhập bất kỳ mật khẩu nào. o Nhấn nút "Đăng nhập". o Xác minh rằng hệ thống hiển thị thông báo lỗi về việc tài khoản không tồn tại. d) Đăng nhập với tài khoản bị khóa o Mở trang đăng nhập. o Nhập email/username và mật khẩu hợp lệ của một tài khoản bị khóa. o Nhấn nút "Đăng nhập". o Xác minh rằng hệ thống hiển thị thông báo lỗi về việc tài khoản bị khóa e) Đăng nhập với các trường bắt buộc bỏ trống o Mở trang đăng nhập. o Để trống một hoặc cả hai trường (email/username và mật khẩu). o Nhấn nút "Đăng nhập". o Xác minh rằng hệ thống hiển thị thông báo lỗi yêu cầu điền đầy đủ các trường bắt buộc. f) Đăng nhập với định dạng email không hợp lệ o Mở trang đăng nhập. o Nhập email không hợp lệ (ví dụ: không có ký tự '@', không có tên miền). o Nhập bất kỳ mật khẩu nào. o Nhấn nút "Đăng nhập". o Xác minh rằng hệ thống hiển thị thông báo lỗi về định dạng email không hợp lệ.
3.1.3 Chức năng thanh toán hóa đơn a) Thanh toán thành công o Mở trang thanh toán hóa đơn. o Chọn hóa đơn cần thanh toán. o Nhập thông tin thanh toán hợp lệ (ví dụ: số thẻ tín dụng, ngày hết hạn, CVV). o Nhấn nút "Thanh toán". o Xác minh rằng hệ thống xử lý thanh toán thành công và hiển thị thông báo xác nhận. o Kiểm tra email xác nhận (nếu có) được gửi đến người dùng. o Đảm bảo trạng thái hóa đơn được cập nhật trong cơ sở dữ liệu và hệ thống ghi nhận giao dịch thành công. b) Thanh toán với thẻ không hợp lệ o Mở trang thanh toán hóa đơn. o Nhập thông tin thẻ không hợp lệ (ví dụ: số thẻ sai, ngày hết hạn đã qua). o Nhấn nút "Thanh toán". o Xác minh rằng hệ thống hiển thị thông báo lỗi về việc thông tin thẻ không hợp lệ. c) Thanh toán khi số dư không đủ o Mở trang thanh toán hóa đơn. o Nhập thông tin thẻ với số dư không đủ để thanh toán hóa đơn. o Nhấn nút "Thanh toán". o Xác minh rằng hệ thống hiển thị thông báo lỗi về việc số dư không đủ. d) Thanh toán với các trường bắt buộc bỏ trống o Mở trang thanh toán hóa đơn. o Để trống một hoặc nhiều trường bắt buộc (ví dụ: số thẻ, ngày hết hạn). o Nhấn nút "Thanh toán". o Xác minh rằng hệ thống hiển thị thông báo lỗi yêu cầu điền đầy đủ các trường bắt buộc. e) Thanh toán với định dạng thông tin không hợp lệ o Mở trang thanh toán hóa đơn. o Nhập thông tin thẻ với định dạng không hợp lệ (ví dụ: số thẻ không đủ
16 chữ số). o Nhấn nút "Thanh toán". o Xác minh rằng hệ thống hiển thị thông báo lỗi về định dạng thông tin không hợp lệ. f) Kiểm thử tính năng nhớ thông tin thẻ o Mở trang thanh toán hóa đơn. o Nhập thông tin thẻ hợp lệ và chọn tùy chọn “Nhớ thông tin thẻ”. o Thanh toán thành công và xác minh rằng thông tin thẻ được lưu lại cho lần thanh toán tiếp theo.
3.1.4 Chức năng xem lịch sử thanh toán hóa đơn a) Xem lịch sử thanh toán thành công o Đăng nhập vào tài khoản người dùng. o Điều hướng đến trang "Lịch sử thanh toán" hoặc tương đương. o Xác minh rằng hệ thống hiển thị danh sách các giao dịch thanh toán trước đó, bao gồm các thông tin như ngày thanh toán, số tiền, phương thức thanh toán, và trạng thái thanh toán. o Đảm bảo các giao dịch hiển thị chính xác và đầy đủ. b) Không có lịch sử thanh toán o Đăng nhập vào tài khoản người dùng mới chưa có giao dịch thanh toán nào. o Điều hướng đến trang "Lịch sử thanh toán". o Xác minh rằng hệ thống hiển thị thông báo hoặc màn hình trống, thông báo rằng không có giao dịch nào được tìm thấy. c) Lỗi truy xuất dữ liệu o Mô phỏng tình huống lỗi kết nối với cơ sở dữ liệu hoặc lỗi truy xuất dữ liệu (bằng cách tắt kết nối cơ sở dữ liệu hoặc cấu hình sai). o Đăng nhập vào tài khoản người dùng và điều hướng đến trang "Lịch sử thanh toán". o Xác minh rằng hệ thống hiển thị thông báo lỗi phù hợp và hướng dẫn người dùng thử lại sau hoặc liên hệ hỗ trợ. d) Tìm kiếm và lọc giao dịch o Đăng nhập vào tài khoản người dùng. o Sử dụng các chức năng tìm kiếm và lọc trên trang "Lịch sử thanh toán" (ví dụ: tìm kiếm theo ngày, số tiền, phương thức thanh toán). o Xác minh rằng hệ thống hiển thị đúng các giao dịch theo tiêu chí tìm kiếm và lọc. e) Xem chi tiết giao dịch o Đăng nhập vào tài khoản người dùng. o Điều hướng đến trang "Lịch sử thanh toán". o Chọn một giao dịch cụ thể để xem chi tiết. o Xác minh rằng hệ thống hiển thị đầy đủ thông tin chi tiết của giao dịch, bao gồm các thông tin bổ sung như mã giao dịch, chi tiết sản phẩm/dịch vụ, và bất kỳ thông tin liên quan khác.
3.1.5 Chức năng tự động tính số tiền nước của hộ gia đình a) Tính tiền nước với mức tiêu thụ hợp lệ o Nhập thông tin về mức tiêu thụ nước hàng tháng của hộ gia đình vào hệ thống. o Hệ thống sẽ tự động tính số tiền phải trả dựa trên công thức tính tiền nước đã quy định. o Xác minh rằng hệ thống hiển thị số tiền phải trả chính xác theo công thức đã được quy định. b) Tính tiền nước với mức tiêu thụ vượt mức quy định o Nhập thông tin về mức tiêu thụ nước vượt quá mức quy định của hộ gia đình vào hệ thống. o Hệ thống sẽ tự động tính số tiền phải trả với giá nước cao hơn cho phần nước vượt mức quy định. o Xác minh rằng hệ thống hiển thị số tiền phải trả chính xác theo công thức đã được quy định, bao gồm cả phần nước vượt mức. c) Tính tiền nước với dữ liệu không hợp lệ o Nhập thông tin về mức tiêu thụ nước không hợp lệ (ví dụ: số âm, ký tự không phải số). o Xác minh rằng hệ thống hiển thị thông báo lỗi yêu cầu nhập lại dữ liệu hợp lệ. d) Tính tiền nước với thay đổi giá nước o Cập nhật giá nước trong hệ thống (giả định có sự thay đổi giá nước). o Nhập thông tin về mức tiêu thụ nước sau khi thay đổi giá. o Xác minh rằng hệ thống tính toán số tiền phải trả theo giá nước mới và hiển thị chính xác. e) Tính tiền nước với các quy định đặc biệt o Nhập thông tin về mức tiêu thụ nước của hộ gia đình thuộc đối tượng ưu đãi hoặc có các quy định đặc biệt (ví dụ: hộ gia đình nghèo, chính sách hỗ trợ của nhà nước). o Xác minh rằng hệ thống tính toán số tiền phải trả theo đúng các quy định đặc biệt và hiển thị chính xác. f) Kiểm thử tích hợp o Đảm bảo rằng sau khi tính toán, thông tin về số tiền phải trả được lưu trữ chính xác trong cơ sở dữ liệu. o Kiểm tra việc tích hợp với các chức năng khác như xuất hóa đơn, gửi thông báo thanh toán.
3.2 Những chức năng chưa được kiểm thử
Những tính năng không được đặc tả trong tài liệu mô tả tìm hiểu về phân tích yêu cầu: o Xuất hóa đơn o Thống kê lượng tiêu thụ nước
Những chức năng này sẽ được kiểm thử vào phần sau
Kỹ thuật kiểm thử phần mềm
4.1 Kỹ thuật kiểm thử phần mềm là gì?
Kỹ thuật kiểm thử phần mềm là phương tiện giúp bạn thiết kế trường hợp kiểm thử tốt hơn Là một phương pháp để kiểm tra sản phẩm phần mềm thực tế có phù hợp với các yêu cầu mong đợi hay không Cũng như để đảm bảo rằng sản phẩm phần mềm đó không có khiếm khuyết
Công việc này liên quan đến việc thực thi các thành phần phần mềm, hệ thống bằng cách sử dụng các công cụ thủ công hoặc tự động Thông qua đó nhằm đánh giá một hoặc nhiều thuộc tính quan tâm Mục đích của kiểm thử phần mềm là xác định các lỗi, khoảng trống hoặc các yêu cầu còn thiếu đối lập với các yêu cầu thực tế.
4.2 Các kỹ thuật kiểm thử phần mềm
Hình 9: Các kỹ thuật kiểm thử phần mềm a) Phân vùng tương đương (Equivalence Class)
Phương pháp kiểm thử phần mềm này chia miền đầu vào của chương trình thành các lớp dữ liệu mà từ đó các trường hợp kiểm thử nên được thiết kế
Phân vùng lớp tương đương cho phép phân chia tập hợp các điều kiện kiểm tra thành một phân vùng nên gần như là giống nhau.
Các giá trị đầu vào chia thành các vùng tương đương sau: o Vùng tương đương hợp lệ: Tập hợp các giá trị kiểm thử thỏa mãn điều kiện của hệ thống. o Vùng tương đương không hợp lệ: Tập hợp các giá trị kiểm thử mô tả các trạng thái khác nhau của hệ thống: Sai, thiếu, không đúng,…
Mục đích của việc này là để mỗi lớp tương đương chỉ cần test trên các phân tử đại diện Từ đó nhằm giảm số lượng test case cần phải thiết kế Để thiết kế Test-case bằng phân lớp tương đương cần tiến hành theo 2 bước: o Xác định các lớp tương đương o Xác định các ca kiểm thử b) Phân tích giá trị biên (Boundary Value Analysis)
Dựa trên các việc kiểm thử tại các ranh giới giữa các phân vùng để phân tích giá trị biên Trong lớp tương đương sẽ chọn nhiều giá trị để làm đại diện Kỹ thuật phân tích giá trị biên yêu cầu thì chỉ chọn một hoặc vài giá trị là các cạnh của lớp tương đương để làm điều kiện test Nên tập trung vào các giá trị biên chứ không test toàn bộ dữ liệu Kỹ thuật thiết kế này bổ sung cho phân vùng tương đương.
Với nguyên tắc là nếu một hệ thống hoạt động tốt với các giá trị biên thì nó sẽ hoạt động tốt cho tất cả các giá trị nằm giữa hai giá trị biên Phân tích giá trị biên sẽ chọn các giá trị: o Giá trị ngay dưới giá trị nhỏ nhất o Giá trị nhỏ nhất o Giá trị ngay trên giá trị nhỏ nhất o Giá trị ngay dưới giá trị lớn nhất o Giá trị lớn nhất o Giá trị ngay trên giá trị lớn nhất c) Bảng quyết định (Decision Table based testing)
Kỹ thuật kiểm thử phần mềm này được sử dụng cho các chức năng cần sự kết hợp của các yếu tố đầu vào các biến. Đầu tiên phải xác định đầu ra của các chức năng có phụ thuộc sự kết hợp của các đầu vào Nếu có tập hợp kết hợp đầu vào lớn thì chia thành các tập hợp nhỏ hơn Điều này sẽ hữu ích cho việc quản lý bảng quyết định.
Cần tạo một bảng và liệt kê tất cả các loại kết hợp đầu vào và đầu ra tương ứng đối với mọi chức năng Điều này giúp xác định các điều kiện bị tester bỏ qua. Các bước để tạo bảng quyết định: o Nhập đầu vào theo hàng o Nhập tất cả các quy tắc trong cột o Điền vào bảng với sự kết hợp của đầu vào o Trong hàng cuối, ghi chú đầu ra để so với kết hợp đầu vào. d) Đoán lỗi (Error Guessing) Đoán lỗi là một kỹ thuật kiểm thử phần mềm dựa trên việc đoán lỗi có thể chiếm ưu thế trong code Kỹ thuật này dựa trên kinh nghiệm Khi đó nhà phân tích kiểm thử sử dụng kinh nghiệm của mình để đoán phần xảy ra lỗi hoặc vấn đề của ứng dụng kiểm thử đó.
Kỹ thuật này xác định danh sách các lỗi có thể xảy ra hoặc các tình huống dễ xảy ra lỗi Sau đó, người kiểm thử viết cases để tìm kiếm những lỗi đó
Các cách để đoán lỗi: o Sử dụng kinh nghiệm trước đây để kiểm thử các ứng dụng tương tự o Có kiến thức về các lỗi thực hiện điển hình o Hiểu biết về hệ thống đang kiểm thử o Đánh giá lịch sử dữ liệu và kết quả kiểm thử e) Kiểm thử thăm dò Đây không phải là một kỹ thuật kiểm thử ngẫu nhiên Mà đây là phương pháp thử nghiệm dựa trên việc học và khám phá sản phẩm kết hợp với nhiều khía cạnh khác Bao gồm cả kinh nghiệm, sự hiểu biết, khả năng phân tích và trí tuệ của kỹ sư kiểm tra trong các quy trình Agile
Trước khi thử nghiệm thăm dò, cần chuẩn bị tiền đề trước khi bắt đầu thử nghiệm thăm dò Những việc bạn cần chuẩn bị như về phạm vi chức năng, công cụ sử dụng, dữ liệu thử nghiệm, môi trường,…Việc lên kế hoạch này sẽ giúp cho người thử nghiệm trong quá trình thực hiện kiểm thử được suôn sẻ hơn. Một điểm quan trọng khác của kiểm thử thăm dò là tài liệu cần được hoàn thành đầy đủ sau khi các bài kiểm tra kết thúc. f) Kiểm thử hộp đen (Black box testing)
Kiểm thử hộp đen (black box testing) là phương pháp kiểm thử phần mềm mà việc kiểm tra các chức năng của một ứng dụng không cần quan tâm vào cấu trúc nội bộ Mục đích chính của kiểm thử hộp đen chỉ là để xem phần mềm có hoạt động như dự kiến và liệu nó có đáp ứng được sự mong đợi của người dùng hay không.
Hình 10: Kiểm thử hộp đen (Black box testing) Mục tiêu o Mục tiêu chính của Black box testing là kiểm tra chức năng của hệ thống được thử nghiệm o Đối tượng: Là thành phần phần mềm Có thể là 1 hàm chức năng, 1 module chức năng, 1 phân hệ chức năng. o Người thực hiện test: end user, developer, và tester
Kiểm thử hộp đen được sử dụng thích hợp nhất trong kiểm thử hệ thống (System test) và kiểm thử chấp nhận (Acceptance test) Ngoài ra, kiểu test này còn được sử dụng trong nhiều cấp độ khác của kiểm thử phần mềm như: kiểm thử đơn vị, kiểm thử tích hợp,…. o Khi viết test case: Dựa vào yêu cầu và giao diện bên ngoài của chương trình Không can thiệp vào bên trong code của chương trình. o Khi thực hiện test: Thực hiện trên giao diện của chương trình Yêu cầu chương trình phải chạy được mới test được, không can thiệp vào code.
Chiến lược kiểm thử
5.1 Kiểm thử đa nền tảng o Có nhiều loại hệ điều hành di động khác nhau có sẵn trên thị trường Chủ yếu là Android và iOS. o Điều cần thiết là phải lên kế hoạch kiểm thử ứng dụng di động trên tất cả các nền tảng để đảm bảo ứng dụng hoạt động như mong đợi trên tất cả các nền tảng. o Hầu hết các ứng dụng sẽ có một bộ mã riêng cho Android và iOS Do đó, điều quan trọng là phải kiểm tra ứng dụng đa nền tảng để tìm bất kỳ vấn đề nào.
5.2 Kiểm thử chức năng (Functionality Testing) o Kiểm thử các chức năng chính phải liên quan đến chức năng của ứng dụng mà chúng ta đang phát triển. o USP (Unique Selling Point - đặc điểm bán hàng) của bất kỳ ứng dụng nào là mức độ việc thực hiện nhiệm vụ kiểm thử của ứng dụng đó Vì vậy, điều rất quan trọng là phải kiểm tra để hoàn thành chức năng trong và ngoài. o Mọi luồng trong ứng dụng cần được kiểm tra để đảm bảo không có chức năng hoặc luồng nào bị hỏng.
Chủ yếu có 3 loại ứng dụng di động o Ứng dụng gốc: những ứng dụng được phát triển đặc biệt cho nền tảng Android hoặc iOS o Ứng dụng Website di động: các ứng dụng dựa trên trình duyệt trên điện thoại di động o Hybrid: sự kết hợp của hai loại trên Trong khi lập kế hoạch kiểm tra, cần có phạm vi bao phủ tốt cho cả ba loại ứng dụng để đảm bảo tính ổn định và hiệu suất.
5.4 Kiểm thử UI và UX o Giao diện người dùng (UI) và trải nghiệm người dùng (UX) là những thứ tiếp theo cần được lên kế hoạch tốt mà không thất bại. o Giao diện người dùng là những gì người dùng nhìn thấy và cách họ tương tác với ứng dụng di động của chúng ta. o Giao diện người dùng phải được thiết kế theo cách hiểu và điều hướng thông qua ứng dụng cho tất cả các loại người dùng. o Tương tự, đối với UX, điều hướng giữa các trang và thời gian cần thiết để tạo báo cáo đầu ra theo ứng dụng cũng phải nằm trong SLA (Service- level Agreement - cam kết nhà cung cấp với khách hàng) được xác định trước. o Với vô số ứng dụng dành cho thiết bị di động hiện có trên thị trường, ứng dụng của chúng ta có thể không có cơ hội thứ hai nếu người tiêu dùng hoặc người dùng cuối không thích nó.
5.5 Kiểm thử Backend o Kiểm thử Backend là một loại kiểm thử kiểm tra lớp ứng dụng và cơ sở dữ liệu với kiến trúc 3 tầng Kiểm thử Backend được thực hiện để đảm bảo dữ liệu được lưu trữ ở đúng nơi và đúng định dạng. o Trong quá trình kiểm thử, cần đảm bảo rằng dữ liệu do người dùng nhập vào được lưu một cách chính xác, theo đúng cấu hình và cũng phải dễ dàng truy xuất được. o Kiểm tra Backend cũng liên quan đến việc kiểm tra các vị trí khác nhau nơi dữ liệu được lưu và phản ánh trong ứng dụng và nó có được thực hiện chính xác hay không. o Lưu và truy xuất hồ sơ người dùng chính xác sẽ là một trường hợp sử dụng chính khác cho kiểm thử Backend.
5.6 Network compatibility Testing (kiểm thử khả năng tương thích mạng) o Các ứng dụng Mobiel hoạt động tùy theo sự khác biệt về cường độ internet o Trong trường hợp này, kiểm tra tính tương thích mạng cũng cần được đưa vào chiến lược kiểm tra của chúng ta. o Điều này sẽ bao gồm việc kiểm thử ứng dụng trong các cấu hình mạng khác nhau như với dữ liệu và wifi. o Cường độ tín hiệu, băng thông khác nhau và sau đó đo TPS (giao dịch mỗi giây) để xem liệu có nằm trong SLA theo kế hoạch hay không.
5.7 Kiểm tra lưu trữ (Storage Testing) o Kiểm tra bộ nhớ gần đây đã trở thành một phần quan trọng của chiến lược kiểm tra ứng dụng dành cho thiết bị di động. o Với số lượng ứng dụng được sử dụng ngày càng nhiều và dung lượng hạn chế để sử dụng. o Mọi người có xu hướng tránh các ứng dụng cần quá nhiều dung lượng để tải xuống hoặc nhiều dữ liệu hơn để sử dụng. o Vì vậy, điều quan trọng là phải kiểm tra và chỉnh sửa các thông số này để người dùng cuối chấp nhận tốt hơn.
5.8 Kiểm tra luồng dữ liệu o Hầu hết các ứng dụng di động không độc lập và cần một hoặc nhiều đầu vào khác từ các hệ thống và máy chủ bên ngoài ứng dụng. o Do đó, nó trở thành một phần quan trọng của chiến lược bao gồm việc kiểm tra luồng dữ liệu từ hệ thống này sang hệ thống khác.
5.9 Kiểm thử nội địa hóa (Localization Testing) o Mặc dù điều này có thể không cần thiết cho tất cả các ứng dụng, nhưng nếu cần thì chúng ta nên có trong chiến lược của mình. o Kiểm tra nội địa hóa bao gồm việc kiểm tra ứng dụng cho các thông số dựa trên vị trí như ngôn ngữ, bản đồ và bất kỳ thứ nào khác liên quan đến vị trí Đây đôi khi cũng là những yêu cầu pháp lý đối với một số địa điểm.
5.10 Kiểm thử thiết bị o Hiện nay có rất nhiều thiết bị đang sử dụng Để đảm bảo rằng ứng dụng của chúng hoạt động tốt trên tất cả thiết bị (device) Chúng ta cần kiểm tra hiệu suất, chức năng và giao diện người dùng của ứng dụng trên các thiết bị thực. o Đó là một thách thức cũng như một nhiệm vụ khó khăn do có hàng ngàn thiết bị với kích thước màn hình khác nhau Vì vậy, trong tình huống này, phụ thuộc vào trình giả lập đã được coi là một thực tế phổ biến. o Nhưng trình giả lập không phải là một giải pháp tuyệt đối Vì vậy, giải pháp hoàn hảo ở đây sẽ là kiểm tra ứng dụng ở kích thước màn hình thường được sử dụng và sau đó đối với các tùy chọn khác thì hãy sử dụng trình giả lập.
Các loại kiểm thử phần mềm
6.1 Kiểm thử cài đặt (Installation testing)
Kiểm thử cài đặt, như tên gọi của nó, thường sẽ xoay quanh việc cài đặt, tháo gỡ các ứng dụng trên các môi trường khác nhau.
Kiểm thử cài đặt đóng vài trò rất rất rất quan trọng Vì sao? Vì nếu sản phẩm của chúng ta cần phải cài đặt để có thể hoạt động và giả sử người dùng không thể cài đặt (hay có lỗi ở phần cài đặt) thì hậu quả là….chẳng ai sử dụng được sản phẩm của chúng ta.
Khi nào sử dụng kiểm thử cài đặt? o Chúng ta nên bắt đầu hoạt động kiểm thử cài đặt càng sớm càng tốt và nếu sản phẩm của chúng ta cần phải cài đặt thì chúng ta nên tập trung nhiều vào phần này.
6.2 Kiểm thử “khói” (Smoke test)
Thuật ngữ smoke test được bắt đầu trong ngành điện tử, phần cứng Đây là hoạt động kiểm thử đầu tiên cần phải thực hiện khi kỹ sư bật công tắc hay cắm nguồn điện để xem….có “khói bốc lên cao hay không” Nếu không có khói (nghĩa là sản phẩm ok để test tiếp), nếu có khói (sản phẩm đã chết) thì phải sửa ngay tức khắc.
Tương tự, trong phát triển phần mềm thì smoke test là loại test nhằm đánh giá xem sản phẩm, build được xây dựng bởi dev có lỗi gì nghiêm trọng hay không để có thể tiếp tục các hoạt động khác.
Loại kiểm thử này chỉ nhằm mục đích đánh giá sơ khởi xem build nhận được có ok để test tiếp hay không Lí do ta phải sử dụng smoke test là việc phát hiện sớm những lỗi quan trọng sẽ giúp tránh lãng phí khi chúng ta dành thời gian cho những hoạt đông kiểm thử khác.
Smoke test (một số nơi có thể gọi là sanity test, build validation test, build acceptance test) thường là một bộ kiểm thử đơn giản và chứa một số các test case cơ bản đi qua những tính năng quan trọng nhất của sản phẩm Khi chúng ta làm việc với sản phẩm chúng ta sẽ phải biết được những tính năng nào là quan trọng nhất (nghĩa là những tính năng này là giá trị gốc, là sống còn đối với sản phẩm hoặc công ty)
6.3 Kiểm thử tương thích (Compatability test) Đây là kiểu kiểm thử nhằm mục đích đánh giá sự tương thích giữa ứng dụng với các môi trường, nền tảng khác nhau Loại kiểm thử này quan trọng vì ngày nay ngày càng xuất hiện nhiều nền tảng công nghệ, hệ điều hành, trình duyệt khác nhau và người dùng luôn mong đợi sản phẩm của họ phải hoạt động tốt trên các môi trường khác nhau này.
Các hoạt động kiểm thử tương thích thường áp dụng cho: o Các trình duyệt web khác nhau như Chrome, FireFox, Safari và các version khác nhau của từng loại o Các hệ điều hành khác nhau như Windows, Linux, Mac OS và các version khác nhau của từng loại o Các nền tảng khác nhau như PC, Mobile, Desktop, Laptop
Tuy nhiên, kiểm thử tương thích cũng có những khó khăn riêng của nó trong đó nổi bật là 2 khó khăn sau: o Chuẩn bị cho môi trường test: Việc phải kiểm thử trên nhiều môi trường test khác nhau sẽ khiến việc chuẩn bị, setup gặp nhiều khó khăn về mặt chi phí, thời gian, kỹ thuật Giải pháp là có thể sử dụng máy ảo để hỗ trợ việc chuẩn bị môi trường nhanh hơn hoặc các dịch vụ cung cấp các browser có sẵn o Độ bao phủ kiểm thử rất rất lơn: Giả sử có 500 test case cần phải thực thi và chúng ta phải chạy 500 test case này trên các trình duyệt Chrome, FireFox, Safari, IE và mỗi trình duyệt lại có những version khác nhau. Chúng ta tự nhân và có thể thấy khối lượng test case cần phải chạy là
“khổng lồ” Giải pháp là giảm số lượng môi trường test hoặc tăng nguồn nhân lực hoặc cũng có thể tự động hóa bộ kiểm thử để giảm thời gian thực thi ̉6.4 Kiểm thử hồi quy (Regression test) Đây có thể được coi là loại test phổ biến nhất và hầu hết tester đều biết qua loại test này.
Kiểm thử hồi qui nhằm mục đích kiểm tra xem những thay đổi trong một build ở một tính năng (như thêm mới tính năng, thay đổi một tính năng, sửa lỗi) không làm ảnh hưởng đến những tính năng khác hay tạo thêm lỗi mới.
Loại kiểm thử này quan trọng và gần như là không thể thiếu trong hoạt động kiểm thử vì chúng ta không thể (hoặc khó) đoán được liệu những thay đổi dù là nhỏ nhất có thể ảnh hưởng đến những module khác hay không Dĩ nhiên một số thay đổi có thể đoán được, một số thay đổi thì không Do đó việc chạy hồi qui được coi là giải pháp an toàn nhất.
Kiểm thử hồi qui được thực thi như sau: o Giả sử chúng ta có 1000 test case cho toàn bộ sản phẩm của chúng ta, sau khi developer đưa ra một build mới, chúng ta phải thực thi toàn bộ
1000 test case này trên build mới và cứ mỗi lần ra build mới bạn sẽ phải thực thi lại 1000 test case này. o Do phải thực thi với số lượng lớn test case sau mỗi đợt build nên kiểm thử hồi quy thường tốn kém (thời gian, nhân lực) và “boring” Giải pháp cho vấn đề này thường thì kiểm thử hồi quy được tự động hóa để tăng độ bao phủ hay có thể giảm số lượng trường hợp kiểm thử (chỉ chọn những trường hợp quan trọng) hoặc có thể tăng nhân lực Còn tùy những điều kiện khác nhau sẽ quyết định giải pháp nào là phù hợp.
6.5 Kiểm thử nghiệm thu (Acceptance test) o Kiểm thử nghiệm thu là loại kiểm thử được thực hiện bởi khách hàng hay chủ sản phẩm để đánh giá chất lượng của sản phẩm liệu xem có chấp nhận sản phẩm hay không Loại kiểm thử này thường thấy ở các dự án outsource. o Bộ kiểm thử nghiệm thu thường chứa những test case cơ bản quan trọng của sản phẩm và thường được thực thi độc lập bởi khách hàng hoặc một bên thứ 3 Trong thực tế, một số dự án thì kiểm thử nghiệm thu cũng thường được sử dụng như là kiểm thử smoke test để đánh giá build từ developer để xem có chấp nhận để có thể test tiếp hay không.
Điều kiện chấp nhận
o Passed tất cả các testcases đã được định nghĩa o Hệ thống chạy ổn định trên các trình duyệt web khác nhau (CocCoc và GoogleChrome phiên bản mới nhất).
Defect Tracking
Mức độ nghiêm trọng Đặc tả lỗi
High - Không sử dụng được chức năng xuất hóa đơn
- Không thể đăng kí tạo tài khoản mới
- Không thể mở thông tin của hóa đơn nước
- Không nhập được số nước của hộ gia đình Medium - Tìm kiếm sai
- Hiển thị sai thông tin của người dùng
- Không thể tạo kết nối với email
- Không thể chỉnh sửa thông tin cá nhân người dùng
- Không thể chỉnh sửa thông tin tài khoản
- Không hiển thị được khách hàng nộp tiền quá hạnLow - Hiển thị kết quả tìm kiếm không đúng mẫu
- Hiển thị sai thông tin cá nhân, thông tin tài khoản
- Các chức năng chạy không ổn định
8.2 Quy trình xử lý lỗi o Ghi nhận lại các lỗi được tìm thấy trong quá trình kiểm thử o Tổng hợp báo cáo cho bên phát triển trang web thanh toán nước cho hộ cá nhân.
GIAO DIỆN HỆ THỐNG
Đăng nhập/Đăng ký
Hình 12: Giao diện đăng nhập b) Đăng ký
Hình 13: Giao diện đăng ký
Giao diện tính tiền nước cho hộ gia đình
Hình 14: Giao diện tính tiền nước cho hộ gia đình
Với giao diện đơn giản gần gũi, người dùng có thể tự tính tiền nước mà mình đã dùng hết trong một tháng Qua đây cho chúng ta thấy được sự tiện lợi và tính minh bạch các thông tin mà hệ thống mang lại.
Giao diện thanh toán hóa đơn
Hình 15: Giao diện thanh toán hóa đơn Giao diện thanh toán hóa đơn là một phần quan trọng của hệ thống, giúp người dùng dễ dàng và tiện lợi trong việc thanh toán các hóa đơn nước hàng thàng của họ
Giao diện lịch sử thanh toán hóa đơn
Hình 16: Giao diện lịch sử thanh toán hóa đơn
Giao diện lịch sử thanh toán hóa đơn là một phần quan trọng của hệ thống quản lý thanh toán, giúp người dùng dễ dàng theo dõi các giao dịch thanh toán của họ
XÂY DỰNG TEST CASE
Xây dựng test case cho chức năng đăng nhập/đăng ký
Tiêu đề Input Các bước thực hiện Output
TC001 Đăng nhập thành công với thông tin hợp lệ
Email: hangoc@gmail.com Password: Hangoc150803
2 Nhập email hợp lệ vào trường email
3 Nhập mật khẩu hợp lệ vào trường mật khẩu
Người dùng được chuyển hướng đến trang chính sau khi đăng nhập thành công TC002 Đăng nhập thất bại với email sai
Email: hangocgmail.com Password: Hangoc150803
Hiển thị thông định dạng dạng vào trường email
3 Nhập mật khẩu hợp lệ vào trường mật khẩu
4 Nhấn nút đăng nhập báo lỗi
TC003 Đăng nhập thất bại với mật khẩu sai
Email: hangoc@gmail.com Password: WrongPassword
2 Nhập email hợp lệ vào trường email
3 Nhập mật khẩu sai vào trường mật khẩu
Hiển thị thông báo lỗi
“Mật khẩu không chính xác”
TC004 Đăng nhập thất bại với tài khoản không tồn tại
Email:notxis@gmail.com Password: Hangoc150803
2 Nhập email không tồn tại vào trường emai
3 Nhập mật khẩu hợp lệ vào trường mật khẩu
Hiển thị thông báo “Tài khoản không tồn lại”
TC005 Đăng nhập thất bại với mật khẩu ngắn
Email: hangoc@gmail.com Password: 12345
2 Nhập email hợp lệ vào trường email
3 Nhập mật khẩu ít hơn
6 ký tự vào trường mật khẩu
Hiển thị thông báo mật khẩu phải có ít nhất 6 ký tự
TC006 Đăng nhập thất bại khi không nhập email
3 Nhập mật khẩu hợp lệ vào trường mật khẩu
TC007 Đăng nhập thất bại khi không nhập mật khẩu
Email: hangoc@gmail.com Password:
2 Nhập email hợp lệ vào trường email
3 Để trống trường mật khẩu
“Vui lòng nhập mật khẩu”
TC008 Đăng nhập thất bại với email chứa kí tự đặc biệt
Email:hango#@gmail.com Password: Hangoc150803
2 Nhập email chứa ký tự đặc biệt vào trường email
3 Nhập mật khẩu hợp lệ vào trường mật khẩu
Hiển thị thông báo lỗi
“Email không hợp lệ” b) Đăng ký
Case ID Tiêu đề Input Các bước thực hiện Output
TC001 Đăng ký thành công với thông tin hợp lệ
Name: HaNgoc Email: hangoc@gmail.com Password: Hangoc150803
2 Nhập tên hợp lệ vào trường name
3 Nhập email hợp lệ vào trường email
4 Nhập mật khẩu hợp lệ vào trường mật khẩu
5 Nhập lại mật khẩu vào trường xác nhận mật khẩu
Người dùng đăng ký thành công và chuyển hướng đến trang đăng nhập
TC002 Đăng ký thất bại với email sai định dạng
Name: HaNgoc Email: hangocgmail.com Password: Hangoc150803
2 Nhập tên hợp lệ vào trường name
3 Nhập email sai định dạng vào trường email
4 Nhập mật khẩu hợp lệ vào trường mật khẩu
5 Nhập lại mật khẩu vào trường xác nhận mật khẩu
Hiển thị thông báo lỗi
TC003 Đăng ký thất bại với mật khẩu quá ngắn
Name: HaNgoc Email: hangoc@gmail.com Password: 12345
2 Nhâp tên hợp lệ vào trường name
3 Nhập email hợp lệ Vào trường email
4 Nhập mật khẩu ít hơn 6 ký tự vào trường mật khẩu
5 Nhập lại mật khẩu vào trường xác nhận mật khẩu
Hiển thị thông báo lỗi
“Mật khẩu phải có ít nhất 6 ký tự”
TC004 Đăng ký thất bại khi không nhập email
2 Nhâp tên hợp lệ vào trường name
4 Nhập mật khẩu hợp lệ vào trường mật khẩu
5 Nhập lại mật khẩu vào trường xác nhận mật khẩu
Hiển thị thông báo lỗi
TC005 Đăng ký thất bại khi không nhập mật khẩu
Name: HaNgoc Email: hangoc@gmail.com Password:
2 Nhập tên hợp lệ vào trường name
3 Nhập email hợp lệ vào trường email
4 Để trống trường mật khẩu
5 Nhập lại mật khẩu vào trường mật khẩu
Hiển thị thông báo lỗi
“Vui lòng nhập mật khẩu”
TC006 Đăng ký thất bại khi không nhập tên
Email: hangoc@gmail.com Password: Hangoc150803
3 Nhập email hợp lệ vào trường email
4 Nhập mật khẩu hợp lệ vào trường mật khẩu
5 Nhập lại mật khẩu vào trường xác nhận mật khẩu
Hiển thị thông báo lỗi
TC007 Đăng ký thất bại khi mật khẩu và xác nhận mật khẩu không khớp
Name: HaNgoc Email: hangoc@gmail.com Password: Hangoc150803 Xác nhận mật khẩu: 12345
2 Nhập tên hợp lệ vào trường name
3 Nhập email hợp lệ vào trường email
4 Nhập mật khẩu hợp lệ vào trường mật khẩu
5 Nhập mật khẩu không khớp vào trường xác nhận mật khẩu
Hiển thị thông báo lỗi
“Mật khẩu và Xác nhận mật khẩu không khớp”
TC008 Đăng ký thất bại với email đã tồn tại
Name: HaNgoc Email:existing@gmail.com Password: Hangoc150803
2 Nhập tên hợp lệ vào trường name
3 Nhập email đã tồn tại vào trường email
4 Nhập mật khẩu hợp lệ vào trường mật khẩu
5 Nhập lại mật khẩu vào trường xác nhận mật khẩu
Hiển thị thông báo lỗi
“Email đã được sử dụng”
Xây dựng test case cho chức năng thanh toán hóa đơn
Tiêu đề Input Các bước thực hiện Output
TC001 Thanh toán hóa đơn thành công với thông tin hợp lệ
Số tiền: 500000 VND Phương thức thanh toán:
1 Mở trang thanh toán hóa đơn
2 Nhập mã hóa đơn hợp lệ vào trường mã hóa đơn
3 Nhập số tiền vào trường số tiền
4 Chọn phương thức thanh toán “Thẻ tín dụng”.
Hiển thị thông báo thanh toán thành công và chi tiết giao dịch
TC002 Thanh toán thất bại với mã hóa đơn không tồn tại
Số tiền: 500000 VND Phương thức thanh toán:
1 Mở trang thanh toán hóa đơn
2 Nhập mã hóa đơn không tồn tại vào trường mã hóa đơn
3 Nhập số tiền vào trường số tiền
4 Chọn phương thức thanh toán “Thẻ tín dụng”
Hiển thị thông báo lỗi
“Mã hóa đơn không tồn tại”
TC003 Thanh toán thất bại với số tiền âm
Số tiền: -500000 VND Phương thức thanh toán:
1 Mở trang thanh toán hóa đơn
2 Nhập mã hóa đơn hợp lệ vào trường mã hóa đơn
3 Nhập số tiền âm vào trường số tiền
4 Chọn phương thức thanh toán “Thẻ tín dụng”
Hiển thị thông báo lỗi
“Số tiền không hợp lệ”
TC004 Thanh toán thất bại khi không nhập mã hóa đơn
Số tiền: 500000 VND Phương thức thanh toán:
1 Mở trang thanh toán hóa đơn
2 Để trống trường mã hóa đơn
3 Nhập số tiền vào trường số tiền
4 Chọn phương thức thanh toán “Thẻ tín dụng”
Hiển thị thông báo lỗi
“Vui lòng nhập mã hóa đơn”
TC005 Thanh toán thất bại khi không nhập số tiền
1 Mở trang thanh toán hóa đơn
2 Nhập mã hóa đơn hợp lệ vào trường mã hóa đơn
3 Để trống trường số tiền
4 Chọn phương thức thanh toán “Thẻ tín dụng”
Hiển thị thông báo lỗi
“Vui lòng nhập số tiền”
TC006 Thanh toán thất bại khi không chọn phương thức thanh toán
Số tiền: 500000 VND Phương thức thanh toán:
1 Mở trang thanh toán hóa đơn
2 Nhập mã hóa đơn hợp lệ vào trường mã hóa đơn
3 Nhập số tiền vào trường số tiền
4 Để trống phương thức thanh toán
Hiển thị thông báo lỗi
“Vui lòng chọn phương thức thanh toán”
TC007 Thanh toán thất bại khi nhập kí tự đặc biệt vào mã hóa đơn
Số tiền: 500000 VND Phương thức thanh toán:
1 Mở trang thanh toán hóa đơn
2 Nhập ký tự đặc biệt vào trường mã hóa đơn
3 Nhập số tiền vào trường số tiền
4 Chọn phương thức thanh toán “Thẻ tín dụng”
Hiển thị thông báo lỗi
“Mã hóa đơn không hợp lệ”
TC008 Thanh toán thất bại khi nhập ký tự đặc biệt vào số tiền
Số tiền: 50000@# VND Phương thức thanh toán:
1 Mở trang thanh toán hóa đơn
2 Nhập mã hóa đơn hợp lệ vào trường mã hóa đơn
3 Nhập ký tự đặc biệt vào trường số tiền
4 Chọn phương thức thanh toán “Thẻ tín dụng”
Hiển thị thông báo lỗi
“Số tiền không hợp lệ”
THỰC HIỆN KIỂM THỬ
Cài đặt môi trường kiểm thử
a) Thiết lập máy chủ kiểm thử
Windows 11 – Intel Core i7 – 10750H - RAM 8GB b) Cài đặt môi trường phát triển phần mềm và kiểm thử
Sử dụng Visual studio code để phát triển phần mềm và sử dụng Selenium IDE để kiểm thử phần mềm
Kiểm thử phần mềm với các test case đã xây dựng
2.1 Kiểm thử chức năng đăng ký tài khoản a) Đăng ký thành công với thông tin hợp lệ
Hình 17: Đăng kí thành công với thông tin hợp lệ b) Đăng ký thất bại với email sai định dạng
Hình 18: Đăng ký thất bại với email sai định dạng c) Đăng ký thất bại với mật khẩu quá ngắn
Hình 19: Đăng kí thất bại với mật khẩu quá ngắn d) Đăng ký thất bại khi không nhập email
Hình 20: Đăng ký thất bại khi không nhập email e) Đăng ký thất bại khi không nhập mật khẩu
Hình 21: Đăng ký thất bại khi không nhập mật khẩu f) Đăng ký thất bại khi không nhập tên
Hình 22: Đăng ký thất bại khi không nhập tên g) Đăng ký thất bại với email đã tồn tại
Hình 23: Đăng ký thất bại với email đã tồn tại 2.2 Kiểm thử chức năng đăng nhập a) Đăng nhập thành công với thông tin hợp lệ
Hình 24: Đăng nhập thành công với thông tin hợp lệ b) Đăng nhập thất bại với email sai định dạng
Hình 25: Đăng nhập thất bại với email sai định dạng c) Đăng nhập thất bại với mật khẩu sai
Hình 26: Đăng nhập thất bại với mật khẩu sai d) Đăng nhập thất bại với tài khoản không tồn tại
Hình 27: Đăng nhập thất bại với tài khoản không tồn tại e) Đăng nhập thất bại với mật quá khẩu ngắn
Hình 28: Đăng nhập thất bại với mật khẩu ít hơn 6 ký tự f) Đăng nhập thất bại khi không nhập email
Hình 29: Đăng nhập thất bại khi không nhập email g) Đăng nhập thất bại khi không nhập mật khẩu
Hình 30: Đăng nhập thất bại khi không nhập mật khẩu
2.3 Kiểm thử chức năng tính tiền nước tự động
Hình 31: Chức năng tính tiền nước 2.4 Kiểm thử chức năng thanh toán hóa đơn a) Thanh toán thành công
Hình 32: Thanh toán hóa đơn thành công b) Thanh toán thất bại khi không nhập tên trên thẻ
Hình 33: Thanh toán thất bại khi không nhập tên trên thẻ c) Thanh toán thất bại khi nhập ngày hết hạn hóa đơn không hợp lệ
Hình 34: Thanh toán thất bại khi nhập ngày hết hạn hóa đơn không hợp lệ d) Thanh toán thất bại khi không nhập CVV thẻ
Hình 35: Thanh toán thất bại khi không nhập CVV thẻ
2.5 Kiểm thử chức năng xem lịch sử thanh toán hóa đơn
Hình 36: Chức năng xem lịch sử thanh toán hóa đơn
KIỂM THỬ TỰ ĐỘNG BẰNG SELENIUM-IDE
Selenium-IDE là gì?
Selenium IDE viết tắt của Selenium Integrated Development Environment, là một phần của bộ công cụ kiểm thử Selenium, là một công cụ được хâу dựng dưới dạngAdd-onѕ của trình duyệt (Chrome, FireFox) Đâу là cách tiện ích để хâу dựng các ca kiểm thử, gồm các phần tử giao diện giúp cho ta có thể thực hiện thao tác.
Công dụng của Selenium-IDE
o Có thể kết hợp với nhiều ngôn ngữ lập trình: Java, Net, Ruby, Python, Perl o Selenium giả lập thao tác người dùng trên web page và các web element. o Có thể verify và so sánh thông tin trên web page o Script đc base theo HTML, học dễ và ứng dụng cũng rất nhanh o Có thể tạo một bộ test bao gồm nhiều test case o Có thể run các test suite thông qua Selenium IDE hoặc Selenium command line o Selenium API hỗ trợ nhiều loại trình duyệt, do đó sẽ rất dễ dàng khi test các ứng dụng web với các trình duyệt khác nhau.
Kiểm thử tự động chức năng đăng ký
Bước 1: Tạo project trên Selenium-IDE
Hình 37: Tạo project trên Selenium-IDE
Bước 2: Xây dựng các command theo các test case
Hình 38: Xây dựng các command theo các test case
Bước 3: Chạy kiểm thử tự động
Hình 39: Chạy kiểm thử tự động
Sau khi các command đều đã được tích xanh đồng nghĩa với việc kiểm thử thành công và không có bất kì lỗi nào xảy ra
Các command được chạy đến đâu thì chức năng sẽ được test đến đó và cho ra kết quả cuối cùng như sau
Hình 40: Kết quả chạy kiểm thử tự động khi nhập đúng tất cả các định dạng hệ thống yêu cầu
Kiểm thử tự động chức năng đăng nhập
Bước 1: Tạo project trên Selenium-IDE
Hình 41: Tạo project trên Selenium-IDE
Bước 2: Xây dựng các command theo các test case
Hình 42: Xây dựng các command theo các test case
Bước 3: Chạy kiểm thử tự động
Hình 43: Chạy kiểm thử tự động
Sau khi các command đều đã được tích xanh đồng nghĩa với việc kiểm thử thành công và không có bất kì lỗi nào xảy ra
Các command được chạy đến đâu thì chức năng sẽ được test đến đó và cho ra kết quả cuối cùng như sau
Hình 44: Kết quả chạy kiểm thử tự động khi nhập đúng tất cả các định dạng hệ thống yêu cầu
Kiểm thử tự động chức năng tính tiền nước của hộ gia đình
Hình 45: Tạo project trên Selenium-IDE
Bước 2: Xây dựng các command theo các test case
Hình 46: Xây dựng các command theo các test case
Bước 3: Chạy kiểm thử tự động
Hình 47: Chạy kiểm thử tự động
Sau khi các command đều đã được tích xanh đồng nghĩa với việc kiểm thử thành công và không có bất kì lỗi nào xảy ra
Các command được chạy đến đâu thì chức năng sẽ được test đến đó và cho ra kết quả cuối cùng như sau
Hình 48: Kết quả chạy kiểm thử tự động khi nhập đúng tất cả các định dạng hệ thống yêu cầu
Kiểm thử tự động chức năng thanh toán hóa đơn
Bước 1: Tạo project trên Selenium-IDE
Hình 49: Tạo project trên Selenium-IDE
Bước 2: Xây dựng các command theo các test case
Hình 50: Xây dựng các command theo các test case
Bước 3: Chạy kiểm thử tự động
Hình 51: Chạy kiểm thử tự động
Sau khi các command đều đã được tích xanh đồng nghĩa với việc kiểm thử thành công và không có bất kì lỗi nào xảy ra
Các command được chạy đến đâu thì chức năng sẽ được test đến đó và cho ra kết quả cuối cùng như sau
Hình 52: Kết quả chạy kiểm thử tự động khi nhập đúng tất cả các định dạng hệ thống yêu cầu
Kiểm thử tự động chức năng xem lịch sử thanh toán
Bước 1: Tạo project trên Selenium-IDE
Hình 53: Tạo project trên Selenium-IDE
Bước 2: Chạy kiểm thử tự động
Hình 54: Kết quả chạy kiểm thử tự động khi nhập đúng tất cả các định dạng hệ thống yêu cầu
KIỂM THỬ HIỆU NĂNG BẰNG JMETER
Giới thiệu về JMeter
a) Khái niệm JMeter là gì?
JMeter là một phần mềm sử dụng để chạy thử nghiệm hiệu suất và thử nghiệm chức năng của ứng dụng web JMeter cũng có thể mô phỏng tải nặng trên máy chủ bằng cách tạo hàng tấn người dùng ảo đồng thời lên trên máy chủ web.
JMeter là một ứng dụng mã nguồn mở Điều này có nghĩa là chúng ta có thể tải xuống mã nguồn của JMeter để phân tích và sửa đổi nó nếu chúng ta muốn. b) Ưu điểm và nhược điểm của việc sử dụng JMeter Ưu điểm: o Mã nguồn mở: Jmeter là một phần mềm mã nguồn mở Điều này có nghĩa là nó có thể được tải xuống miễn phí Nó cũng là một ứng dụng Java thuần túy 100% Nhà phát triển có thể sử dụng mã nguồn của nó, có thể sửa đổi và tùy chỉnh nó theo yêu cầu của họ Họ cũng có thể đóng góp code của họ để làm nên một JMeter tốt hơn. o Dễ sử dụng: Người dùng có thể cài đặt và sử dụng JMeter một cách dễ dàng. Chỉ cần tải về từ internet, cài đặt và chạy Như một ứng dụng Java thuần túy, nó sẵn sàng để sử dụng với các cài đặt mặc định Nó không yêu cầu chúng ta phải có bất kỳ kỹ năng cụ thể nào hoặc kiến thức tên miền để sử dụng nó. o Nền tảng độc lập: JMeter được phát triển bằng Java, đây là ngôn ngữ lập trình phổ biến nhất trên thế giới Do đó, nó có thể chạy trong mọi hệ điều hành có thể là Window, Linux hoặc Mac. o Báo cáo mạnh mẽ: JMeter có thể tạo báo cáo hiệu quả Kết quả kiểm tra có thể được xem lại bằng cách sử dụng Graph, Chart, and Tree View Jmeter hỗ trợ các định dạng khác nhau của báo cáo như text, XML, HTML and JSON. o Thử nghiệm cuối cùng: Với Jmeter, người dùng có thể thực hiện bất kỳ loại kiểm thử nào mà bạn muốn Load Test, Stress Test, Functional Test, Distributed Test, tất cả trong một công cụ o Tính linh hoạt: Chúng ta có thể tùy chỉnh JMeter theo yêu cầu của chúng ta và áp dụng thử nghiệm tự động cho JMeter Chúng ta có thể tiết kiệm công sức của việc thực hiện các trường hợp kiểm tra thủ công. o Hỗ trợ đa giao thức: JMeter hỗ trợ một vài giao thức như HTTP, FTP, SOAP, JDBC, JMS và LDAP Nó cũng có thể được sử dụng để kiểm thử hiệu suất của cơ sở dữ liệu của chúng ta.
Nhược điểm: o Tiêu thụ bộ nhớ: JMeter có thể mô phỏng tải nặng và trực quan hóa báo cáo thử nghiệm Điều này có thể tiêu tốn rất nhiều bộ nhớ và có thể dẫn ra khỏi bộ nhớ dưới tải nặng. o Chỉ áp dụng cho ứng dụng web: JMeter là công cụ tốt để thử nghiệm ứng dụng web nhưng nó không phải là công cụ phù hợp để thử nghiệm ứng dụng máy tính để bàn. o Thiếu hỗ trợ cho JavaScript: JMeter không phải là một trình duyệt, vì vậy nó không thể chạy JavaScript trong ứng dụng web Nó có hỗ trợ hạn chế để xử lýJavaScript hoặc Ajax, điều này có thể ảnh hưởng đến độ chính xác của mô phỏng.
Kiểm thử hiệu năng của hệ thống
a) Kiểm thử hiệu năng của chức năng đăng nhập/đăng ký
Hình 55: Config test hiệu năng của chức năng đăng nhập
Kết luận: Từ các kết quả kiểm thử trên ta có thể thấy chức năng đăng nhập/đăng ký chạy khá là tốt và ổn định, không gặp bất kỳ một lỗi nào trong quá trình chạy kiểm thử hiệu năng. b) Kiểm thử hiệu năng của chức năng tính tiền nước hàng tháng cho hộ gia đình Config test:
Hình 59: Config test hiệu năng của chức năng tính tiền nước
Kết luận: Từ các kết quả kiểm thử trên ta có thể thấy chức năng tính tiền nước hàng tháng cho hộ gia đình chạy khá là tốt và ổn định, không gặp bất kỳ một lỗi nào trong quá trình chạy kiểm thử hiệu năng. c) Kiểm thử hiệu năng của chức năng thanh toán hóa đơn
Hình 63: Config test hiệu năng của chức năng thanh toán hóa đơn
Nhận xét: Sau khi test thì View Results Tree đã hiển thị ra một số lỗi cho thấy hiệu năng của chức năng này chưa được ổn định, đôi khi thanh toán vẫn sẽ gặp delay hoặc thanh toán sau vài phút thì hệ thống mới trừ tiền trong tài khoản ngân hàng của người dùng Vấn đề này chúng tôi sẽ khắc phục dần dần để đem lại một trải nghiệm sử dụng tốt nhất cho người dùng.
Kết luận: Từ các kết quả kiểm thử trên tuy View Results Tree đã đưa ra một số lỗi, tuy nhiên tổng quan ta có thể thấy chức năng thanh toán hóa đơn vẫn hoạt động khá là tốt và ổn định, không hề gây ra quá nhiều sự khó chịu cho người dùng trong quá trình sử dụng.
Chúng em xin chân thành cảm ơn thầy Mai Xuân Tráng đã tận tình hướng dẫn, giải đáp thắc mắc và chỉ bảo nhóm em trong suốt thời gian nhóm em hoàn thành dự án.
Mặc dù đã cố gắng hoàn thành đề tài tốt nhất nhưng do thời gian và kiến thức có hạn nên chúng em sẽ không thể tránh khỏi những thiếu sót nhất định Vì vậy chúng em rất mong nhận sự cảm thông, chia sẻ và tận tình đóng góp, chỉ bảo của thầy cũng như các bạn.