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 thực thi một hệ thống phần mềm để xác định xem phần mềm có đúng với đặc tả không và thực hiện trong môi trường như mong đợi hay không.
Mục đích của kiểm thử phần mềm là để kiểm tra xem phần mềm có đáp ứng với nhu cầu của khách hang và phù hợp với đặc tả yêu cầu, đảm bảo chất lượng và tính chính xác của ứng dụng
2.Các cấp độ kiểm thử phần mềm
Một đơn vị (Unit) là một thành phần phần mềm nhỏ nhất mà ta có thể kiểm thử được, ví dụ: các hàm (Function), thủ tục (Procedure), lớp (Class), hoặc các phương thức (Method).
Unit testing đề cập đến các kiểm thử để chứng thực (xác minh - verify) chức năng của một phần riêng biệt của code, thường ở mức hàm (function level) Trong một môi trường hướng đối tượng (object-oriented environment), kiểm thử đơn vị thường được sử dụng ở mức lớp (class) và kiểm thử các đơn vị nhỏ nhất bao gồm các hàm constructor và destructor.
Kiểm thử đơn vị thường do lập trình viên thực hiện Công đoạn này cần được thực hiện càng sớm càng tốt trong giai đoạn viết code và xuyên suốt chu kỳ phát triển phần mềm Một hàm có thể có nhiều kiểm thử, để bắt được các trường hợp hoặc các nhánh trong code.
Cũng như các mức kiểm thử khác, kiểm thử đơn vị cũng đòi hỏi phải chuẩn bị trước các ca kiểm thử (hay trường hợp kiểm thử) (test case) hoặc kịch bản (test script), trong đó chỉ định rõ dữ liệu vào, các bước thực hiện và dữ liệu mong muốn sẽ xuất ra Các test case và test script được giữ lại để sử dụng sau này.
Integration test kết hợp các thành phần của một ứng dụng và kiểm thử như một ứng dụng đã hoàn thành Trong khi Unit Test kiểm tra các thành phần và Unit riêng lẻ thì Intgration Test kết hợp chúng lại với nhau và kiểm tra sự giao tiếp giữa chúng.
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 Unit đơn lẻ thành các hệ thống nhỏ (subsystem) và cuối cùng là nguyên hệ thống hoàn chỉnh (system) chuẩn bị cho 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 (Structure Test): Tương tự White Box Test (kiểm thử nhằm bảo đảm các thành phần bên trong của một chương trình chạy đúng), chú trọng đến hoạt động của các thành phần cấu trúc nội tại của chương trình chẳng hạn các lệnh và nhánh bên trong.
• Kiểm thử chức năng (Functional Test): Tương tự Black Box Test (kiểm thử chỉ chú trọng đến chức năng của chương trình, không quan tâm đến cấu trúc bên trong), chỉ khảo sát chức năng của chương trình theo yêu cầu kỹ thuật.
• 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) bao gồm một loạt những kiểm nghiệm nhằm xác minh toàn bộ các thành phần của hệ thống được tích hợp một cách đúng đắn Mục đích của ST là đảm bảo toàn bộ hệ thống hoạt động như khách hàng mong muốn.
System Test bắt đầu khi tất cả các bộ phận của PM đã được tích hợp thành công Thông thường loại kiểm tra này tốn rất nhiều công sức và thời gian Trong nhiều trường hợp, việc kiểm tra đòi hỏi một số thiết bị phụ trợ, phần mềm hoặc phần cứng đặc thù, đặc biệt là các ứng dụng thời gian thực, hệ thống phân bố, hoặc hệ thống nhúng Ở mức độ hệ thống, người kiểm tra cũng tìm kiếm các lỗi, nhưng trọng tâm là đánh giá về hoạt động, thao tác, sự tin cậy và các yêu cầu khác liên quan đến chất lượng của toàn hệ thống. Điểm khác nhau then chốt giữa Integration Test và System Test là System Test chú trọng các hành vi và lỗi trên toàn hệ thống, còn Integration Test chú trọng sự giao tiếp giữa các đơn thể hoặc đối tượng khi chúng làm việc cùng nhau Thông thường ta phải thực hiện Unit Test và Integration Test để bảo đảm mọi Unit và sự tương tác giữa chúng hoạt động chính xác trước khi thực hiện System Test.
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): bảo đảm tối ưu việc phân bổ tài nguyên hệ thống (ví dụ bộ nhớ) nhằm đạt các chỉ tiêu như thời gian xử lý hay đáp ứng câu truy vấn…
Kiểm tra khả năng chịu tải (Stress Test hay Load Test): bảo đảm hệ thống vận hành đúng dưới áp lực cao (ví dụ nhiều người truy xuất cùng lúc) Stress Test tập trung vào các trạng thái tới hạn, các “điểm chết”, các tình huống bất 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 (Recovery Test): bảo đảm hệ thống có khả năng khôi phục trạng thái ổn định trước đó trong tình huống mất tài nguyên hoặc dữ liệu; đặc biệt quan trọng đối với các hệ thống giao dịch như ngân hàng trực tuyến
Tổng quan về Selenium
Giới thiệu chung về Selenium
Trong lĩnh vực kiểm thử tự động hiện có khá nhiều test tool thương mại nổi tiếng, phổ biến như Selenium, QuickTest Professional, WinRunner, Rational Robot, SilkTest, JTest, Trong số đó, Selenium bao gồm nhiều chức năng điển hình của một công cụ kiểm thử tự động.
Selenium (thường được viết tắt là SE) là một trong những công cụ kiểm thử phần mềm tự động mã nguồn mở (open source test automation tool) mạnh mẽ nhất hiện nay cho việc kiểm thử ứng dụng Web.
Selenium là một 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 ban đầu là JavaScriptTestRunner. Đến năm 2007, tác giả Jason Huggins rời ThoughtWorks và gia nhập Selenium team, một phần của Google và phát triển thành Selenium như hiện nay.
Selenium là một tập hợp mạnh mẽ của các công cụ hỗ trợ phát triển nhanh chóng của các thử nghiệm tự động hóa cho các ứng dụng dựa trên web.Selenium cung cấp một tập phong phú của các thử nghiệm chức năng đặc biệt hướng đến các nhu cầu của các thử nghiệm của một ứng dụng web. Các hoạt động này là rất linh hoạt, cho phép nhiều tùy chọn cho vị trí các thành phần UI và so sánh kết quả thử nghiệm dự kiến sẽ chống lại hành vi ứng dụng thực tế.
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
Mã nguồn mở Phải nói điểm này là điểm mạnh nhất của Selenium khi so sánh với các test tool khác Vì là mã nguồn mở nên chúng ta có thể sử dụng mà không phải lo lắng về phí bản quyền hay thời hạn sử dụng.
Cộng đồng hỗ trợ Vì là mã nguồn mở nên Selenium có một cộng đồng hỗ trợ khá mạnh mẽ Bên cạnh đó, Google là nơi phát triển Selenium nên chúng ta hoàn toàn có thể yên tâm về sự hổ trợ miễn phí khi có vấn đề về Selenium Tuy nhiên, đây cũng là một điểm yếu của Selenium Cơ bản vì là hàng miễn phí, cộng đồng lại đông nên một vấn đề có thể nhiều giải pháp, và có thể một số giải pháp là không hữu ích Mặc khác, chúng ta không thể hối thúc hay ra deadline cho sự hỗ trợ.
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,
Selenium hỗ trợ chạy trên nhiều OS khác nhau với mức độ chỉnh sửa script hầu như là không có Thực sự thì điều này phụ thuộc phần lớn vào khả năng viết script của chúng ta.
Chạy test case ở backround Khi chúng ta thực thi một test scrpit, chúng ta hoàn toàn có thể làm việc khác trên cùng một PC Điều này hỗ trợ chúng ta không cần tốn quá nhiều tài nguyên máy móc khi chạy test script.
Không hỗ trợ Win app Selenium thực sự chỉ hỗ trợ chúng ta tương tác với Browser mà không hỗ trợ chúng ta làm việc với các Win app, kể cả Win dialog như Download/Upload – ngoại trừ Browser Alarm Vậy nên, để xử lý các trường hợp cần tương tác với hệ thống hay một app thứ ba, chúng ta cần một hay nhiều thư viện khác như AutoIt hay 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ôi trường phát triển tích hợp cho việc xây dựng trường hợp thử nghiệm Selenium Nó hoạt động như một trình duyệt Firefox add-on và cung cấp một giao diện dễ sử dụng để phát triển và chạy trường hợp kiểm thử cá nhân, bộ kiểm tra toàn bộ Selenium-IDE có một tính năng ghi lại, sẽ giữ tài khoản của người sử dụng khi chúng được thực hiện và lưu trữ chúng như là một kịch bản tái sử dụng để phát sử dụng Nó cũng có một menu ngữ cảnh (nhấn chuột phải) tích hợp với trình duyệt Firefox, cho phép người dùng chọn từ một danh sách xác nhận và xác minh cho các vị trí đã chọn Selenium-IDE cũng cung cấp chỉnh sửa đầy đủ các trường hợp thử nghiệm cho chính xác hơn và kiểm soát.
Mặc dù Selen-IDE chỉ là một Firefox add-on, các kiểm thử tạo ra trong nó cũng có thể được chạy cho các trình duyệt khác bằng cách sử dụng Selenium-RC và chỉ định tên của 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.
Nó thường được gọi là Selenium 2.0 WebDriver sử dụng một framework cơ bản khác biệt trong khi Selenium RC sử dụng Javacript Selenium-Core nhúng vào trong trình duyệt WebDriver tương tác trực tiếp với các trình duyệt và không cần bất kỳ trung gian nào, không giống như Selenium RC phụ thuộc vào một máy chủ WebDriver được sử dụng trong ngữ cảnh sau:
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 khiển nhiều frame, nhiều cửa sổ trình duyệt, nhiều popup và alert.
Điều hướng người dùng nâng cao như kéo-thả (drag-and-drop)
Selenium RC là dự án Selenium chính trong một thời gian dài trước khi Selenium WebDriver (Selenium 2.0) ra đời Giờ đây Selenium RC hầu như không được sử dụng vì WebDriver cung cấp nhiều tính tăng mạnh mẽ hơn Tuy nhiên bạn vẫn có thể tiếp tục phát triển các script sử dụng RC.
Selenium RC cho phép các nhà phát triển tự động hóa kiểm tra sử dụng một ngôn ngữ lập trình cho tính linh hoạt tối đa và mở rộng trong việc phát triển logic thử nghiệm Ví dụ, nếu trình ứng dụng trả về một tập kết quả của việc kiểm tra, và nếu chương trình thử nghiệm tự động cần chạy thử nghiệm trên mỗi phần tử trong tập hợp kết quả, hỗ trợ lặp đi lặp lại các ngôn ngữ lập trình có thể được sử dụng để chuyển đổi thông qua việc tập hợp kết quả, kêu gọi Selenium lệnh chạy thử nghiệm trên mỗi mục.
Khả năng sử dụng Selen-RC với một ngôn ngữ lập trình bậc cao để phát triển các trường hợp thử nghiệm cũng cho phép thử nghiệm tự động được tích hợp với một dự án xây dựng môi trường tự động.
Selenium RC cho phép chúng ta viết các kiểm thử giao diện của ứng dụng Web tự động với sự giúp đỡ của các ngôn ngữ lập trình như Java, C#, Perl, Python, PHP để tạo ra các ca kiểm thử phức tạp hơn như đọc và viết các tập tin, truy vấn cơ sở dữ liệu và gửi mail kết quả kiểm thử Khả năng sử dụng Selen- RC với một ngôn ngữ lập trình bậc cao để phát triển các trường hợp thử nghiệm cũng cho phép thử nghiệm tự động được tích hợp với một 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 thi kiểm thử với chế độ phân tán, sử dụng chung một code base Do đó, hard code không cần thiết phải có mặt trên tất cả các máy được sử dụng để thực thi kiểm thử.
Selenium Grid bao gồm 2 thành phần chính là Hub và Nodes:
Hub: có thể hiểu là máy chủ server, chứa hard code và là nơi gửi lệnh điều khiển các máy khác trong mô hình thực thi kiểm thử Hub chỉ có thể được set up duy nhất trên một máy tính.
Nodes: là các Selenium instances được kết nối vào Hub để thực thi các kịch bản kiểm thử Có thể có nhiều Nodes trong một mô hình Grid Các Nodes có thể được set up trên nhiều máy tính với nhiều trình duyệt khác nhau.
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
Link download: http://www.eclipse.org/downloads/, tùy vào hệ thống của bạn phiên bản 32/64bit để lựa chọn cho phù hợp Ở đây mình tải bản Eclipse IDE for Java Developer đã đáp ứng đủ nhu cầu công việc Bước 3 Download Selenium Java Client Driver
Link download: http://seleniumhq.org/download/
Giải nén và đặt vào 1 thư mục cố định Nên đặt khác vị trí ổ C để sau này cài đặt lại hệ thống có thể tái sử dụng lại ngay hoặc đặt trực tiếp vào trong Project (cài lại máy hoặc di chuyển qua hệ thống khác vẫn chạy Ok).
Chạy eclipse.exe từ bước 2 đã tải về
Set workspace (nơi lưu trữ dự án của bạn) vào bất kì thư mục nào khác ổ
C Mục đích để nếu cài đặt lại hệ thống eclipse sẽ tự động load lại các dự án bạn đang làm việc từ workspace Ví dụ: D:\Workspace 64BIT (Đổi lại đường dẫn workspace trong eclipse: 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-2.47.1] -> OK
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
18
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ử vô cùng phát triển Nó là tất cả các phương pháp tiến hành kinh doanh và các quy trình quản trị thông qua các kênh điện tử mà trong đó Internet hay ít nhất là các kỹ thuật và giao thức được sử dụng trong Internet đóng một vai trò cơ bản và công nghệ thông tin được coi là điều kiện tiên quyết.
Lợi ích lớn nhất mà Thương mại điện tử mang lại đó chính là tiết kiệm được chi phí lớn tạo thuận lợi cho các bên giao dịch Giao dịch bằng phương tiện điện tử nhanh hơn là giao dịch bằng truyền thông, ví dụ gửi fax hay thư điện tử thì nội dung thông tin sẽ đến người nhận nhanh hơn là gửi thư Các giao dịch qua internet có chi phí rất rẻ, một doanh nghiệp có thể gửi thư tiếp thị, chào hàng đến hàng loạt khách hàng chỉ với chi phí giống như gửi cho một khách hàng Với Thương mại điện tử, các bên có thể tiến hành giao dịch khi ở cách xa nhau, giữa thành phố với nông thôn, từ nước này sang nước khác hay nói cách khác là không bị giới hạn bởi không gian địa lý Điều này cho phép các doanh nghiệp tiết kiệm chi phí đi lại, thời gian gặp mặt trong khi mua bán. Với người tiêu dùng họ có thể ngồi tại nhà để đặt hàng, mua sắm nhiều loại hàng hóa dịch vụ thật nhanh chóng.
Với các website thương mại điện tử cụ thể là các website bán hàng thì :Người chủ cửa hàng là người có chức quyền cao nhất: có thể xem thông tin về tình hình thu nhập cũng như mọi thay đổi trên website bán hangNếu chủ cửa hang cũng là người quản trị website thì mọi thông tin trên web là do chủ cửa hàng đưa lên, nếu thuê nhân viên quản trị thì chủ cửa hàng cung cấp thông tin hoặc cấp quyền hạn cho người quản trị.
Nhân viên chỉ là người giao dịch: tức là xem trong ngày, trong tuần có bao nhiêu đơn đặt hàng và đã giải quyết được bao nhiêu, đểc ó thể báo cáo bất cứl úc nào cho chủ cửa hàng.
Người chức cao nhất thì xem được tất cả các thông tin, còn nhân viên và khách hàng chỉ được xem những thông tin mà người cấp trên cho phép.
Website bán sách online là website sử dụng công nghệ PHP-MySQL Cho phép khách hàng truy cập vào ứng dụng để xem, lựa chọn và mua hàng trực tuyến Web cho phép người dùng mua sách onile, xem tin tức vv
Giỏ hang và thanh toán
3 Đối tượng sử dụng và chức năng của website Đối tượng sử dụng:
Chức năng hệ thống: Khách hàng:
Tìm kiếm sản phẩm - Đặt mua sản phẩm -
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_fullname Nvarchar(100 Họ tên khách hàng
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
Listbook_name Nvarchar(200 Tên 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_note Nvarchar(1000 Ghi chú
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_name Varchar(100) Tên hóa đơn
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 test chức năng là tập trung vào các yêu cầu test có thể được lưu vết trực tiếp trong các chức năng và qui tắc nghiệp vụ.
Mục tiêu của kiểu test này là kiểm tra tính đúng đắn của các dữ liệu, qui trình và báo cáo cũng như việc thực hiện đúng những qui 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ữ
- 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ư là một “hộp đen”, trong đó người kiểm thử không quan tâm đến cấu trúc bên trong của chương trình mà chỉ quan tâm tới dữ liệu đầu vào và đầu ra sau khi được xử lý. 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ó. Ưu, nhược điểm: Kiểm thử hộp đen có ưu điểm là có thể đánh giá phần mềm một cách khách quan, người kiểm thử có thể không hiểu biết về mã lệnh và có thể tìm ra các lỗi mà nhân viên phát triển không tìm ra.Song kiểm thử hộp đen lại có nhược điểm là thăm dò mù, do nhân viên kiểm thử không biết các chương trình thực sự được xây dựng như thế nào,dẫn đến trường hợp nếu kiểm thử hộp đen phải viết rất nhiều trường hợp kiểm thử trong khi chỉ cần viết một ca kiểm thử duy nhất để có thể kiểm tra được.
Kỹ thuật kiểm thử hộp trắng hay còn gọi là “kiểm thử cấu trúc” là kỹ thuật kiểm thử cho phép khảo sát kiến trúc bên trong của chương trình Kiểm thử hộp trắng là chiến lược được thực hiện trên ba trong sáu loại kiểm thử cơ bản trong các giai đoạn kiểm thử phần mềm là: kiểm thử đơn vị, kiểm thử tích hợp và kiểm thử hồi quy Mục tiêu của kiểm thử hộp trắng là kiểm thử bao phủ nhiều nhất các câu lệnh, điểm quyết định và các rẽ nhánh trong mã nguồn nếu có thể.
III Ứng dụng kiểm thử trên Web 1 chức năng đăng nhập
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ó
Conditi Mật nul T nul F F T T l l ons khẩu
Vui Vui Vui Sai Sai Sai Chà lòn lòn lòn tê tê tê o g g g n n n use nh nh nh đă đă đă r ập ập ập ng ng ng tê tê mậ full nh nh nh
Actions Th n n t ập ập ập na ôn đă đă kh ho ho ho me g ng ng ẩu ặc ặc ặc bá nh nh mậ mậ mậ o ập ập t t t t
Hiện Lo Lo Lo Lo Lo Lo Ho form gin gin gin gin gin gin me pag e
Test case Đầu vào Đầu ra mong đợi
1 Tài khoản :null Thông báo:Vui lòng nhập tên
Mật khẩu:null đă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
4 Tài khoản:nhập sai Thông báo : Sai tên đăng
Mật khẩu:nhập sai nhập hoặc mật khẩu
5 Tài khoản:nhập sai Thông báo : Sai tên đăng
Mật khẩu:nhập đúng nhập hoặc mật khẩu
6 Tài khoản: nhập đúng Thông báo : Sai tên đăng
Mật khẩu :nhập sai nhập hoặc mật khẩu
7 Tài khoản: nhập đúng Thông báo : Chào user full
Mật khẩu : nhập đúng name
- 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
Các lớp tương đương Tài khoản
- 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,11 không hợp lệ
- Ngày 29 và tháng 2 năm không nhuận không hợp lệ
- Ngày 30,31 và tháng 2 năm nhuận khô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 email không hợp lệ
- Thiếu Local-Part không hợp lệ
- Thiếu server name khô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.xxx khô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 Các lớp tương đương đương hợp lệ 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ữ
3 số đầu:016[2-9] - 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à - Ngày 31 và tháng : tháng [4,6,9,11]
- Ngày[1-29] và +11 tháng 2 năm nhuận
- Ngày 29 tháng 2 năm không nhuận
Email Local-Part là chữ -bỏ trống email hoặc số hoặc các kí
-Thiếu Local-Part tự(+ - ) và kí tự nối
44 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:
+ thiếu + thiếu com + 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 Hiển thị thông báo trường nhập tất cả các trường
2 Tất cả các trường Hiển thị thông báo hợp lệ đăng ký thành công
3 Tài khoản nhỏ hơn 6 Thông báo độ dài ký tự tên đăng nhập không hợp lệ
4 Tài khoản lớn hơn Thông báo độ dài
20 ký tự 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ự Thông báo tên đăng đặc biệt nhập không hợp lệ
7 Tài khoản có khoảng Thông báo tên đăng trắ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 báo ngày sinh tháng 2 năm không không hợp lệ nhuận
14 Chọn ngày > 29 Thông báo ngày sinh tháng 2 năm nhuận không hợp lệ
15 Chọn ngày 31 các Thông báo ngày sinh tháng 4 không hợp lệ
16 Chọn ngày 31 các Thông báo ngày sinh tháng 6 không hợp lệ
17 Chọn ngày 31 các Thông báo ngày sinh tháng 9 không hợp lệ
18 Chọn ngày 31 các Thông báo ngày sinh tháng 11 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
20 Nhập số điện thoại Thông báo số điện
12 kí tự số thoại không hợp lệ
22 Nhập số điện thoại Thông báo số điện có chữ thoại không hợp lệ
23 Nhập số điện thoại Thông báo số điện có kí tự đặc biệt thoại không hợp lệ
24 Nhập số điện thoại Thông báo số điện có khoảng trắng thoại không hợp lệ
25 Nhập số điện thoại Thông báo số điện sai đầu số thoại không hợp lệ
26 Bỏ trống số điện Thông báo số điện thoại 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ỉ Thông báo vui lòng email nhập tất cả các trường
29 Email không đúng Thông báo địa chỉ định dạng email không hợp lệ xxx@xxx.xxx
30 Email không có kí tự Thông báo địa chỉ nối @ email không hợp lệ
31 Email không có Thông báo địa chỉ server name email không hợp lệ
32 Email không có Thông báo địa chỉ domain email không hợp lệ
33 Email không có dấu Thông báo địa chỉ
34 Email không có com Thông báo địa chỉ email không hợp lệ
Local- Part Thông báo địa chỉ email email không hợp lệ
36 Local-Part email có Thông báo địa chỉ kí tự đặc biệt trừ các email không hợp lệ kí tự + -
37 Local-Part email có Thông báo địa chỉ khoảng trắng email không hợp lệ
38 Domain name chứa Thông báo địa chỉ kí tự đặc biệt 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ử bằng công cụ Selenium sử dụng @Test được sử dụng để nói rằng các phương thức phía dưới là một testcase Sau khi thực thi eclip cung cấp cho ta hai đầu ra Thứ nhất trong cửa sổ Console, và hai là trong cửa sổ TestNGResutls.
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
STT Module code Pas Fail Number s 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ụ để đo độ tải và performance của đối tượng, có thể sử dụng để test performance trên cả nguồn tĩnh và nguồn động, có thể kiểm tra độ tải và hiệu năng trên nhiều loại server khác nhau như: Web HTTP, HTTPS, SOAP, Database via JDBC, LDAP, JMS, Mail – SMTP(S), POP3(S) and IMAP(S)…
- Jmeter là một mã nguồn mở được viết bằng java Cha đẻ của JMeter là Stefano Mazzocchi sau đó Apache đã thiết kế lại để cải tiến hơn giao diện đồ họa cho người dùng và 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ó thể chạy trên nhiều nền tảng hệ điều hành khác nhau, trên Linux chỉ cần chạy bằng một shell scrip, trên Windows thì chỉ cần chạy 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: nó giả lập một nhóm người dùng gửi các yêu cầu tới một máy chủ, nhận và xử lý các response từ máy chủ và trình diễn các kết quả đó cho người dùng dưới dạng bảng biểu, đồ thị,cây…
- 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