KIỂM THỬ PHẦN MỀM NGHIÊN CỨU VÀ ĐÁNH GIÁ CÁC PHƯƠNG PHÁP LUẬN KIỂM THỬ,Kiểm thử hộp trắng nhằm kiểm tra mã nguồn phần mềm: Cơ bản là xác minh các lỗ hổng thiếu sót, khiếm khuyết trong các mã nguồn. Kiểm tra các đường dẫn (Path) bị hỏng hoặc không đầy đủ trong mã nguồn. Kiểm tra dòng chảy của cấu trúc đề cập đến trong tài liệu đặc tả. Kiểm tra xem có các dead code (mã chết) trong mã nguồn hay không Kiểm tra các kết quả đầu ra có như mong đợi? Kiểm tra các vòng lặp, các điều kiện trong các mã nguồn có thực hiện đúng không?
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN -
BÁO CÁO BÀI TẬP LỚN THUỘC HỌC PHẦN: KIỂM THỬ
LỜI NÓI ĐẦU
Trong thời buổi công nghệ thông tin có mặt khắp các lĩnh vực, các tổ
Trang 2các phần mềm để thực hiện các công việc được nhanh chóng, chính xác vàhiệu quả ngày càng tăng Việc đảm bảo chất lượng phần mềm ngày càng trởlên quan trọng Bên cạnh các phần mềm truyền thống, người ta còn sử dụngcác phần mềm chạy trên nền web Chính vì điều đó website ngày càng được
sử dụng rộng rãi | Ngoài ra, để đáp ứng nhu cầu chia sẻ thông tin, cũng nhưtruyền đạt thông tin một cách nhanh chóng và tiếp cận với nhiều người nhấtthì website chính là phương tiện có khả năng làm tốt nhất công việc đó
Ngày nay, các website được phát triển một cách cực kỳ mạnh mẽ vànhanh chóng Tuy nhiên, đi cùng với sự phát triển vượt bậc và tiện lợi như thếthì cũng có không ít các trở ngại dẫn đến việc website không được hoạt độngmột cách hiệu quả nhất Do đó, cần thiết phải kiểm thử và đảm bảo chất lượngcủa website
Với sự hướng dẫn của thầy Hoàng Quang Huy nhóm chúng em thực hiện
đề tài “Nghiên cứu và đánh giá các phương pháp luận kiểm thử” và thực hiệntrên một sản phẩm website đã được xây dựng nhưng chưa hoàn thiện, cũngnhư gặp rất nhiều thiếu sót trong quá trình phát triển sản phẩm Do hạn chế vềmặt kiến thức cho nên không thể tránh khỏi sai sót trong quá trình làm báocáo, rất mong được sự giúp đỡ và chỉ dạy của thầy và các bạn
Chúng em xin chân thành cảm ơn!
MỤC LỤC
Trang 32.5 Tiến hành kiểm thử trên công cụ Jmeter 25
Trang 4Hình 7 Khối lệnh có nhiều cạnh vào, nhiều cạnh ra 9
Trang 5CHƯƠNG I CƠ SỞ LÝ THUYẾT1.1 Kiểm thử hộp trắng
1.1.1 Khái niệm
Kiểm thử hộp trắng nhằm kiểm tra mã nguồn phần mềm:
Cơ bản là xác minh các lỗ hổng thiếu sót, khiếm khuyết trong các mãnguồn
Kiểm tra các đường dẫn (Path) bị hỏng hoặc không đầy đủ trong mãnguồn
Kiểm tra dòng chảy của cấu trúc đề cập đến trong tài liệu đặc tả
Kiểm tra xem có các dead code (mã chết) trong mã nguồn hay khôngKiểm tra các kết quả đầu ra có như mong đợi?
Kiểm tra các vòng lặp, các điều kiện trong các mã nguồn có thực hiệnđúng không?
Xác minh từng dòng hoặc phần của các mục trong mã nguồn & baophủ các phân nhánh xử lý
Giải thích Dead code:
Dead code (mã chết) là một phần trong mã nguồn của một chương trìnhđược thực thi nhưng có kết quả là không bao giờ được sử dụng trong bất kỳtính toán khác
Trong khi kết quả của một sự tính toán chết có thể không bao giờ được
sử dụng, nó có thể làm tăng lỗi hoặc ảnh hưởng đến tốc độ toàn cục, do đócần loại bỏ các mã như vậy nhằm thay đổi hiệu năng của chương trình
Ví dụ: Dead code
Trang 6int calculate (int X, int Y)
● Path Coverage (phủ đường đi)
Một hình thức truyền thống của kiểm thử White-box thường trải qua là:
● Bước 1: Tạo 1 đồ thị mô tả luồng điều khiển từ mã nguồn, được gọi là
đồ thị luồng điều khiển (CFG _ Control Flow Graph) Đồ thị được tạo
từ mã nguồn thường tạo bằng tay
● Bước 2: Thiết kế các Test case để bao phủ toàn bộ các phần tử của đồthị (tùy theo kỹ thuật)
o Phần tử: các nút, cạnh, đường đi (nodes, edges, paths)
o Đồ thị được định nghĩa hình thức toán học như sau:
o G = (N, E)
o Node: các nút tương ứng với lệnh, điều kiện Edge: các cạnh nốicác nút
Trang 7Ví dụ về Control Flow Graph (CFG)
Hình 1 Control Flow Graph
Các phần tử của CFG
Có 03 loại nút:
● Nút lệnh: mô tả nút vào, ra, tuần tự
● Nút điều kiện: nút mô tả điều kiện cho 1 nhánh
● Nút hỗ trợ: nút kết nối như IF, … Cạnh: biểu diễn các luồng điềukhiển
Rất dễ khi tạo đồ thị, nó tương tự như vẽ lưu đồ chương trình (FlowProgram)
Tạo các khối lệnh (Block statement)
Để đơn giản hóa các mã nguồn lớn có nhiều lệnh, người ta thường tạoCFG bằng các khối lệnh thay vì cho từng lệnh
Trang 8Khối lệnh là tập hợp các lệnh liên tiếp tuần tự, không có phân nhánh(trừ ở cuối), không chứa vòng lặp.
Trang 9Hình 4 Khối lệnh If …else
Ví dụ: Khối lệnh If không có else
Hình 5 Khối lệnh If không có else
Ví dụ: Khối lệnh chia nhiều nhánh như switch(), Select case,
Trang 10Hình 6 Khối lệnh chia nhiều nhánh
Ví dụ: Khối lệnh có nhiều cạnh vào, nhiều cạnh ra.
Hình 7 Khối lệnh có nhiều cạnh vào, nhiều cạnh ra
Trang 11Statement Coverage (Phủ lệnh)
Lệnh là các dòng mã hoặc hướng dẫn cho máy tính hiểu và hành độngphù hợp Một lệnh sẽ trở thành một lệnh thực thi khi nó được biên soạn vàchuyển đổi thành mã đối tượng và thực hiện các hành động khi chương trình
Path Coverage (phủ đường đi)
Phủ đường đi là kiểm tra tất cả các đường đi của chương trình Đây làmột kỹ thuật toàn diện, đảm bảo rằng tất cả các đường đi của chương trìnhđược đi qua ít nhất một lần Phủ đường đi thậm chí còn mạnh mẽ hơn phủnhánh Kỹ thuật này rất hữu ích để kiểm thử các chương trình phức tạp
Hãy lấy một ví dụ đơn giản để hiểu tất cả các kỹ thuật kiểm thử hộptrắng
Trang 12Xem xét đoạn mã giả sau (pseudo code):
Đối với Branch Coverage: ta có thể phủ hết các nhánh, và sẽ đánh giá
cả điều kiện "FALSE"
Trang 13Vì vậy, bây giờ mã giả trở thành:
Hình 9 Mã giả sau khi kiểm thử
1.2.2 Các loại kiểm thử chấp nhận
Kiểm thử chấp nhận bao gồm các loại phổ biến sau:
● Kiểm thử chấp nhận người dùng (UAT)
● Kiểm thử người dùng cuối (End-user testing)
● Kiểm thử chấp nhận vận hành (Operational Acceptance Testing –OAT)
Trang 14Kiểm thử chấp nhận người dùng (UAT)
Kiểm thử chấp nhận người dùng là một loại kiểm thử chấp nhận Nó làmột quá trình mà xác nhận rằng một giải pháp hoặc phần mềm đã tạo ra cóđáp ứng được cho việc sử dụng của người dùng cuối hay không
Kiểm thử chấp nhận người dùng là quá trình diễn ra vào giai đoạn cuốicủa chu trình kiểm thử, sau khi các giai đoạn kiểm thử chức năng (FunctionalTesting), kiểm thử tích hợp (Integration Testing) và kiểm thử hệ thống(System Testing) kết thúc Và ngay sau khi qua được giai đoạn UAT thì sảnphẩm sẽ sẵn sàng để đưa vào sử dụng thực tế (production)
Lý do cần áp dụng kiểm thử chấp nhận người dùng
Mặc dù khi qua được 3 bước kiểm thử chức năng, kiểm thử tích hợp vàkiểm thử hệ thống, kiểm thử chấp nhận sẽ có thể trở nên dư thừa Tuy nhiên
lý do chúng ta không nên bỏ qua bước kiểm thử này là bởi vì:
Các lập trình viên dựa vào các đặc tả yêu cầu để phát triển phần mềm.tuy nhiên đây lại phần mềm được dựng theo “cách hiểu” của cá nhân họ vềcác yêu cầu mà có thể không phải là những thứ mà người dùng thực sự cần
Các yêu cầu thay đổi ngay trong quá trình triển khai dự án không đượctruyền đạt hiệu quả cho các lập trình viên
Kiểm thử chấp nhận người dùng và mô hình chữ V
Mô hình chữ V (V-Model) là mô hình mà trong các giai đoạn kiểm thử
sẽ đi cùng với một giai đoạn phát triển phần mềm, hoặc có thể nói hai quátrình phát triển và kiểm thử hoạt động song song
Trong mô hình này, kiểm thử chấp nhận người dùng sẽ tương ứng vớigiai đoạn phân tích yêu cầu
Trang 15Hình 10 Mô hình chữ V
Kiểm thử chấp nhận người dùng cần thỏa mãn các điều kiện sau để cóthể tiến hành:
● Yêu cầu nghiệp vụ phải có sẵn
● Mã nguồn chương trình cần phải được phát triển đầy đủ
● Các quá trình kiểm thử chức năng, kiểm thử tích hợp và kiểm thử hệthống phải được hoàn thành
● Không có các lỗi dừng chương trình đột ngột, hay các lỗi nghiêm trọngtrong quá trình kiểm thử tích hợp hệ thống trước đó
● Chỉ có các lỗi về thẩm mỹ mới có thể được bỏ qua trước khi quá trìnhkiểm thử chấp nhận diễn ra
● Hoàn thành kiểm thử hồi quy mà không có lỗi lớn xảy ra
● Tất cả các lỗi phải được báo cáo và sửa trước khi kiểm thử chấp nhậnbắt đầu
Trang 16● Hoàn thành ma trận truy xuất nguồn gốc cho tất cả các bộ kiểm thử
● Môi trường cho kiểm thử chấp nhận phải sẵn sàng để sử dụng
● Có thông báo sẵn sàng cho kiểm thử chấp nhận từ nhóm kiểm thử hệthống
Quy trình kiểm thử chấp nhận người dùng
Kiểm thử chấp nhận được diễn ra tại máy khách, và được thực hiện bởingười dùng dự định sẽ sử dụng hệ thống hoặc phần mềm Quy trình kiểm thửchấp nhận sẽ bao gồm các bước như sau:
Hình 11 Quy trình kiểm thử chấp nhận người dùng
Trang 17Bước 1: Phân tích các yêu cầu nghiệp vụ
Một trong những việc làm quan trọng nhất của quá trình kiểm thử chấpnhận là xác định và xây dựng các kịch bản thử nghiệm Các kịch bản nàyđược lấy từ các tài liệu sau:
● Bản tuyên ngôn của dự án (Project Charter)
● Các trường hợp sử dụng theo nghiệp vụ (Business Use Cases)
● Các sơ đồ quy trình hoạt động của chương trình (Process FlowDiagram)
● Tài liệu yêu cầu nghiệp vụ (Business Requirements Document –BRD)
● Các đặc tả yêu cầu hệ thống (System Requirements Specification– SRS)
Bước 2: Tạo kế hoạch
Kế hoạch kiểm thử cho kiểm thử chấp nhận sẽ được sử dụng để xácminh và đảm bảo ứng dụng/chương trình đáp ứng được các yêu cầu nghiệp vụcủa nó Nó sẽ ghi lại các tiêu chí nhập vào và xuất ra cho kiểm thử chấp nhận,kịch bản kiểm thử, cách tiếp cận các trường hợp kiểm thử và thời gian kiểmthử
Bước 3: Xác định các kịch bản và trường hợp kiểm thử (Test Scenarios and Test Cases)
Ở bước này sẽ xác định các kịch bản kiểm thử liên quan đến quy trìnhnghiệp vụ cấp cao và tạo các trường hợp kiểm thử (test cases) với các bướckiểm thử rõ ràng Các trường hợp kiểm thử phải đầy đủ bao gồm hầu hết cáckịch bản của kiểm thử chấp nhận Các trường hợp sử dụng theo nghiệp vụ làđầu vào để tạo ra các trường hợp kiểm thử
Trang 18Bước 4: Chuẩn bị dữ liệu cho việc kiểm thử
Các dữ liệu dùng cho kiểm thử chấp nhận nên là các dữ liệu thực tế màngười dùng sẽ sử dụng Chúng ta nên xáo trộn dữ liệu, chẳng hạn như ghépcặp ngẫu nhiên các bộ dữ liệu với nhau để giúp tăng tính bảo mật và riêng tư
Bên cạnh đó, người kiểm thử cũng sẽ cần phải làm quen với các luồng
cơ sở dữ liệu
Bước 5: Tiến hành kiểm thử và ghi lại các kết quả
Bước này sẽ tiến hành kiểm thử theo các tài liệu, quy trình và dữ liệusẵn có Các lỗi xảy ra sẽ được ghi lại và tiến hành kiểm tra lại sau khi đã đượcsửa
Có thể áp dụng các công cụ quản lý kiểm thử cho bước này, chẳng hạnnhư JIRA, Klaros, qTest …
Bước 6: Xác nhận việc đã đáp ứng các mục tiêu nghiệp vụ
Các chuyên viên phân tích nghiệp vụ (Business Analysist – BA) hoặcngười kiểm thử chấp nhận cần thông báo qua mail về việc kết thúc quá trình.Đến lúc này, sản phẩm đã sẵn sàng để đưa vào sử dụng trong thực tế(production)
Các tài liệu bàn giao của quá trình kiểm thử chấp nhận bao gồm các kếhoạch kiểm thử, kịch bản kiểm thử, trường hợp kiểm thử (test cases), kết quảkiểm thử và nhật ký ghi lại lỗi
Để đảm bảo sẵn sàng cho sử dụng thực tế (production), kiểm thử chấpnhận cần đảm bảo các điều sau:
● Không có các lỗi nghiêm trọng còn đang mở
● Quy trình nghiệp vụ hoạt động ổn định
Trang 19● Người tiến hành kiểm thử chấp nhận đã đăng xuất khỏi tất cả cáctài khoản và các bên liên quan.
Một số vấn đề liên quan đến kiểm thử chấp nhận
Để tăng tỉ lệ thành công của kiểm thử chấp nhận (UAT), ta có thể xemxét các vấn đề sau:
● Chuẩn bị sớm các kế hoạch kiểm thử chấp nhận trong vòng đờicủa dự án
● Chuẩn bị các checklists đầy đủ trước khi tiến hành kiểm thử chấpnhận
● Thực hiện Pre-UAT trong giai đoạn kiểm thử hệ thống
● Có tư duy của một người dùng bất kỳ khi tiến hành kiểm thử
● Cần có quá trình phản hồi trước khi kết thúc kiểm thử chấp nhận
và chuyển sang giai đoạn sử dụng thực tế
Trang 20CHƯƠNG II KẾT QUẢ THỰC NGHIỆM
2.1 Website kiểm thử
Website bán đồng hồ
2.2 Yêu cầu đặc tả của website
2.2.1 Yêu cầu chức năng
Sửa thông tin khách hàng
Mô tả: Khách hàng sửa thông tin cá nhân như email, số điện thoại, họtên, mật khẩu…Hệ thống cập nhật lại thông tin khách hàng
Thêm vào danh mục yêu thích
Mô tả: Khách hàng thêm các sản phẩm vào danh mục yêu thích Hệthống cập nhật danh mục yêu thích
Trang 21Số lượng truy cập tối đa cùng một thời điểm: 1000 truy cập
2.3 Công cụ kiểm thử Jmeter
JMeter là một ứng dụng mã nguồn mở thuần Java, được phát triển đầutiên bởi Stefano Mazzocchi JMeter dùng để kiểm tra hiệu năng, khả năngchịu tải và các chức năng
Tại sao sử dụng JMeter?
Bạn đã bao giờ kiểm thử một trang web mà biết nó hoạt động tốt chưa?Bao nhiêu người truy cập mà trang web vẫn hoạt động tốt, không hề xảy ravấn đề gì?
Giả sử một ngày nào đó, sếp yêu cầu bạn kiểm thử hiệu năng của trangweb www.google.com cho 100 người dùng truy cập một lúc, khi đó bạn sẽlàm gì? Bạn nghĩ ra cách 100 người sử dụng 100 máy PC truy cập đồng thờihay sao?
Trang 22Bạn nghĩ ra cách 100 người sử dụng 100 máy PC truy cập đồng thờihay sao? Thật không khả thi chút nào khi điều kiện thiết bị không cho phép.Nếu sếp bạn lại bảo cho số lượng lên đến 1000 lại càng không thể Chính vìvậy cần phải có một công cụ (tool) để bạn thực hiện mô phỏng những hành vicủa con người để kiểm thử hiệu suất của trang web đó chính là JMeter.
Jmeter có thể làm gì?
Jmeter là công cụ giúp ta giả lập thao tác của người dùng trên web.Bằng việc giả lập các thao tác của một số lượng người dùng nhất định, Jmetergiúp ta đánh giá được các kết quả:
● Web có thể chịu được bao nhiêu lượt truy cập/thao tác liên tục cùnglúc?
● Để đáp ứng số lượng X người sử dụng, thì cần phân phối họ truycập trong bao lâu? Như thế nào để Web vẫn hoạt động bình thường?
● Thời gian response dữ liệu của server với từng mức tải người dùng?
● Kết hợp với 1 số tool monitor server, ta có thể theo dõi thay đổi vật
lý của server khi có tải lớn như: CPU, RAM, Network traffic…
Cài đặt và khởi chạy Jmeter
Bước 1: Download Apache Jmeter
Bước 2: Để chạy được Jmeter, cần cài thêm JDK của Java
Bước 3: Chạy JDK
Bước 4: Chạy Jmeter: Sau khi download Jmeter, giải nén và chạyfile jar trong thư mục /bin
Trang 23Hình 12 Cài đặt Jmeter
Trang 242.4 Tiến hành kiểm thử trên website
Chức năng Các bước kiểm
thử
Kết quả mong muốn Kết quả thực tế
Đăng ký
Điền tên đăng nhập, email, mật khẩu
Nhấn nút đăng ký
Điều hướng đến đăng nhập
Trang web tự động đăng nhập
và điều hướng đến trang chủ
Đăng nhập
Điền tên đăng nhập, mật khẩu
Nhấn nút đăng nhập
Điều hướng đến trang chủ
Điều hướng đến trang chủ
Sửa thông tin
khách hàng
Nhấn vào mục thông tin tài khoản
Điền họ tên, số điện thoại, email, địa chỉ
Nhấn nút cập nhậtthông tin
Điều hướng về trang thông tin tài khoản và hiển thị thông tin đã cập nhật
Điều hướng về trang thông tin tàikhoản và hiển thị thông tin đã cập nhật
Chi tiết sản
phẩm
Nhấn vào hình ảnh sản phẩm
Điều hướng đến trang chi tiết sản phẩm với đầy đủ các thông tin của sản phẩm
Điều hướng đến trang chi tiết sản phẩm với đầy đủ các thông tin của sản phẩm
Thêm giỏ hàng
Nhấn vào nút thêm giỏ hàng
Hệ thống thêm sản phẩm vào giỏ hàng
và thông báo thêm thành công
Hệ thống thêm sản phẩm vào giỏhàng
Thêm vào danh
mục yêu thích
Nhấn vào nút thêm vào danh mục yêu thích
Hệ thống thêm sản phẩm vào danh mục yêu thích và thông báo thêm thành công
Hệ thống thêm sản phẩm vào danh mục yêu thích
Trang 25Tìm kiếm sản
phẩm
Nhấn vào biểu tượng tìm kiếm sau đó nhập sản phẩm muốn tìm kiếm
Hệ thống điều hướng đến trang tìm kiếm và cho phép nhập thông tin tìm kiếm
Biểu tượng tìm kiếm không thể nhấn được => chức năng tìm kiếm chưa hoàn thiện
Mua hàng
Nhấn vào biểu tượng giỏ hàngNhấn vào thủ tục thanh toán
Điền thông tin nhận hàngNhấn đặt hàng
Hệ thống điều hướng đến trang đặt hàng và hiển thị chi tiết hóa đơn
Sau khi nhấn đặt hàng, hệ thống trừ tiền vào tài khoản khách hàng
Hệ thống điều hướng đến trang đặt hàng và hiển thị chi tiết hóa đơn Sau khi nhấn đặt hàng, hệthống trừ tiền vàotài khoản khách hàng
2.5 Tiến hành kiểm thử trên công cụ Jmeter
Bước 1: Tạo 1 thread group: TestPlan > Add > Threads (Users) >
Thread group
Hình 13 Tạo 1 thread group