PHẦN MỞ ĐẦU
Tổng quan về kiểm thử phần mềm
1.Khái niệm kiểm thử phần mềm
Kiểm thử phần mềm là quá trình kiểm tra hệ thống phần mềm nhằm xác định tính chính xác của nó theo các yêu cầu đã được định nghĩa và đảm bảo hoạt động trong môi trường dự kiến.
Kiểm thử phần mềm nhằm đảm bảo rằng ứng dụng đáp ứng nhu cầu của khách hàng và tuân thủ các yêu cầu đã được chỉ định, từ đó đảm bảo chất lượng và độ chính xác của sản phẩm.
2.Các cấp độ kiểm thử phần mềm
A unit is the smallest testable component of software, which can include functions, procedures, classes, or methods.
Unit testing involves validating the functionality of individual code components, typically at the function level In object-oriented environments, unit tests are commonly applied at the class level, focusing on the smallest units, including constructor and destructor functions.
Kiểm thử đơn vị, thường được thực hiện bởi lập trình viên, là một bước quan trọng trong quy trình phát triển phần mềm Việc thực hiện kiểm thử này càng sớm càng tốt trong giai đoạn viết code giúp phát hiện lỗi kịp thời Mỗi hàm có thể được kiểm thử qua nhiều trường hợp khác nhau để đảm bảo mọi nhánh trong code đều được kiểm tra đầy đủ.
Kiểm thử đơn vị, giống như các mức kiểm thử khác, cần chuẩn bị kỹ lưỡng các ca kiểm thử hoặc kịch bản, trong đó xác định rõ dữ liệu đầu vào, quy trình thực hiện và kết quả mong đợi Các ca kiểm thử và kịch bản này sẽ được lưu trữ để sử dụng trong tương lai.
Kiểm thử tích hợp (Integration Test) kết hợp các thành phần của ứng dụng và kiểm tra chúng như một hệ thống hoàn chỉnh Trong khi kiểm thử đơn vị (Unit Test) tập trung vào việc kiểm tra từng thành phần riêng lẻ, kiểm thử tích hợp lại chú trọng vào việc đánh giá sự giao tiếp và tương tác giữa các thành phần này.
Integration Test có 2 mục tiêu chính:
• Phát hiện lỗi giao tiếp xảy ra giữa các Unit.
Tích hợp các đơn vị riêng lẻ thành các hệ thống nhỏ (subsystem) và cuối cùng hình thành nguyên hệ thống hoàn chỉnh (system) để chuẩn bị cho quá trình kiểm thử ở mức hệ thống (System Test).
Có 4 loại kiểm thử trong Integration Test:
Kiểm thử cấu trúc, hay còn gọi là Kiểm thử White Box, tập trung vào việc đảm bảo các thành phần bên trong của chương trình hoạt động chính xác Phương pháp này chú trọng vào việc kiểm tra các lệnh và nhánh bên trong, nhằm xác định tính đúng đắn của cấu trúc nội tại của phần mềm.
Kiểm thử chức năng, hay còn gọi là Functional Test, tương tự như kiểm thử Black Box, tập trung vào việc đánh giá các chức năng của chương trình mà không xem xét cấu trúc bên trong Phương pháp này chỉ khảo sát các chức năng của phần mềm dựa trên các yêu cầu kỹ thuật đã được xác định.
• Kiểm thử hiệu năng (Performance Test): kiểm thử việc vận hành của hệ thống.
• Kiểm thử khả năng chịu tải (Stress Test): kiểm thử các giới hạn của hệ thống.
Kiểm thử hệ thống (ST) là quá trình kiểm nghiệm toàn diện nhằm xác minh sự tích hợp chính xác của tất cả các thành phần trong hệ thống Mục tiêu chính của ST là đảm bảo rằng hệ thống hoạt động đúng như mong đợi của khách hàng.
Kiểm thử hệ thống (System Test) bắt đầu khi tất cả các thành phần của phần mềm đã được tích hợp thành công, thường yêu cầu nhiều công sức và thời gian Loại kiểm tra này có thể cần thiết bị phụ trợ, phần mềm hoặc phần cứng đặc thù, đặc biệt trong các ứng dụng thời gian thực, hệ thống phân tán hoặc hệ thống nhúng Tại cấp độ hệ thống, người kiểm tra không chỉ tìm lỗi mà còn đánh giá hiệu suất, tính khả thi và độ tin cậy của toàn bộ hệ thống Sự khác biệt chính giữa kiểm thử tích hợp (Integration Test) 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 cục, trong khi kiểm thử tích hợp chú trọng vào sự giao tiếp giữa các đơn vị Trước khi thực hiện kiểm thử hệ thống, cần phải thực hiện kiểm thử đơn vị (Unit Test) và kiểm thử tích hợp để đảm bảo rằng mọi đơn vị và sự tương tác của chúng hoạt động chính xác.
Kiểm thử hệ thống thường có các loại kiểm thử sau:
Kiểm tra chức năng (Functional Test): bảo đảm các hành vi của hệ thống thỏa mãn đúng yêu cầu thiết kế.
Kiểm tra khả năng vận hành (Performance Test) là quá trình quan trọng nhằm tối ưu hóa việc phân bổ tài nguyên hệ thống, chẳng hạn như bộ nhớ, để đạt được các chỉ tiêu hiệu suất như thời gian xử lý và khả năng đáp ứng các truy vấn.
Kiểm tra khả năng chịu tải, hay còn gọi là Stress Test hay Load Test, là quá trình đảm bảo hệ thống hoạt động hiệu quả dưới áp lực cao, như khi nhiều người truy cập cùng lúc Stress Test tập trung vào việc xác định các trạng thái tới hạn, các "điểm chết" và các tình huống bất thường, giúp phát hiện và khắc phục các vấn đề tiềm ẩn trong hệ thống.
Kiểm tra cấu hình (Configuration Test)
Kiểm tra khả năng bảo mật (Security Test): bảo đảm tính toàn vẹn, bảo mật của dữ liệu và của hệ thống.
Kiểm tra khả năng phục hồi là một quy trình quan trọng nhằm đảm bảo rằng hệ thống có thể khôi phục về trạng thái ổn định trước đó khi gặp sự cố mất tài nguyên hoặc dữ liệu Điều này đặc biệt cần thiết đối với các hệ thống giao dịch, chẳng hạn như ngân hàng trực tuyến, nơi sự ổn định và an toàn của dữ liệu là ưu tiên hàng đầu.
Tổng quan về Selenium
Giới thiệu chung về Selenium
In the realm of automated testing, there are several well-known commercial test tools, including Selenium, QuickTest Professional, WinRunner, Rational Robot, SilkTest, and JTest Among these, Selenium stands out for its comprehensive features that exemplify the capabilities of an effective automated testing tool.
Selenium (viết tắt là SE) là công cụ kiểm thử phần mềm tự động mã nguồn mở hàng đầu, được sử dụng rộng rãi để kiểm thử ứng dụng web hiệu quả.
Selenium là công cụ kiểm thử phần mềm tự động, được phát triển bởi ThoughtWorks từ năm 2004 với tên gọi ban đầu là JavaScriptTestRunner Vào năm 2007, Jason Huggins, một trong những tác giả, đã rời ThoughtWorks để gia nhập nhóm Selenium tại Google, từ đó phát triển Selenium thành công cụ như hiện nay.
Selenium là một bộ công cụ mạnh mẽ hỗ trợ phát triển nhanh chóng các thử nghiệm tự động hóa cho ứng dụng web Nó cung cấp các thử nghiệm chức năng phong phú, đáp ứng nhu cầu kiểm tra của ứng dụng web Với tính linh hoạt cao, Selenium cho phép tùy chọn đa dạng cho vị trí các thành phần giao diện người dùng và so sánh kết quả thử nghiệm dự kiến với hành vi thực tế của ứng dụng.
Hỗ trợ các trường hợp execute test một ma trận thử nghiệm lớn
Có thể thực hiện execute test song song
Có thể thực hiện execute test mà không cần người giám sát
Cải thiện độ chính xác, giảm tối đa các lỗi do con người tạo ra
Tiết kiệm thời gian và tiền bạc
Các đặc điểm của Selenium
Selenium là một công cụ kiểm thử mã nguồn mở, điều này mang lại lợi thế lớn so với các công cụ kiểm thử khác Nhờ vào tính chất mã nguồn mở, người dùng có thể sử dụng Selenium mà không cần lo lắng về chi phí bản quyền hay thời gian sử dụng.
Selenium, với mã nguồn mở, được hỗ trợ bởi một cộng đồng mạnh mẽ, đặc biệt là từ Google, nơi phát triển công cụ này Điều này mang lại sự an tâm về hỗ trợ miễn phí khi gặp vấn đề Tuy nhiên, điểm yếu của Selenium là do tính chất 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 hiệu quả Hơn nữa, người dùng không thể yêu cầu sự hỗ trợ theo thời gian cụ thể.
Selenium hỗ trợ nhiều ngôn ngữ lập trình C#, Java, Python, PHP và
Selenium còn có thể kết hợp với một số công cụ kiểm thử khác như Junit, Bromien, Nunit
Selenium cho phép chạy trên nhiều hệ điều hành khác nhau 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 khả 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 tác vụ 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, tối ưu hóa hiệu suất làm việc trong quá trình kiểm thử.
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, ngoại trừ cảnh báo của trình duyệt Để 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, người dùng cần sử dụng thêm các thư viện khác như AutoIt hoặc Coded UI.
Các thành phần của Selenium
Selenium gồm 4 thành phần chính , mỗi thành phần đều đóng một vai trò cụ thể trong việc hỗ trợ kiểm thử Web :
Hình 1.1.1 Các Thành phần của Selenium
Selen-IDE là một môi trường phát triển tích hợp (IDE) dành cho việc tạo ra các trường hợp thử nghiệm Selenium, hoạt động như một tiện ích mở rộng trên trình duyệt Firefox Nó cung cấp giao diện thân thiện để phát triển và chạy các trường hợp kiểm thử, bao gồm cả bộ kiểm tra toàn bộ Tính năng ghi lại của Selen-IDE cho phép người dùng lưu trữ các hành động của mình dưới dạng kịch bản tái sử dụng Ngoài ra, nó còn có menu ngữ cảnh tích hợp, giúp người dùng dễ dàng chọn và xác minh các vị trí đã chọn Selen-IDE cũng hỗ trợ chỉnh sửa toàn diện các trường hợp thử nghiệm, mang lại độ chính xác và kiểm soát cao hơn.
Mặc dù Selen-IDE chỉ là một tiện ích mở rộng cho Firefox, nhưng các bài kiểm tra được tạo ra có thể được thực hiện trên các trình duyệt khác thông qua Selenium-RC, bằng cách chỉ định tên bộ ứng dụng thử nghiệm trên dòng lệnh.
WebDriver là một công cụ để kiểm thử tự động các ứng dụng web.
WebDriver, thường được gọi là Selenium 2.0, sử dụng một framework khác biệt so với Selenium RC, vốn dựa vào Javascript Selenium-Core nhúng trong trình duyệt Khác với Selenium RC, WebDriver tương tác trực tiếp với các trình duyệt mà không cần trung gian hay máy chủ.
Kiểm thử đa trình duyệt, bao gồm cải thiện chức năng cho trình duyệt mà không được hỗ trợ tốt bởi Selenium RC (Selenium 1.0).
Điều hướng người dùng nâng cao như kéo-thả (drag-and-drop)
Selenium RC từng là dự án chính của Selenium trước khi Selenium WebDriver (Selenium 2.0) ra mắt Hiện nay, Selenium RC ít được sử dụng do WebDriver mang lại nhiều tính năng vượt trội hơn Dù vậy, bạn vẫn có thể phát triển các script bằng Selenium RC.
Selenium RC cho phép các nhà phát triển tự động hóa kiểm tra bằng ngôn ngữ lập trình, mang lại tính linh hoạt và khả năng mở rộng cho quá trình phát triển logic thử nghiệm Khi ứng dụng trả về một tập hợp kết quả kiểm tra, Selenium hỗ trợ lặp lại các ngôn ngữ lập trình để thực hiện các thử nghiệm trên từng phần tử trong tập hợp đó, giúp tự động hóa quy trình kiểm tra một cách hiệu quả.
Khả năng sử dụng Selen-RC với ngôn ngữ lập trình bậc cao giúp phát triển các trường hợp thử nghiệm, đồng thời cho phép tích hợp thử nghiệm tự động vào dự án xây dựng môi trường tự động.
Selenium RC cho phép tự động hóa kiểm thử giao diện ứng dụng Web bằng các ngôn ngữ lập trình như Java, C#, Perl, Python và PHP Điều này giúp tạo ra các ca kiểm thử phức tạp, bao gồm đọc và ghi tập tin, truy vấn cơ sở dữ liệu và gửi email kết quả kiểm thử Sự tích hợp của Selenium RC với các ngôn ngữ lập trình bậc cao còn hỗ trợ việc phát triển các trường hợp thử nghiệm và kết nối với dự án xây dựng môi trường tự động.
Selenium Grid cho phép người dùng thực thi kiểm thử song song trên nhiều máy tính khác nhau với nhiều trình duyệt khác nhau.
Selenium Grid cho phép thực hiện kiểm thử phân tán, sử dụng chung một mã nguồn, giúp loại bỏ sự cần thiết phải hard code trên tất cả các máy thực thi kiểm thử.
Selenium Grid bao gồm 2 thành phần chính là Hub và Nodes:
Hub, hay còn gọi là máy chủ server, là nơi lưu trữ mã nguồn cứng và chịu trách nhiệm gửi lệnh điều khiển đến các máy khác trong mô hình thực thi kiểm thử Đặc biệt, Hub chỉ có thể được thiết lập duy nhất trên một máy tính.
Nodes là các phiên bản Selenium được kết nối với Hub để thực hiện các kịch bản kiểm thử Trong một mô hình Grid, có thể có nhiều Nodes, và chúng có thể được thiết lập trên nhiều máy tính khác nhau với các trình duyệt đa dạng.
Cài đặt Selenium Webdriver
Bước 1 Download và cài đặt Java Development Kit (JDK)
Link download : http://www.oracle.com/technetwork/java/javase/downloads/index.html
Cài đặt bình thường, click Next, Install cho đến khi hoàn tất.
Bước 2 Download và cài đặt Eclipse IDE
To download Eclipse IDE for Java Developers, visit [Eclipse Downloads](http://www.eclipse.org/downloads/) and select the appropriate version for your system (32/64-bit) This version meets all necessary work requirements Additionally, proceed to download the Selenium Java Client Driver as the next step.
Link download: http://seleniumhq.org/download/
Giải nén và lưu trữ vào một thư mục cố định, nên chọn vị trí khác ngoài ổ C để dễ dàng tái sử dụng khi cài đặt lại hệ thống Bạn cũng có thể đặt trực tiếp vào trong Project để đảm bảo rằng việc cài lại máy hoặc di chuyển sang hệ thống khác vẫn hoạt động bình thường.
Chạy eclipse.exe từ bước 2 đã tải về
Để đảm bảo các dự án của bạn được lưu trữ an toàn và có thể tự động tải lại sau khi cài đặt lại hệ thống Eclipse, hãy thiết lập workspace vào một thư mục khác ngoài ổ C Ví dụ, bạn có thể đặt workspace tại D:\Workspace 64BIT Để thay đổi đường dẫn workspace trong Eclipse, hãy vào File -> Switch Workspace.
Tạo mới Project: File -> New -> Java Project -> [Đặt tên Project] ->
Tạo mới Package: Right click vào Project ->New -> Package -> [Đặt tên
Tạo mới Class: Right click vào Package -> New -> Class -> [Đặt tên
Bước 5.Thêm Selenium Java Client Driver (.jar) vào trong Project
Right click vào tên Project -> Properties -> Java Build Path -> Libraries
Chọn tất cả những file có định dạng là jar trong thư mục [selenium-java-
Bước 6 Thêm TestNG plugin vào Eclipse
Chọn Help -> Install New Software
Nhập TestNG vào textbox Name và http://beust.com/eclipse vào textbox Location -> click OK
Click vào TestNG và nhấn Next button
Click “I accept the terms of the license agreement” và nhần Finish button Nếu hiện ra 1 pop up thong báo về Security Warning , nhấn OK để tiếp tục
Hoàn thành, click Yes để khởi động lại Eclipse
TestNG plugin đã được tích hợp thành công vào Eclipse
Tích hợp thành công testNG plugin vào Eclip
I TÀI LIỆU KHẢO SÁT, XÁC ĐỊNH YÊU CẦU CỦA HỆ THỐNG.
Ngày nay, thương mại điện tử đang phát triển mạnh mẽ, bao gồm tất cả các phương pháp kinh doanh và quy trình quản trị thông qua các kênh điện tử Internet và các kỹ thuật, giao thức liên quan đóng vai trò quan trọng, trong khi công nghệ thông tin được xem là điều kiện tiên quyết cho sự thành công của thương mại điện tử.
Thương mại điện tử mang lại lợi ích lớn nhất là tiết kiệm chi phí cho các bên giao dịch Giao dịch qua phương tiện điện tử diễn ra nhanh chóng hơn so với các hình thức truyền thống như fax hay thư điện tử, giúp thông tin đến tay người nhận ngay lập tức Chi phí giao dịch qua internet rất thấp, cho phép doanh nghiệp gửi thư tiếp thị đến hàng loạt khách hàng với chi phí như gửi cho một người Thương mại điện tử không bị giới hạn bởi không gian địa lý, cho phép giao dịch từ xa giữa thành phố và nông thôn, hay giữa các quốc gia Điều này giúp doanh nghiệp tiết kiệm chi phí đi lại và thời gian gặp mặt Người tiêu dùng cũng có thể dễ dàng đặt hàng và mua sắm từ nhà, nhanh chóng tiếp cận nhiều loại hàng hóa và dịch vụ.
Trong các website thương mại điện tử, đặc biệt là những trang bán hàng, người chủ cửa hàng giữ vai trò quan trọng nhất Họ có quyền truy cập vào thông tin về tình hình thu nhập và theo dõi mọi thay đổi diễn ra trên website bán hàng.
Nếu chủ cửa hàng là người quản trị website, mọi thông tin trên trang sẽ do chính họ cập nhật Trong trường hợp thuê nhân viên quản trị, chủ cửa hàng cần cung cấp thông tin hoặc cấp quyền cho người đó để quản lý nội dung.
Nhân viên chỉ thực hiện vai trò giao dịch, theo dõi số lượng đơn đặt hàng trong ngày và trong tuần, đồng thời ghi nhận số đơn đã được xử lý Điều này giúp họ có thể báo cáo kịp thời cho chủ cửa hàng bất cứ lúc nào.
Người đứng đầu có quyền truy cập vào tất cả thông tin, trong khi nhân viên và khách hàng chỉ được phép xem những thông tin mà cấp trên đã phê duyệt.
Website bán sách online sử dụng công nghệ PHP-MySQL, cho phép khách hàng truy cập để xem, lựa chọn và mua sách trực tuyến Người dùng có thể mua sách online và cập nhật tin tức liên quan đến sách.
Giỏ hang và thanh toán
3 Đối tượng sử dụng và chức năng của website
Admin: ngoài những chức năng như khách hàng còn thêm
- Quản lý loại sản phẩm
4 Phân tích thiết kế hệ thống:
Tên trường Kiểu dữ liệu Ghi chú
Cus _id Int(11) Mã khách hàng
Cus_user varchar(20) Tên đăng nhập
Cus_password Varchar(50) Mật khẩu
Cus_date Varchar(15) Ngày sinh
Cus_phone Int(15) Số điện thoại
Cus_address Varchar(200) Địa chỉ
Cus_email Varchar(100) Địa chỉ email
Tên trường Kiểu dữ liệu Ghi chú
User_id Int(11) Mã người dùng
User_name Varchar(20) Tên đăng nhập
User_password Varchar(50) Mật khẩu
User_fullname Varchar(100) Họ tên người dùng
User_address Varchar(200) Địa chỉ
User_phone Varchar(12) Số điện thoại
User_email Varchar(100) Địa chỉ email người dùng
Tên trường Kiểu dữ liệu Ghi chú
Listbook_id Int(11) Mã danh mục sách
Tên trường Kiểu dữ liệu Ghi chú
Book_id Int(11) Mã Sách
Listbook_id Int(11) Mã Danh Mục Sách
Book_name Nvarchar(200) Tên sách
Book_image Varchar(1000) Đường dẫn ảnh sách
Book_author Nvarchar(200) Tên tác giả
Book_price Int(11) Giá bán
Book_advertise Varchar(500) Quảng cáo
Book_introduct Varchar(5000) Giới thiệu
Tên trường Kiểu dữ liệu Ghi chú
Order_id Int(11) Mã hóa đơn
Cus_id Int(11) Mã khách hàng
Order_date Nvarchar(15) Ngày tháng
Order_name Nvarchar(100) Tên hóa đơn
Order_phone Int(15) Số điện thoại
Order_address Varchar(500) Địa chỉ
Order_email varchar(1000) Địa chỉ email
Tên trường Kiểu dữ liệu Ghi chú
Detail_id Int(11) Mã chi tiết hóa đơn
Order_id Int(11) Mã hóa đơn
Book_id Int(11) Mã Sách
Detail_image Varchar(500) Đường dẫn ảnh
Detail_author Varchar(100) Tác giả
Detail_price Int(200) Giá bán
Detail_number Int(10) Số lượng
Detail_sumprice Int(20) Tổng giá
Tên trường Kiểu dữ liệu Ghi chú
Pro_id Int(11) Mã sản phẩm
Tên trường Kiểu dữ liệu Ghi chú
News_id Int(11) Mã tin
News_image Varchar(500) Đường dẫn ảnh
News_name Varchar(200) Tên tin
News_date Varchar(30) Ngày tháng
News_author Varchar(100) Tác giả
News_advertise Varchar(1000) Quảng cáo
News_introduct Varchar(5000) Giới thiệu
Tên trường Kiểu dữ liệu Ghi chú
Help_id Int(11) Mã danh mục hỗ trợ
Help_name Varchar(500) Tên danh mục hỗ trợ
Tên trường Kiểu dữ liệu Ghi chú
Web_id Int(11) Mã trang web liên kết
Web _name Varchar(500) Tên trang web liên kết
Web_link Varchar(1000) Địa chỉ web liên kết
4.2 Một số mô hình thực thể quan hệ riêng
4.3 Mô hình thực thể liên kết
KIỂM THỬ TỰ ĐỘNG WEBSITE
Nhiệm vụ Ngày bắt đầu Ngày kết thúc Thực hiện
II Chiến lược kiểm thử
1 Các loại hình kiểm thử
Mục đích của việc kiểm thử chức năng là tập trung vào các yêu cầu kiểm thử có thể được theo dõi trực tiếp trong các chức năng và quy tắc nghiệp vụ.
Mục tiêu của kiểu kiểm tra này là xác minh tính chính xác của dữ liệu, quy trình và báo cáo, đồng thời đảm bảo việc tuân thủ đúng các quy tắc nghiệp vụ.
Mục đích test: Đảm bảo mục tiêu test đúng đắn của chức năng, bao gồm định hướng, dữ liệu đầu vào, xử lý và dữ liệu nhận được
Cách thực hiện: Thực hiện mỗi đơn vị, chu trình đơn vị hoặc chức năng, sử dụng dữ liệu hợp lệ và không hợp lệ để kiểm tra:
- Kết quả mong đợi với dữ liệu hợp lệ.
- Lỗi thích hợp hoặc thông báo hiển thị khi dữ liệu không hợp lệ.
- Mỗi qui tắc nghiệp vụ đều được áp dụng đúng Điều kiện hoàn thành: - Toàn bộ kế hoạch test đã được thực hiện.
- Toàn bộ các lỗi phát hiện ra đã được ghi nhận.
Chú ý Xác định hoặc mô tả các vấn đề
(nội bộ hoặc bên ngoài) ảnh hưởng đến việc test chức năng
Kỹ thuật kiểm thử hộp đen xem chương trình như một "hộp đen", trong đó người kiểm thử không cần quan tâm đến cấu trúc nội bộ của chương trình Thay vào đó, họ chỉ tập trung vào việc kiểm tra dữ liệu đầu vào và đầu ra sau khi được xử lý, nhằm đảm bảo rằng chương trình hoạt động đúng như mong đợi.
Mục đích của chiến lược này là tìm kiếm các trường hợp mà chương trình không thực hiện theo các đặc tả của nó.
Kiểm thử hộp đen có ưu điểm là đánh giá phần mềm một cách khách quan, cho phép người kiểm thử không cần hiểu biết về mã lệnh và phát hiện lỗi mà nhân viên phát triển có thể bỏ sót Tuy nhiên, nhược điểm của phương pháp này là thăm dò mù, vì nhân viên kiểm thử không nắm rõ cách thức xây dựng chương trình, dẫn đến việc cần phải viết nhiều trường hợp kiểm thử, trong khi chỉ cần một ca kiểm thử duy nhất cũng đủ để kiểm tra.
Kỹ thuật kiểm thử hộp trắng, hay còn gọi là kiểm thử cấu trúc, là phương pháp khảo sát kiến trúc bên trong của chương trình Nó được áp dụng trong ba loại kiểm thử cơ bản: kiểm thử đơn vị, kiểm thử tích hợp và kiểm thử hồi quy Mục tiêu chính của kiểm thử hộp trắng là đảm bảo bao phủ tối đa các câu lệnh, điểm quyết định và các rẽ nhánh trong mã nguồn.
III Ứng dụng kiểm thử trên Web
1.2 Đồ thị lưu trình Độ phức tạp của chu trình: C=7
1.3 Đồ thị dòng Độ pức tạp C!-16+2=7
2.2 Đồ thị lưu trình Độ phức tạp của chu trình: C
2.3 Đồ thị dòng Độ phức tạp C = 49-32+2
Màn hình đăng nhập gồm các thành phần:
- Textbox Tài khoản và mật khẩu cho phép người dùng nhập dữ liệu
- Button Đăng nhập và Đăng ký cho phép người dùng click chọn
Màn hình đăng ký gồm các thành phần:
- Textbox Tài khoản,mật khẩu,họ và tên,ngày sinh,số điện thoại ,địa chỉ và email cho phép người dùng nhập dữ liệu
- Button Đăng ký cho phép người dùng click chọn
4 Xây dựng test case đăng nhập
Mô tả: các trường bắt buộc nhập không được bỏ trống
- Tài khoản nhập đúng là khi tồn tại trong csdl
- Mật khẩu nhập đúng là khi tồn tại trong csdl
Sử dụng phương pháp bảng quyết định ta có
Vui lòn g nh ập tê n đă ng nh ập và mậ
Vui lòn g nh ập tê n đă ng nh ập
Vui lòn g nh ập mậ t kh ẩu
Sai tê n đă ng nh ập ho ặc mậ t kh
Sai tê n đă ng nh ập ho ặc mậ t kh
Sai tê n đă ng nh ập ho ặc mậ t kh
Chà o use r full na me kh ẩu
Test case Đầu vào Đầu ra mong đợi
Thông báo:Vui lòng nhập tên đăng nhập và mật khẩu
2 Tài khoản:null Thông báo: Vui lòng nhập tên đăng nhập
3 Mật khẩu:null Thông báo : Vui lòng nhập mật khẩu
Thông báo : Sai tên đăng nhập hoặc mật khẩu
Thông báo : Sai tên đăng nhập hoặc mật khẩu
Thông báo : Sai tên đăng nhập hoặc mật khẩu
Thông báo : Chào user full name
5 Xây dựng test case đăng ký
- Các trường bắt buộc nhập không được bỏ trống
- Tài khoản không chứa các kí tự đặc biệt là duy nhất và phải lớn hơn 6 kí tự,nhỏ hơn 20 kí tự
- Mật khẩu phải lớn hơn 6 kí tự,nhỏ hơn 20 kí tự
- Số điện thoại là số và từ 10-12 kí tự và đúng định dạng 09,08,02,016[2-9]
- Email phải đúng định dạng xxx@xxx.xxx không chứa kí tự đặc biệt và là duy nhất
Áp dụng phương pháp phân vùng tương đương:
- Tài khoản phải chứa [6,20] ký tự chỉ gồm chữ và số: thực hiện nhập vào 5,21ký tự,rỗng
- Mật khẩu phải chứa [6,20] kí tự:thực hiện nhập vào 5,21 kí tự,rỗng
- Nhập lại mật khẩu phải giống mật khẩu
- Số điện thoại phải từ [10,12] ký tự số ,đúng định dạng 09,08,02,016[2-9] : thực hiện nhập vào 9, 13 ký tự số,rỗng.
- Họ và tên không được rỗng
- Địa chỉ không được rỗng
- Ngày sinh không được bỏ trống và đúng
- Tài khoản 20 không hợp lệ
- Tài khoản rỗng không hợp lệ
- Tài khoản có kí tự không phải số hoặc chữkhông hợp lệ
- Mật khẩu 20 không hợp lệ
- Mật khẩu rỗng không hợp lệ
- Họ và tên không rỗng hợp lệ
- Họ và tên rỗngkhông hợp lệ
- Số điện thoại > && < hợp lệ
- Số điện thoại 12 không hợp lệ
- Số điện thoại chứa kí tự không phải số không hợp lệ
- Số điện thoại rỗng không hợp lệ
- Ngày [1-30] và tháng 4,6,9,11 hợp lệ
- Ngày[1-28] và tháng 2 năm không nhuận hợp lệ
- Ngày[1-29] và tháng 2 năm nhuận hợp lệ
- Ngày 31 và tháng 4,6,9,11không hợp lệ
- Ngày 29 và tháng 2 năm không nhuậnkhông hợp lệ
- Ngày 30,31 và tháng 2 năm nhuậnkhông hợp lệ
- Ngày sinh bỏ trống không hợp lệ
- Local-Part là chữ hoặc số hoặc các kí tự(+ - ) và kí tự nối là @ và server name có dạng xxx.xxx hợp lệ
- bỏ trống emailkhông hợp lệ
- Thiếu Local-Part không hợp lệ
- Thiếu server namekhông hợp lệ
- Local-Part chứa kí tự không phải chữ hoặc sốkhông hợp lệ
- Server name sai định dạng xxx.xxxkhông hợp lệ
Áp dụng phương pháp phân vùng tương đương: Điều kiện đầu vào Các lớp tương đương hợp lệ
Các lớp tương đương không hợp lệ
- có kí tự không phải số hoặc chữ:
+ khoảng trắng + kí tự đặc biệt + chữ
- Chứa kí tự không phải số: + khoảng trắng
+ kí tự đặc biệt +chữ
Họ và tên Không trống Bỏ trống Địa chỉ Không trống Bỏ trống
Ngày sinh - Ngày [1-30] và tháng [4,6,9,11]
-Ngày[1-28] và tháng 2 năm không nhuận
- Ngày[1-29] và tháng 2 năm nhuận
- Ngày 29 tháng 2 năm không nhuận
Email Local-Part là chữ hoặc số hoặc các kí tự(+ - ) và kí tự nối là @ và
-Thiếu server name dạng xxx.xxx không phải chữ hoặc số:
+ khoảng trắng +kí tự đặc biệt
-Server name sai định dạng xxx.xxx:
+ chứa khoảng trắng +chứa kí tự đặc biệt + thiếu com
+thiếu domain trong server name
Các ca kiểm thử : Từ mô tả và bảng phân vùng tương đương ta có
Test case Đầu vào Đầu ra mong đợi
1 Bỏ trống tất cả các trường
Hiển thị thông báo nhập tất cả các trường
2 Tất cả các trường hợp lệ Hiển thị thông báo đăng ký thành công
3 Tài khoản nhỏ hơn 6 ký tự Thông báo độ dài tên đăng nhập không hợp lệ
Thông báo độ dài tên đăng nhập không hợp lệ
5 Tài khoản đã tồn tại Thông báo tên đăng nhập đã tồn tại
6 Tài khoản có kí tự đặc biệt Thông báo tên đăng nhập không hợp lệ
7 Tài khoản có khoảng trắng
Thông báo tên đăng nhập không hợp lệ
8 Tài khoản bỏ trống Thông báo vui lòng nhập tất cả các trường
9 Mật khẩu < 6 kí tự Thông báo độ dài mật khẩu không hợp lệ
10 Mật khẩu >20 kí tự Thông báo độ dài mật khẩu không hợp lệ
11 Bỏ trống mật khẩu Thông báo vui lòng nhập tất cả các trường
12 Bỏ trống họ và tên Thông báo vui lòng nhập tất cả các trường
13 Chọn ngày > 28 tháng 2 năm không nhuận
Thông báo ngày sinh không hợp lệ
14 Chọn ngày > 29 tháng 2 năm nhuận
Thông báo ngày sinh không hợp lệ
Thông báo ngày sinh không hợp lệ tháng 6 không hợp lệ
17 Chọn ngày 31 các tháng 9 Thông báo ngày sinh không hợp lệ
18 Chọn ngày 31 các tháng 11 Thông báo ngày sinh không hợp lệ
19 Bỏ trống ngày sinh Thông báo vui lòng nhập tất cả các trường
Thông báo số điện thoại không hợp lệ
Thông báo số điện thoại không hợp lệ
22 Nhập số điện thoại có chữ
Thông báo số điện thoại không hợp lệ
23 Nhập số điện thoại có kí tự đặc biệt
Thông báo số điện thoại không hợp lệ
24 Nhập số điện thoại có khoảng trắng
Thông báo số điện thoại không hợp lệ
25 Nhập số điện thoại sai đầu số
Thông báo số điện thoại không hợp lệ
26 Bỏ trống số điện thoại Thông báo số điện thoại không hợp lệ
27 Bỏ trống địa chỉ Thông báo vui lòng nhập tất cả các trường
28 Bỏ trống địa chỉ email
Thông báo vui lòng nhập tất cả các trường
29 Email không đúng định dạng xxx@xxx.xxx
Thông báo địa chỉ email không hợp lệ
30 Email không có kí tự nối @
Thông báo địa chỉ email không hợp lệ
31 Email không có server name
Thông báo địa chỉ email không hợp lệ
Thông báo địa chỉ email không hợp lệ
Thông báo địa chỉ email không hợp lệ
34 Email không có com Thông báo địa chỉ email không hợp lệ
35 Bỏ trống Local-Part email
Thông báo địa chỉ email không hợp lệ
36 Local-Part email có kí tự đặc biệt trừ các kí tự + -
Thông báo địa chỉ email không hợp lệ
37 Local-Part email có khoảng trắng Thông báo địa chỉ email không hợp lệ
38 Domain name chứa kí tự đặc biệt Thông báo địa chỉ email không hợp lệ
39 Email đã tồn tại Thông báo địa chỉ email đã tồn tại
6 Thực hiện test bằng selenium webdriver
6.1 Viết các kịch bản Đăng Nhập hệ thống website :
Các kịch bản Đăng Nhập bằng Selenium Webdriver
Kiểm thử với công cụ Selenium sử dụng @Test để xác định các phương thức bên dưới là testcase Sau khi thực hiện, Eclipse cung cấp hai đầu ra: đầu tiên là trong cửa sổ Console, và thứ hai là trong cửa sổ TestNG Results.
Kết quả trong cửa sổ Console
Kết quả trong cửa sổ TestNGResutls
6.2 Viết các kịch bản Đăng Ký hệ thống website :
Các kịch bản Đăng Ký bằng Selenium Webdriver
Kết quả trong cửa sổ Console
Kết quả trong cửa sổ TestNGResutls
Fail Number of test cases
IV: Kiểm thử hiệu năng web bán sách
A Tìm hiểu cộng cụ Jmeter
JMeter là công cụ mạnh mẽ để đo lường độ tải và hiệu suất của các ứng dụng, cho phép kiểm tra hiệu năng trên cả nguồn tĩnh và nguồn động Nó hỗ trợ kiểm tra tải cho nhiều loại máy chủ khác nhau, bao gồm Web HTTP, HTTPS, SOAP, cơ sở dữ liệu qua JDBC, LDAP, JMS, cũng như các giao thức email như SMTP(S), POP3(S) và IMAP(S).
JMeter là một công cụ mã nguồn mở được phát triển bằng ngôn ngữ Java, do Stefano Mazzocchi sáng tạo Sau đó, Apache đã cải tiến JMeter với giao diện đồ họa thân thiện hơn và nâng cao khả năng kiểm thử hướng chức năng.
- Giao diện đơn giản, trực quan dễ sử dụng
- Có thể kiểm thử nhiều kiểu server: Web - HTTP, HTTPS, SOAP, Database
- JDBC, LDAP, JMS, Mail - POP3,…
Một công cụ độc lập có khả năng hoạt động trên nhiều hệ điều hành khác nhau, cho phép người dùng dễ dàng sử dụng Trên hệ điều hành Linux, người dùng chỉ cần chạy bằng một shell script, trong khi trên Windows, chỉ cần thực hiện thông qua một file bat.
- Đa luồng, giúp xử lý tạo nhiều request cùng một khoảng thời gian, xử lý các dữ liệu thu được một cách hiệu quả.
- Đặc tính mở rộng, có rất nhiều plugin được chia trẻ rộng rãi và miễn phí
- Một công cụ tự động để kiểm thử hiệu năng và tính năng của ứng dụng.
Cách thức hoạt động của hệ thống là giả lập nhiều người dùng gửi yêu cầu đến máy chủ, sau đó nhận và xử lý các phản hồi từ máy chủ Kết quả được trình bày cho người dùng dưới dạng bảng biểu, đồ thị hoặc cây, giúp dễ dàng hình dung và phân tích thông tin.
- Tải jmeter tại trang : http://jmeter.apache.org/download_jmeter.cgi, chọn download và tìm đến mục Binaries
- Giải nén vào bin chạy file ApacheJMeter.
B Tiến hành kiểm thử hiệu năng cụ thể
1 Giả lập nhiều user truy cập vào trang web
Mở jmeter ,đặt tên cho Test Plan testtruycap.
Chuột phải vào Test Plan –> Add –> Threads(users) –> Thread Group
Cửa sổ Thread Group hiện ra với các mục quan trọng :
Name : tên của thread group.
Number of Threads(users) : số lượng thread user mà ta muốn giả lập.
Ramp-Up Period: cho biết thời gian để JMeter tạo ra tất cả những thread cần thiết
Loop Count : số lần các thread được tạo thực hiện , nếu chọn forever sẽ thực hiện mãi mãi cho tới khi người dùng dừng lại bằng tay.
Tạo request đến server : 1 thread(tương ứng 1 user) có thể tạo nhiều request http gửi lên server.
Chuột phải vào Thread group –> add –> sample –> http request Default
Cửa sổ Http Request Default
Cửa sổ Http Request Default:
Protocol: giao thức được sử dụng HTTP hoặc HTTPS(bỏ trống mặc định là http)
Server Name or IP: điền vào domain hoặc IP của trang web cần kiểm tra Port Number: chỉ ra port của web, để trống sẽ là port mặc định 80
Method: phương thức để gửi các HTTP request, các phương thức ở đây bao gồm GET, POST, PUSH, HEAD,…
Path: đường dẫn nguồn để xử lý các Request
Parameters: biểu diễn danh sách các thông số gửi cùng request, ta có thể thêm hoặc xóa các thông số này.
Truy cập vào trang chủ
Tiến hành chạy và thu được kết quả :
2.1 Xem kết quả tổng hợp của tất các thread (Chuột phải vào Thread Group –> Add -> Listener –> Summary Report)
Average : thời gian trung bình xử lý các request min : thời gian nhỏ nhất xử lý request max : thời gian nhỏ nhất xử lý request
Std.Dev: độ lệch tiêu chuẩn mô tả mức độ phân tán của một tập dữ liệu đã được lập thành bảng tần số
Error : phần trăm bị lỗi của các request(lỗi kết nối hoặc lỗi cho đầu ra không mong muốn) thoughput : số request/s của server kb/s = (avg.bytes*thoughput)/1024
Kết quả tổng hợp của thread truy cập trang chủ
Kết quả tổng hợp của thread login
2.2 Xem kết quả của từng request trong kịch bản(Chuột phải Thread Group –> Add –> Listener –> View Results Tree)
Kết quả trong thread truy cập trang chủ
Kết quả trong thread login