Mục tiêu nghiên cứu Có cái nhìn đúng đắn và sâu sắc hơn về các vấn đề cơ bản của công nghệphần mềm, lỗi phần mềm và kiểm thử phần mềm Hiểu rõ các thành phần của bộ công cụ Selenium
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM
BÁO CÁO ĐỒ ÁN KIỂM THỬ VÀ ĐẢM BẢO CHẤT LƯỢNG PHẦN MỀM
KIỂM THỬ ỨNG DỤNG WEB BÁN COFFEE
BẰNG CÔNG CỤ SELENIUM
Ngành: CÔNG NGHỆ THÔNG TIN
Giảng viên hướng dẫn: ThS Nguyễn Hữu Trung
Nhóm Sinh viên thực hiện:
Phạm Văn Khải 1811061405 18DTHB2
Trần Nhựt Tân 1811061686 18DTHB2
Nguyễn Quang Huy 1811062133 18DTHB2
Dương Quốc Nam 1811062201 18DTHB2
TP Hồ Chí Minh, 2021
Trang 2áp dụng tốt nhất những gì đã được học suốt những buổi học qua.
Trong quá trình thực hiện và làm báo cáo, do còn thiếu nhiều kinh nghiệm thực
tế nên không tránh khỏi những sai sót Chúng em rất mong nhận được những ý kiếnđóng góp của Thầy để giúp chúng em trong lĩnh vực này được hoàn thiện hơn Đó làhành trang quý giá giúp chúng em hoàn thiện kiến thức của mình sau này
Chúng em xin chân thành cảm ơn và trân trọng kính chào!
Trang 3NHẬN XÉT & ĐÁNH GIÁ CỦA GIẢNG VIÊN HƯỚNG DẪN
Qua quá trình học tập:
Giáo viên hướng dẫn có một số nhận xét, đánh giá như sau:
1/- Quá trình học tập
2/- Thực hiện báo cáo
Đánh giá chung
Kết quả đạt được: Điểm đánh giá việc thực hiện báo cáo………/10
TP HCM, Ngày 01 tháng 08 năm
2021
GIẢNG VIÊN HƯỚNG DẪN
ThS Nguyễn Hữu Trung
Trang 4MỤC LỤC
LỜI CẢM ƠN i
NHẬN XÉT & ĐÁNH GIÁ CỦA GIẢNG VIÊN HƯỚNG DẪN ii
MỤC LỤC iii
DANH MỤC BẢNG vi
DANH MỤC HÌNH ẢNH vii
LỜI MỞ ĐẦU 1
CHƯƠNG 1:TỔNG QUAN PHẦN MỀM VÀ LỖI PHẦN MỀM 3
1.1 Phần mềm và khái niệm liên quan 3
1.1.1 Phần mềm 3
1.1.2 Yêu cầu khách hàng 3
1.1.3 Đặc tả yêu cầu phần mềm 4
1.1.4 Chất lượng và độ tin cậy của phần mềm 4
1.2 Định nghĩa về công nghệ phần mềm 5
1.3 Vòng đời phần mềm 5
1.4 Lỗi phần mềm 6
1.4.1 Định nghĩa về lỗi phần mềm và phân loại phần mềm 6
1.4.2 Các nguyên nhân gây lỗi phần mềm 7
CHƯƠNG 2: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM 10
2.1 Kiểm thử phần mềm 10
2.1.1 Khái niệm 10
2.1.2 Vai trò của kiểm thử phần mềm 10
2.1.3 Các cấp độ trong kiểm thử phần mềm 10
2.1.4 Quy trình kiểm thử phần mềm 12
2.1.5 Phân loại kiểm thử phần mềm 14
2.1.6 Các mức độ nghiêm trọng của lỗi 15
2.1.7 Kiểm thử tự động 17
2.2 Các kỹ thuật xác định ca kiểm thử 18
2.2.1 Kỹ thuật phân vùng tương đương 18
2.2.2 Kỹ thuật phân tích giá trị biên 19
2.2.3 Đoán lỗi 20
2.2.4 Kỹ thuật kiểm tra trạng thái 20
Trang 52.3 Kết luận 20
CHƯƠNG 3: KIỂM THỬ ỨNG DỤNG TRÊN NỀN WEB BẰNG CÔNG CỤ SELENIUM 22
3.1 Công cụ kiểm thử tự động Selenium 22
3.1.1 Giới thiệu chung về Selenium 22
3.1.2 Các thành phần của Selenium 23
3.1.3 Hướng dẫn cài đặt Selenium 25
3.1.3.1 Selenium IDE 25
3.1.3.2 Selenium Webdriver 26
3.1.3.3 Selenium Grid 27
CHƯƠNG 4: PHÂN TÍCH THIẾT KẾ HỆ THỐNG 30
4.1 Khảo sát hiện trạng 30
4.2 Đối tượng sử dụng và chức năng của website 32
4.3 Phân tích hệ thống 33
4.3.1 Quan hệ giữa các bảng 33
4.3.2 Thiết kế các bảng 33
4.3.3 Các mô hình dữ liệu 35
4.3.4 Sơ đồ ClassDiagram 37
4.3.5 Sơ đồ ERD 37
CHƯƠNG 5: ỨNG DỤNG KIỂM THỬ WEB VÀ DEMO CHƯƠNG TRÌNH 38
5.1 Ứng dụng kiểm thử web 38
5.1.1 Form đăng nhập 38
5.1.2 Form đăng ký 38
5.1.3 Form thông tin tài khoản 39
5.1.4 Form Cập nhật thông tin sản phẩm 40
5.1.5 Form thêm sản phẩm 41
5.1.6 Form thay đổi mật khẩu 42
5.2 Xây dựng testcase 42
5.2.1 Testcase Đăng nhập 42
5.2.2 Testcase đăng ký 44
5.2.3 Testcase cập nhật thông tin tài khoản 45
5.2.4 Testcase cập nhật thông tin sản phẩm 46
Trang 65.2.5 Testcase thêm sản phẩm 47
5.2.6 Testcase chỉnh sửa password 48
5.3 Dữ liệu đầu vào 50
5.3.1 Đăng nhập 50
5.3.2 Đăng ký 51
5.3.3 Cập nhật thông tin tài khoản 52
5.3.4 Cập nhật thông tin sản phẩm 52
5.3.5 Thêm sản phẩm 53
5.3.6 Thay đổi mật khẩu 53
5.4 Chi Tiết kết quả 54
5.4.1 Test case Đăng nhập 54
5.4.2 Test case Cập nhật thông tin tài khoản 55
5.4.3 Testcase Cập nhật thông tin sản phẩm 56
5.4.4 Testcase Thêm sản phẩm 57
5.4.5 Testcase Thay đổi mật khẩu 58
5.5 Thực hiện test bằng Selenium WebDriver 59
5.5.1 Đăng nhập hệ thống 59
5.5.2 Đăng ký hệ thống 59
5.5.3 Cập nhật thông tin tài khoản 60
5.5.4 Cập nhật thông tin sản phẩm 60
5.5.5 Thêm sản phẩm 61
5.5.6 Thay đổi mật khẩu 61
5.6 Báo cáo kết quả 62
CHƯƠNG 6: KẾT LUẬN 63
6.1 Kết quả đạt được 63
6.2 Hạn chế 63
6.3 Hướng phát triển của đề tài 64
TÀI LIỆU THAM KHẢO
Trang 7DANH MỤC BẢNG
Bảng 2.1 Bảng phân loại mức độ nghiêm trọng của lỗi 16
Trang 8DANH MỤC HÌNH ẢNH
Hình 2.1 Vòng đời của quá trình kiểm thử 10
Hình 2.2 Quy trình kiểm thử phần mềm 12
Hình 2.3 Minh họa kỹ thuật phân vùng tương đương 18
Hình 2.4 Minh họa kỹ thuật phân tích giá trị biên 19
Hình 3.1 Các thành phần của Selenium 23
Hình 3.2 Selenium IDE trên cửa hàng Chrome 26
Hình 3.3 Truy cập vào NuGet Package Manager trên Visual Studio 26
Hình 3.4 Tìm kiếm và cài đặt Selenium WebDriver 27
Hình 3.5 Trang chủ download Selenium Grid 27
Hình 3.6 Khởi tạo hub bằng command line 28
Hình 3.7 Khởi tạo các node cho hub bằng command line 28
Hình 3.8 Giao diện Grid Console dùng để kiểm soát 28
Hình 4.1 Hình ảnh trang chủ giới thiệu Website 31
Hình 4.2 Diagram trong SQL Mô hình quan niệm dữ liệu (thực thể - kết hợp) 33
Hình 4.3 Bảng lưu thông tin người dùng 33
Hình 4.4 Bảng lưu thông tin giỏ hàng 34
Hình 4.5 Bảng lưu thông tin sản phẩm 34
Hình 4.6 Bảng lưu danh mục sản phẩm 34
Hình 4.7 Bảng lưu danh sách hóa đơn đã được lặp 34
Hình 4.8 Bảng lưu chi tiết hoá đơn đã được lập 35
Hình 4.9 Mô hình UseCase tổng quát 35
Hình 4.10 Mô hình UseCase quản lý 36
Hình 4.11 Mô hình UseCase mua hàng 36
Hình 4.12 Sơ đồ ClassDiagram 37
Hình 4.13 Sơ đồ ERD 37
Hình 5.1 Giao diện trang đăng nhập 38
Hình 5.2 Giao diện trang đăng ký 38
Hình 5.3 Giao diện trang thông tin tài khoản 39
Hình 5.4 Giao diện trang thông tin sản phẩm 40
Hình 5.5 Giao diện trang thêm sản phẩm 41
Hình 5.6 Giao diện trang đổi mật khẩu 42
Trang 9Hình 5.7 Phân vùng tương đương form đăng ký 44
Hình 5.8 Testcase từ bảng phân vùng tương đương form đăng ký 45
Hình 5.9 Phân vùng tương đương form thông tin tài khoản 46
Hình 5.10 Testcase từ bảng phân vùng tương đương form thông tin tài khoản 46
Hình 5.11 Phân vùng tương đương form thông tin sản phẩm 47
Hình 5.12 Testcase từ bảng phân vùng tương đương form thông tin sản phẩm 47
Hình 5.13 Phân vùng tương đương form thêm sản phẩm 48
Hình 5.14 Testcase từ bảng phân vùng tương đương form thêm sản phẩm 48
Hình 5.15 Phân vùng tương đương form đổi mật khẩu 49
Hình 5.16 Testcase từ bảng phân vùng tương đương form đổi mật khẩu 49
Hình 5.17 Dữ liệu đầu vào form đăng nhập 50
Hình 5.18 Dữ liệu đầu vào form đăng ký 51
Hình 5.19 Dữ liệu đầu vào form thông tin tài khoản 52
Hình 5.20 Dữ liệu đầu vào form thông tin sản phẩm 52
Hình 5.21 Dữ liệu đầu vào form thêm sản phẩm 53
Hình 5.22 Dữ liệu đầu vào form đổi mật khẩu 53
Hình 5.23 Chi tiết kết quả testcase đăng nhập 54
Hình 5.24 Chi tiết kết quả testcase cập nhật thông tin tài khoản 55
Hình 5.25 Chi tiết kết quả testcase cập nhật thông tin sản phẩm 56
Hình 5.26 Chi tiết kết quả testcase thêm sản phẩm 57
Hình 5.27 Chi tiết kết quả testcase thay đổi mật khẩu 58
Hình 5.28 Thực hiện test đăng nhập bằng Selenium WebDriver 59
Hình 5.29 Thực hiện test đăng ký bằng Selenium WebDriver 59
Hình 5.30 Thực hiện test cập nhật thông tin tài khoản bằng Selenium WebDriver 60
Hình 5.31 Thực hiện test cập nhật thông tin sản phẩm bằng Selenium WebDriver 60
Hình 5.32 Thực hiện test thêm sản phẩm bằng Selenium WebDriver 61
Hình 5.33 Thực hiện test thay đổi mật khẩu bằng Selenium WebDriver 61
Trang 10LỜI MỞ ĐẦU
1 Lý do chọn đề tài
Trong giai đoạn phát triển của ngành công nghệ thông tin, nghành công nghệphần mềm đang ngày càng phát triển và chiếm một vị trí quan trọng trong xu hướngphát triển kinh tế công nghiệp hóa, hiện đại hóa đất nước ta Song với việc phát triểncông nghệ phần mềm luôn tiềm ẩn những thách thức dành cho các doanh nghiệp vàcác nhà phát triển phần mềm trong việc kiểm soát lỗi, chất lượng đầu ra của sản phẩm,thực tế đã chứng minh kiểm thử phần mềm là giai đoạn chiếm đến 40% thời gian kinhphí phát triển dự án phần mềm Tuy nhiên ở Việt Nam hiện nay việc kiểm thử phầnmềm vẫn chưa được nhìn nhận đúng với tầm quan trọng của nó Điều này được thểhiện Điều này thể hiện kỹ sư kiểm thử phần mềm ở Việt Nam còn khá thấp cứ 5 lậptrình viên thì mới có 1 kỹ sư kiểm thử Thêm vào đó là mức độ đáp ứng của kỹ sưkiểm thử phần mềm ở Việt Nam chưa cao Nguyên nhân dẫn đến việc này đến từ sựthiếu hụt các đơn vị đào tạo chuyên sâu về kiểm thử và nguyên nhân sâu xa là vấn đềkiểm thử phần mềm ở Việt Nam vẫn chưa được chuyên nghiệp hóa và đầu tư đúngmức
Bên cạnh đó xu hướng áp dụng tự động hóa đang được triển khai rộng rãi ởnhiều lĩnh vực, trong đó có kiểm thử phần mềm Đặc biệt khi kiểm thử phần mềm làcông đoạn chiếm phần lớn thời gian trong quá trình phát triển dự án phần mềm thì sự
ra đời của các công cụ kiểm thử tự động ngày càng có ý nghĩa hơn bao giờ hết, giúptiết kiệm thời gian và tiền bạc Selenium là một công cụ hỗ trợ kiểm thử tự động dànhcho các ứng dụng Web, hoạt động hầu hết các trình duyệt phổ biến hiện nay như:FireFox, Chrome, Safari, Internet Explorer,…cũng như hỗ trợ số lượng lớn các ngônngữ lập trình Web phổ biển Công cụ Selenium hiện được đánh giá là một trong nhữngcông cụ tốt nhất cho kiểm thử tự động các ứng dụng Web, và ưu điểm của công cụ này
là nó là một bộ mã nguồn mở, do đó các tổ chức sẽ không tốn kinh phí mua bản quyển.Tuy chưa được ứng dụng nhiều trong các tổ chức ở Việt Nam, song với những ưuđiểm trên Selenium hứa hẹn sẽ ngày càng phát triển và trở nên thông dụng hơn trongcác tổ chức phát triển phần mềm ở nước ta
Với mong muốn có cái nhìn xác thực, rõ ràng hơn về kiểm thử phần mềm vàtiếp cận được với công cụ kiểm thử tự động Selenium để làm tiền đề cho định hướng
Trang 11tương lai khi tốt nghiệp đại học sẽ trở thành một kỹ sư phần mềm, nhóm em lựa chọn
đề tài: “Nghiên cứu các vấn đề về việc kiểm thử phần mềm và công cụ kiểm thử tựđộng Selenium” Trong khuôn khổ đồ án do thời gian và kinh nghiệm thực tế còn hạnchế nên có những phần thực hiện chưa được tốt, chúng em rất mong nhận được sự góp
ý của thầy cô và các bạn
2 Mục tiêu nghiên cứu
Có cái nhìn đúng đắn và sâu sắc hơn về các vấn đề cơ bản của công nghệphần mềm, lỗi phần mềm và kiểm thử phần mềm
Hiểu rõ các thành phần của bộ công cụ Selenium
Nắm được cách thức sử dụng bộ công cụ là Selenium Web Driver
Ứng với các kiến thức kiểm thử phần mềm và kiến thức về Selenium để viếtthành một đồ án kiểm thử cho một ứng dụng cụ thể
3 Kết cấu nội dung đề tài:
LỜI MỞ ĐẦU: Trình bày về lý do chọn đề tài, mục tiêu nghiên cứu đồ án
và kết cấu nội dung đề tài
CHƯƠNG 1: TỔNG QUAN VỀ PHẦN MỀM VÀ LỖI PHẦN MỀM:
Chương này trình bày về những định nghĩa cơ bản về phần mềm, nghànhcông nghệ phần mềm, lỗi phần mềm, và quy trình xử lý lỗi phần mềm
CHƯƠNG 2: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM: Chương
này trình bày những kiến thức cơ bản về phần mềm như các nguyên tắckiểm thử, các phương pháp kiểm thử, các giai đoạn kiểm thử phần mềm
CHƯƠNG 3: CÔNG CỤ KIỂM THỬ SELENIUM: Chương này trình
bày tổng quan về bộ công cụ Selenium, thao tác với Selenium WebDriver
CHƯƠNG 4: PHÂN TÍCH THIẾT KẾ HỆ THỐNG: Chương này tiến
hành khảo sát hiện trạng phân tích hệ thống, giới thiệu sơ lược về Website,các lược đồ quan hệ: UesCase, ERD, ClassDiagram Cấu trúc các bảng cótrong SQL Server
CHƯƠNG 5: ỨNG DỤNG KIỂM THỬ WEB VÀ DEMO CHƯƠNG TRÌNH: Chương này trình bày kịch quá trình kiểm thử viết cho một số
chức năng cơ bản của ứng dụng Web bán café và bánh ngọt và thử nghiệmmột số trường hợp kiểm thử tự động viết bằng Selenium Web Driver
CHƯƠNG 6: KẾT LUẬN: Chương này đưa ra kết quả mà nhóm thực hiện
Trang 12được, những thiếu sót chưa thực hiện được và hướng phát triển của đề tàitrong tương lai.
1 CHƯƠNG 1:TỔNG QUAN PHẦN MỀM VÀ LỖI PHẦN MỀM
Chương đầu tiên của đồ án đi sâu vào việc tìm kiếm khái niệm về phần mềm vàkiểm thử phần mềm, giúp khái quát việc phân loại kiểm thử phần mềm, đưa ra các quytrình, mức độ, các kỹ thuật trong kiểm thử phần mềm
1.1 Phần mềm và khái niệm liên quan
1.1.1 Phần mềm Định nghĩa theo IEEE: Phần mềm là các chương trình máy tính, các thủ tục,
các tài liệu có liên quan và các dữ liệu để vận hành của một hệ thống máy tính
Theo như định nghĩa của IEEE, phần mềm gồm 4 phần:
Chương trình máy tính ( mã nguồn ): Thành phần này giúp cho máy tính
thực thực thi các ứng dụng được yêu cầu
Các thủ tục: Các thủ tục được yêu cầu , được định nghĩa với thứ tự và lịch
trình mà chương trình sẽ thực thi, các hàm sẽ triển khai, người thực thi cáchành động cần thiết cho ứng dụng phần mềm
Các tài liệu: Có rất nhiều những tài liệu cần thiết với nhân viên phát triển,
người sử dụng và nhân viên bảo trì như: tài liệu thiết kế , tài liệu phân tích,tài liệu hướng dẫn sử dụng , tài liệu hướng dẫn bảo trì
Dữ liệu cần dùng cho việc vận hành hệ thống: Dữ liệu bao gồm các biển,
mã nguồn, danh sách tên thích ứng phần mềm với yêu cầu xác định củakhách hàng để vận hành phần mềm
1.1.2 Yêu cầu khách hàng
Phần mềm được phát triển dựa trên nhu cầu của khách hàng Chính vì lẽ đó, cácchức năng của phần mềm được xây dụng dựa trên việc thu thập phân tích, khảo sát nhucầu của khách hàng thông qua những yêu cầu cụ thể Đối với phần mềm, yêu cầuthường được tổng hợp từ nhiều người, nhiều tổ chức có mức độ chuyên môn và mức
độ tham gia cũng như tương tác với phần mềm khác nhau trong môi trường hoạt độngcủa nó
Có thể phần loại yêu cầu của khách hàng cho sản phẩm phần mềm thành một sốloại như sau:
Phân loại theo sản phẩm và tiến trình
Trang 13 Yêu cầu sản phẩm: là những đòi hỏi hay ràng buộc mà phần mềm phải thực
hiện
Yêu cầu tiến trình: là những ràng buộc liên quan đến việc phát triển phần
mềm (kỹ thuật sử dụng và mô hình phát triển,…)
Phân loại chức năng:
Yêu cầu chức năng: đặc tả các chức năng mà phần mềm cần thực hiện.
Yêu cầu phi chức năng: là các ràng buộc về giải pháp và chất lượng ( hiệu
năng, việc bảo trì, mức độ an toàn, bảo mật,.v v )
Yêu cầu đặc tả các thuộc tính nổi bật: là đặc tả cho các thuộc tính phụ
thuộc vào sự vận hành, đặc biệt là kiến trúc hệ thống Các thuộc tính nàykhông thể xác định cho từng thành phần đơn lẻ
Phân loại theo phạm vi đặc tả
Yêu cầu hệ thống: đặc tả các cấu hình, cơ sở hạ tầng, phần cứng, phần mềm,
con người, kỹ thuật, v.v của toàn bộ hệ thống
Yêu cầu phần mềm: đặc tả các chức năng, giao diện, v.v của kết cầu phần
mềm
1.1.3 Đặc tả yêu cầu phần mềm
Từ yêu cầu khách hàng và những yêu cầu bắt buộc khác, đặc tả yêu cầu phầnmềm được viết ra để mô tả một cách chính xác các yêu cầu đáp ứng của sản phẩmphần mềm Đây cũng chính là tài liệu cơ sở để lập trình viên, kiểm thử viên và các bộphận khác dựa vào để phát triển phần mềm hoàn chỉnh, đúng với yêu cầu đặt ra banđầu Tài liệu đặc tả yêu cầu phần mềm cũng cần cung cấp đầy đủ các thông tin về chiphí, rủi ro và lịch trình cho quá trình phát triển của sản phẩm
Đặc tả yêu cầu phần mềm được viết ra phục vụ rất nhiều đối tượng từ ngườidùng hệ thống, khách hàng đến các nhà phát triển và bảo trì phần mềm Do đó, tài liệuđặc tả nên được viết bằng ngôn ngữ tự nhiên sử dụng biểu đồ, bảng biểu để đảm bảotính dễ hiểu, dễ sử dụng cho tất cả các đối tượng trên
1.1.4 Chất lượng và độ tin cậy của phần mềm
Chất lượng của phần mềm trước hết là đáp ứng các yêu cầu đề ra trong bảngđặc tả phần mềm Có thể kể đến các yếu tố đại diện cho chất lượng phần mềm như:tính đúng đắn, tính hiệu quả, độ tin cậy, dễ sử dụng, dễ bảo trì Ta có thể thấy độ tincậy chỉ là một trong những yếu tố đánh giá chất lượng phần mềm Tuy nhiên người
Trang 14kiểm thử lại hay nhầm lẫn giữa khái niệm chất lượng và độ tin cậy của phần mềm.Ngoài ra có thể dựa vào thời gian khắc phục sự cố để đánh giá đô tin cậy của phầnmềm
1.2 Định nghĩa về công nghệ phần mềm
Công nghệ phần mềm là việc áp dụng các công cụ kỹ thuật một cách hệ thống
trong việc phát triển các ứng dụng dựa trên máy tính Nói cách khác đó là việc áp dụngcác quan điểm cách tiến hành có kỹ luật có bài bản vào việc phát triển vận hành và bảotrì phần mềm
Về cơ bản, công nghệ phần mềm thực hiện các tác vụ chủ yếu sau: thiết kế phầnmềm xây dựng phần mềm, kiểm thử phần mềm và bảo trì phần mềm
Mục tiêu của công nghệ phần mềm là tạo ra những phần mềm tốt, giảm đếnmức tối thiểu sai sót xảy ra trong quá trình vận hành, cũng như tạo điều kiện thuận lợitrong việc bảo trì và nâng cấp phần mềm
1.3 Vòng đời phần mềm
Vòng đời phần mềm là các pha mà phần mềm phải trải qua tử việc khám phácác khái niệm cho đến khi phần mềm được loại bỏ hoàn toàn Mô hình vòng đời phầnmềm gồm 7 pha:
Pha yêu cầu (requirements phase): Là pha đầu tiên trong quá trình xây
dựng phần mềm, còn gọi là pha tìm hiểu khái niệm (concept exploration) Ởpha này đại diện nhóm phát triển và khách hàng gặp nhau, khách hàng đưa
ra những yêu cầu mà phần mềm đó phải có, đại diện nhóm phát triển ghichép lại Nếu dịch theo tiếng Anh là “requirements phase” là pha yêu cầu.Tuy nhiên cách gọi này có thể hơi khó hiểu, do đó người ta thường gọi làpha xác định yêu cầu
Pha đặc tả (sepecification phase): Pha này phân tích các yêu cầu của khách
hàng mô tả các kết quả phân tích dưới dạng ”tài liệu đặc tả” Cuối giai đoạnnày, kế hoạch quản lý dự án phần mềm được đưa ra, mô tả quá trình pháttriển phần mềm
Pha thiết kế (design phase): Là pha tiếp theo pha đặc tả Căn cứ vào tài liệu
đặc tả, pha này mô tả cách thức mà phần mềm thực hiện các công việc cụthể Pha thiết kế thường có 2 tầng kiến trúc (architecture design) và thiết kế(detail design) Thiết kế kiến trúc phân chia phần mềm thành các phần gọi
Trang 15là mô-đun Thiết kế chi tiết là thiết kế từng mô-đun một cách chi tiết
Pha cài đặt (implementation phase): Ở pha này người ta thực hiện viết
chương trình bằng ngôn ngữ lập trình cụ thể
Pha tích hợp (integration phase): Kết nối các mô-đun đã viết chương trình
thành một phần mềm thống nhất và chạy thử, chỉnh sửa cho đến khi phầnmềm chạy tốt
Pha bảo trì (maintenance phase): Khi chương trình được cài đặt trên máy
khách hàng vẫn có thể có lỗi phát sinh trong phần mềm cần loại trừ và điềuchỉnh lại theo yêu cầu khách hàng Công việc bảo trì được chia thành hailoại: bảo trì sửa lỗi (software repair) và bảo trì cập nhật (software update).Bảo trì sửa lỗi là sửa các lỗi có thể còn xuất hiện trong khi chạy chươngtrình Bảo trì cập nhật lại được chia thành hai loại: bảo trì hoàn thiện(perfective maintenance) và bảo trì thích nghi (adaptive maintenance) Bảotrì hoàn thiện là sửa đổi phần mềm theo ý của khách hàng để nâng cao hiệuquả Bảo trì thích nghi là sửa đổi để phần mềm thích nghi với môi trườngmới
Pha loại bỏ (retirement phase): Đến một thời điểm nào đó do sự thay đổi
của môi trường làm việc và một số yếu tố khác, chi phí bảo trì phần mềm sẽlớn hơn rất nhiều so với chi phí phát triển một phần mềm mới Đó là lúcloại bỏ phần mềm được thực hiện
1.4 Lỗi phần mềm
1.4.1 Định nghĩa về lỗi phần mềm và phân loại phần mềm
Lỗi phần mềm nhìn chung là sự không khớp giữa chương trình và đặc tả của nó,kéo theo những vấn đề xuất hiện trong các giai đoạn phát triển phần mềm
Lỗi phần mềm thường xuất hiện ở các hình thức sau đây:
Sai (Fault): Khi phần mềm gặp lỗi sẽ đưa về những sai sót.Tuy nhiên không
dễ để phát hiện ra sai sót trong quá trình phát triển phần mềm khi ngườiphâm tích, thiết kế bỏ sót thông tin dẫn đến thiếu chức năng mà lẽ ra cầnphải có
Thất bại (Failure): Thất bại dễ nhận thấy nhất khi một lỗi được thực thi.Chúng thường xuất hiện dưới 2 dạng: thất bại có thể chạy được ( Ví dụ như
mã nguồn ) và thất bại chỉ liên kết với các lỗi về nhiệm vụ Ngoài ra, có thể
Trang 16kể đến các thất bại liên quan tới các lỗi do bỏ quên Chúng ta có thể hạn chếthất bại ngay tại bước đầu tiên của quy trình phát triển phần mềm nếu việckhảo sát được thực hiện tốt.
Sự cố (Incident): Sự cố thưởng được liên kết với một thất bại Tuy nhiên nókhác với thất bại ở chỗ sự cố luôn hiển thị cho người dùng hoặc kiểm thửviên biết sự tồn tại của nó
Thừa 1 số chức năng không có trong bản đặc tả yêu cầu phần mềm nhưnglại xuất hiện trong phần mềm được xây dựng
Ngoài ra , còn xuất hiện một số lỗi phi chức năng như phần mềm khó sử dụng,tốc độ không đáp ứng yêu cầu (vấn đề hiệu năng) hay giao diện khó nhìn cũng sẽ dễkhiến cho người sử dụng nghĩ rằng phần mềm đang hoạt động không đúng
Dựa vào định nghĩa, ta có thể phân loại lỗi phần mềm thành 3 dạng:
Lỗi sai: Sản phẩm phần mềm được xây dựng và đặc tả
Lỗi thiếu: Các yêu cầu của sản phẩm phần mềm đã có trong đặc tả nhưnglại không có trong sản phẩm thực tế
Lỗi thửa: Sản phẩm thực tế có những tính năng không có trong tài liệu đặctả
1.4.2 Các nguyên nhân gây lỗi phần mềm
Lỗi phần mềm có thể đến từ nhiều nguyên nhân khác nhau trong đó có cácnguyên nhân chủ quan và các nguyên nhân khách quan Dưới đây là nguyên nhân chủyếu gây ra lỗi phần mềm
Định nghĩa các yêu cầu bị lỗi: Những lỗi trong việc xác định yêu cầu
thường nằm ở phía khách hàng Một số lỗi thường gặp là định nghĩa sai yêucầu, lỗi không hoàn chỉnh thiếu các yêu cầu quan trong hoặc là quá chútrọng các yếu cầu không thật sự cần thiết
Các lỗi trong giao tiếp giữa khách hàng và nhà phát triển: Hiểu lầm
trong giao tiếp giũa khách hàng và nhà phát triển cũng là nguyên nhân gâylỗi Những lỗi này thường xuất hiện trong giai đoạn đầu của dự án Một sốlỗi hay gặp phải: hiểu sai chỉ dẫn trong tài liệu yêu cầu, hiểu sai thay đổi khikhách hàng trình bày bằng lời nói và tài liệu, hiểu sai về phản hồi và thiếuquan tâm đến đề cập của khách hàng
Trang 17Giải pháp khắc phục: Cần có ủy ban liên kết giữa khách hàng và nhà cungcấp để tránh lỗi trong giao tiếp Ủy ban do quản trị viên dự án đứng đầu vàkhách hàng phải giới thiệu những người hiểu về mặt nghiệp vụ vào ủy banđó
Sai lệch có chủ ý với các yêu cầu phần mềm: Trong một số trường hợp
các nhà phát triển cố tình làm sai lệch các yêu cầu trong tài liệu đặc tả.Nguyên nhân của việc này đến từ các áp lực thời gian, ngân sách, hay cốtình sử dụng các mô-đun các dự án trước mà chưa phân tích đầy đủ nhữngthay đổi để thích nghi với các yêu cầu mới
Giải pháp khắc phục: Dựa trên những thống kê để quyết định xem giải phápnhư thế nào sắp xếp ưu tiên xem bỏ được yêu cầu nào hay sử dụng lại đượcmô-đun nào
Các lỗi thiết kể logic: Lỗi phần mềm xày ra trong quá trình các chuyên gia
thiết kế hệ thống, các kiến trúc sư hệ thống kỹ sư phần mềm, các nhà phântích xây dựng phần mềm theo yêu cầu Các lỗi điển hình bao gồm:
Định nghĩa các yêu cầu phần mềm bằng các thuật toán sai
Quy trình định nghĩa có chứa trình tự lỗi
Sai sót trong các định nghĩa biên như > 3 hay lớn hơn hoặc bằng 3
Thiếu sót các trạng thái hệ thống phần mềm được yêu cầu
Các lỗi lập trình: Có rất nhiều lý do dẫn đến các lặp trình viên gây ra các
lỗi lặp trình Những lý do này bao gồm: sự hiểu sai các tài liệu thiết kế,ngôn ngữ , sai sót ngôn ngữ lập trình, sai sót việc áp dụng các công cụ pháttriển, sai sót trong lựa chọn dữ liệu
Không tuân thủ theo các tài liệu hướng dẫn và tiêu chuẩn lập trình:
Các lỗi phần mềm có thể đến từ việc không tuân thủ các tài liệu và tiêuchuẩn lập trình của các tổ chức phát triển phần mềm
Thiếu sót trong quá trình kiểm thử: Lỗi phần mềm có thể đến từ chính
quá trình kiểm thử khi người kiểm thử để lọt lỗi Những lỗi này đến từ cácnguyên nhân sau đây:
Kế hoạch kiểm thử chưa hoàn chỉnh, để sót yêu cầu kiểm thử
Lỗi trong tài liệu và bảo cáo kiểm thử
Việc sửa chữa các lỗi được phát hiện không hoàn chỉnh do áp lực thời
Trang 18gian hay do thiếu cẩn thận
Giải pháp: lên kế hoạch kiểm thử cụ thể tại giai đoạn đầu của dự án
Các lỗi thủ tục: Các thủ tục hướng dẫn cho người sử dụng tại từng bước
của tiến trình, chúng có tầm quan trọng đặc biệt trong các hệ thống phầnmềm phức tạp mà các tiến trình được thực hiện bằng nhiều bước, mỗi bước
có nhiều kiểu dữ liệu cho phép kiểm tra các kết quả trung gian Các lỗi cóthể đến từ việc viết các thủ tục
Các lỗi về tài liệu: Các lỗi về tài liệu là vấn đề của đội phát triển và bảo trì
khi có sai sót trong các tài liệu liên quan Những lỗi này có thể là nguyênnhân gây ra lỗi trong giai đoạn phát triển kế tiếp và giai đoạn bảo trì
Trang 192 CHƯƠNG 2: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM
2.1 Kiểm thử phần mềm
2.1.1 Khái niệm
Kiểm thử phần mềm là một cuộc kiểm tra được tiến hành để cung cấp cho cácbên liên quan thông tin về chất lượng của sản phẩm hoặc dịch vụ được kiểm thử Hiểutheo cách đơn giản hơn, kiểm thử phần mềm là quá trình tìm thất bại hoặc chứng tỏviệc tiến hành của phần mềm là đúng đắn
2.1.2 Vai trò của kiểm thử phần mềm
Kiểm thử phần mềm chiếm một vị trí quan trọng trong việc nâng cao chất lượngcũng như độ tin cậy của phần mềm trong quá trình phát triển Hoàn thành vòng quay
“đưa vào lỗi – tìm lỗi – khử lỗi đi” của quy trình tìm kiếm thử phần mềm sẽ thu lạiđược những cải tiến đáng kể cho chất lượng sản phẩm phần mềm Việc biết được sảnphẩm phần mềm Việc biết được sản phẩm phần mềm tốt tới mức nào trước khi đưavào sử dụng sẽ hạn chế tối đa những rủi ro gặp phải trong quá trình phát triển phầnmềm
Hình 2.1 Vòng đời của quá trình kiểm thử
2.1.3 Các cấp độ trong kiểm thử phần mềm
Có rất nhiều cách chia cấp độ kiểm thử phẩn mềm, nhưng tựu chung lại sẽ gồm
4 cấp độ sau:
Kiểm thử đơn vị: Cấp độ này chủ yếu do lập trình viên trực tiếp thực hiện.
Phần mềm khi phát triển sẽ bao gồm nhiều đơn vị chức năng (hàm phương thức) hợpthành Mỗi lập trình viên sẽ đảm nhiệm việc phát triển một hay nhiều đơn vị chức
Trang 20năng Kiểm thử đơn vị chính là việc lập trình viên sau khi hoàn thành code đơn vị chứcnăng của mình sẽ tiến hành kiểm thử chức năng đó một cách cô lập nhằm phát hiện lỗi
và khắc phục trước khi tích hợp với các đơn vị chức năng khác Kiểm thử đơn vịthường được tiến hành theo 2 giai đoạn: kiểm thử đợn vị tĩnh và kiểm thử đơn vị động
Kiểm thử tích hợp: Sau khi kiểm thử đơn vị được tiến hành bởi chính lập trình
viên viết ra nó, các đơn vị chức năng sẽ được ghép lại với nhau để tạo thành hệ thốngđầy đủ và có thể làm việc được Các đơn vị chức năng hoạt động tốt khi ở trạng tháiđộc lập riêng lẻ, những khi ghép lại sẽ có thể xuất hiện những lỗi về giao diện hoặccho ra kết quả không đúng khi phải sử dụng dữ liệu từ những đơn vị chức năng khác
Đó chính là lý do tại sao phải tiếp tục kiểm thử để phát hiện ra những lỗi kể trên.Người ta thường chia bước kế tiếp này thành 2 giai đoạn: kiểm thử tích hợp và kiểmthử hệ thống Ở mức kiểm thử tích hợp, các đơn vị chức năng đucợ kết hợp lại vớinhau và tiến hành kiểm thử chúng theo phương pháp tăng dần để đảm bảo cụm cácđơn vị chức năng sẽ làm việc ổn định trong môi trường thử nghiệm
Kiểm thử hệ thống: Sau khi tất cả các đơn vị chức năng đã được tích hợp lại
với nhau tạo thành một hệ thống hoàn chỉnh, kiểm thử hệ thống hoàn chỉnh, kiểm thử
hệ thống sẽ được thực thi để đảm bảo sản phẩm phần mềm đáp ứng đầy đủ các yêu cầutrong bảng đặc tả yêu cầu phần mềm Đây là công việc tốn nhiều công sức nhất trongquá trình kiểm thử phần mềm Đồng thời cũng sử dụng nhiều kỹ thuật kiểm thử khácnhau như kiểm thử giao diện người dùng, kiểm thử chức năng, kiểm thử hiệu năng,kiểm thử tính dễ dùng,.v.v để hoàn tất công việc kiểm thử trong cấp độ này
Kiểm thử chấp nhận: Khi kiểm thử hệ thống hoàn tất, sản phẩm phần mềm coi
như đã sẵn sàng cho việc đưa vào sử dụng thực tế Lúc này, phần mềm cần được tiếnhành cấp độ kiểm thử cuối cùng – kiểm thử chấp nhận bởi chính khách hàng hay người
sử dụng phần mềm Tuy có phần tương tự như kiểm thử hệ thống nhưng mực đíchchính của kiểm thử chấp nhận là quyết định việc đưa vào sử dụng chính thức sản phẩmphần mềm Người ta dựa trên các số liệu thống kê thực tế về chất lượng , độ tin cậycủa phần mềm để quyết định triển khai báo cáo cho người dùng cuối Kiểm thử chấpnhận thường được thực hiện dưới hình thức cho một nhóm người dùng thử sản phẩmphần mềm để phát hiện các lỗi và nhận phản hồi từ người dùng Trong đó, phiên bảnalpha dành cho đội phát triển phần mềm và phiên bản beta được cung cấp cho người
sử dụng thật để đưa ra đánh giá trong môi trường thực tế Ở thời điểm hiện tại, kiểm
Trang 21thử thứ chấp nhận được coi là cấp độ quy chuẩn bắt buộc không thể thiếu trong quátrình phát triển của nhiều sản phẩm phần mềm.
2.1.4 Quy trình kiểm thử phần mềm
Kiểm thử phần mềm bao gồm nhiều giai đoạn với sự phối hợp của nhiều bênliên quan chứ không chỉ là một đoạn đơn lẻ Chính vì thế, cần có quy trình kiểm thửphần mềm để làm rõ các công đoạ, các bước tiến hành trong toàn bộ quy trình pháttriển phần mềm Nói cách khác, quy trình kiểm thử phần mềm chính là chuỗi các hoạtđộng được tiến hành để thực hiện việc kiểm thử Các giai đoạn trong quy trình kiểmthử phần mềm được biểu diễn tổng quát bằng sơ đồ sau:
Hình 2.2 Quy trình kiểm thử phần mềm Phân tích yêu cầu: Nhóm kiểm thử sẽ tương tác với các bên liên quan để hiểu
rõ những yêu cầu cụ thể cần cho việc kiểm thử Các yêu cầu có thể là chức năng ( xácđinh phần mềm cần phải làm những gì ) hoặc ghi những chức năng (hiệu năng, tínhbảo mật hệ thống, màu sắc, v v)
Hoạt động cụ thể:
Xác định loại kiểm thử sẽ thực hiện
Tổng hợp chi tiết về mức độ tập trung thứ tự ưu tiên
Xác định môi trường kiểm thử
Phân tích khả năng sử dụng kiểm thử tự động
Tài liệu sử dụng:
Báo cáo về khả năng sử dụng kiểm thử tự động (nếu cần)
Lên kế hoạch kiểm thử: Còn được gọi bằng tên khác là chiến lược thử
nghiệm Ở giai đoạn này, trưởng nhóm kiểm thử sẽ dự toán chi phí cho dự án cũngnhư chuẩn bị kế hoạch kiểm thử
Hoạt động cụ thể:
Trang 22 Lựa chọn công cụ kiểm thử (test tool).
Lên kế hoạch về nhân sự và ấn định vai trò trác nhiệm cho từng ngườitrong nhóm
Phổ biển cho mọi người trong nhóm kiểm thử về yêu cầu dự án
Tài liệu sử dụng:
Bảng kế hoạch kiểm thử
Tạo ca kiểm thử: Giai đoạn này cần phải tạo, xác minh, kiểm tra lại các ca
kiểm thử Dữ liệu kiểm thử cũng được tạo và xác minh trong giai đoạn này
Hoạt động cụ thể:
Tạo ca kiểm thử
Xác minh, kiểm tra lại các ca kiểm thử
Tạo dữ liệu kiểm thử
Tài liệu sử dụng:
Ca kiểm thử
Dữ liệu kiểm thử
Cài đặt môi trường kiểm thử: Môi trường kiểm thử quyết định bởi các điều
kiện phần cứng và phần mềm trong từng dự án Thiết lập môi trường kiểm thử có thểthực hiện song song với giai đoạn ca kiểm thử và là một tiêu chí quan trọng trong quátrình kiểm thử Tuy nhiên, nhóm kiểm thử có thể không cần tham gia vào giai đoạnnày nếu đã có các bên liên quan khác hỗ trợ, nhiệm vụ của nhóm kiểm thử chỉ là yêucầu môi trường kiểm thử cần thiết
Hoạt động cụ thể:
Hiểu được kiến trúc yêu cầu, thiết lập môi trường và chuẩn bị danh sáchyêu cầu về phần cứng và phần mềm cho môi trường thử nghiệm
Thiết lập môi trường kiểm thử
Thực hiện kiểm thử: Nhóm kiểm thử thực hiện kiểm thử theo kế hoạch và
danh sách ca kiểm thử đã chuẩn bị từ giai đoạn trước Các lỗi phát hiện ở giai đoạn này
sẽ được thông báo lại cho nhóm phát triển phần mềm để chỉnh sửa và thực hiện kiểmthử lại
Hoạt động cụ thể:
Thực hiện kiểm thử theo thứ tự kế hoạch
Trang 23 Làm tài liệu về kết quả kiểm thử, cập nhật lại các lỗi trong ca kiểm thử.
Kiểm thử lại các lỗi đã được chỉnh sửa
Kiểm tra để đóng lỗi
Tài liệu sử dụng:
Ca kiểm thử (Cập nhật kết quả)
Báo cáo lỗi
Đóng chu trình kiểm thử: Nhóm kiểm thử sẽ họp, thảo luận và phân tích
những bài học rút ra sau quá trình kiểm thử, đưa ra chiến lược cho những lần kiểm thử
kế tiếp hoặc chia sẻ kinh nghiệm cho những dự án tương tự
Hoạt động cụ thể:
Đánh giá việc hoàn thành quy trình kiểm thử dựa vào thời gian mức độbao phủ, chi phí và chất lượng
Chuẩn bị dữ liệu dựa vào các tiêu chí trên
Chuẩn bị báo cáo kết thúc kiểm thử
Báo cáo chất lượng sản phẩm cho khách hàng
Phân tích kết quả kiểm thử để tìm ra sự phân bố lỗi theo loại và mức độnghiêm trọng
Tài liệu sử dụng:
Báo cáo kết thúc kiểm thử
2.1.5 Phân loại kiểm thử phần mềm
Có 2 cách cơ bản để xác định các ca kiểm thử là kiểm thử tĩnh và kiểm thửđộng
Kiểm thử tĩnh: là một hình thức của kiểm thử phần mềm mà không cần
thực thi chương trình Điều này ngược với thử nghiệm động Công việc chủyếu là kiểm tra tính đúng đắn của mã lệnh, thuật toán hay tài liệu Đây làloại kiểm thử được thực hiện bởi lập trình viên Lỗi được phát hiện bằngkiểm thử tĩnh ít tốn kém để sửa chữa hơn so với lỗi phát hiện bằng kiểm thửđộng sẽ được đề cập dưới đây.Các lập trình viên có thể trao đổi mã nguồnchéo nhau hoặc làm việc một cách độc lập để thực hiện kiểm thử tĩnh
Kiểm thử động: Liên quan đến việc thực thi chương trình để phát hiện các
lỗi, thất bại có thể có của chương trình hay tìm ra các vấn đề về hiệu năng
Trang 24hệ thống Việc thực thi chương trình trên tất cả các dữ liệu đầu vào để thựcthi hay nói cách khác là sinh ra các ca kiểm thủ Trong kiểm thử động,người ta chi làm 2 kỹ thuật: kiểm thử hộp trắng (Kiểm thử cấu trúc) vàkiểm thử hộp đen (kiểm thử chức năng).
Kiểm thử hộp trắng: là kỹ thuật kiểm thử dựa vào thuật toán, cấu trúc
mã nguồn bên trong của chương trình với mục đích đảm bảo rẳng tất cảcác câu lệnh và điều kiện sẽ được thực hiện ít nhất một lần Người kiểmthử truy cập vào mã nguồn chương trình và kiểm tra nó, lấy nó làm cơ
sở để thực hiện việc kiểm thử Kiểm thử hộp trắng bao gồm các công cụ
cơ bản: Kiểm thử đường dẫn, kiểm thử luồng điều khiển, kiểm thử nội
bộ (xác nhận tham số, vòng lặp), kiểm thử tính năng (kiểm tra thời gian
xử lý, dữ liệu cụ thể) Tuy nhiên, việc kiểm thử hộp trắng tồn tại khánhiều hạn chế như: không thể đảm bảo rằng chương trình đã tuân theođặc tả khó phát hiện được lỗi do dữ liệu, thiếu đường dẫn,.v.v Như vậy,không thể chỉ sử dụng kiểm thử hộp trắng để kiểm thử chương trình
Kiểm thử hộp đen: là kỹ thuật kiểm thử dựa trên dầu vào và đầu ra của
chương trình mà không quan tâm tới mã nguồn bên trong được viết rasao Với kỹ thuật này, kiểm thử viên xem phần mềm là một hộp đen
Để thực hiện, kiểm thử viên sẽ xây dựng các nhóm giá trị đầu vào saocho chúng có thể thực hiện đầy đủ các chức năng cần có của chươngtrình Kiểm thử hộp đen sử dụng các phương pháp phân tích giá trịbiên, kiểm thử tính bền vững, kiểm thử trường hợp xấu nhất, kiểm thửphân lớp tương đương miền dữ liêụ đầu vào, đầu ra, kiểm thử giá trị đặcbiệt, kiểm thử dựa trên bảng quyết định.Tất cả các phương pháp trênđều dựa trên thông tin xác định về các thành phần đang được kiểm thử
2.1.6 Các mức độ nghiêm trọng của lỗi
Chương trình một khi đã xuất hiện lỗi điều kéo theo những hệ lụy nghiêmtrọng Một trong những cách phân loại mức độ nghiêm trọng của lỗi thường được sửdụng là lặp đi lặp lại nhiều lần Việc phân loại mức độ nghiêm trọng của lỗi sẽ giúpkiểm thử viên cũng như lập trình viên ý thức được đâu là lỗi cần được giải quyết trước,nhằm giảm thiểu tối đa những tổn thất về chi phí và nâng cao chất lượng cho sản phẩmphần mềm Các mức độ nghiêm trọng của lỗi dựa trên mức độ nghiêm trọng và hậu
Trang 25quả.
Trang 26Bảng 2.1 Bảng phân loại mức độ nghiêm trọng của lỗi
3 Khó chịu Tên bị thiếu, cụt chữ hoặc hóa đơn có giá trị 0.0 đồng
4 Bực mình Một vài giao dịch không được xử lý
5 Nghiêm trọng Mất giao dịch
6 Rất nghiêm trọng Xử lý giao dịch sai
7 Cực kỳ nghiêm trọng Lỗi rất nghiêm trọng thường xuyên xảy ra
10 Dịch họa Thảm họa chuyển sang mức lây lan
Ca kiểm thử là một khái niệm không thể thiếu trong kiểm thử phần mềm, cakiểm thử mô tả dữ liệu bao gồm: đầu vào, hành động hoặc sự kiện và kết quả đầu ramong đợi (expected results) để xác định liệu 1 ứng dụng, hệ thống phần mềm hoặc mộtrong các tính năng của nó có hoạt động đúng như mong muốn hay không
Cấu trúc của một ca kiểm thử thông thưởng bao gồm:
Test case ID: Xác định số lượng trường hợp cần kiểm thử
Function (Chức Năng): Các finction có thể được chia nhỏ dựa theo chức
năng của hệ thống nhằm giúp ca kiểm thử trở nên rõ ràng hơn
Pre-condition: Điều kiện đầu vào của ca kiểm thử, ví dụ như khi thực hiện
kiểm thử form đăng nhập, pre-condition sẽ là form đăng nhập phải đượchiển thị ra
Test Data: Dữ liệu đầu vào cần chuẩn bị trước khi kiểm thử.
Test Steps: Mô tả chi tiết các bước thực hiện kiểm thử.
Expected Results: Mô tả kết quả thực tế khi thực hiện kiểm thử trên môi
trường của hệ thống Actual Result thường bao gồm ba giá trị pass, fail vàpending
Comments: Có thể chứa screen shot hoặc thông tin liên quan khi thực hiện
ca kiểm thử
Một ca kiểm thử được cho là hiệu quả khi:
Dựa vào ca kiểm thử có thể tìm thấy lỗi
Tìm được nhiều lỗi khó phát hiện
Chỉ ra được những điểm ban đầu mà khi thực hiện kiểm thử (Test steps)đơn giản, minh bạc, dễ hiểu
Các trường hợp thử nghiệm nên có gí trị, tóm tắt và ngắn
Trang 27 Các trường hợp thử nghiệm nên có giá trị, tóm tắt và ngắn.
Các ca kiểm thử nên có sự liên kết Mỗi ca kiểm thử cần được đánh số thứ
tự (Test case ID) để đảm bảo ca kiểm thử đã bao phủ 100% bàn đặc tả yêucầu phần mềm
Ca kiểm thử có thể bảo trì: Nên viết ca kiểm thử sao cho khi có thay đổi,chỉnh sửa thì các bên liên quan có thể dễ dàng nhận thấy được sự thay đổiđó
Kiểm thử tự động là quá trình kiểm tra một hệ thống nào đó bằng các công cụ
tự động hóa dữ liệu đầu vào và đầu ra đã được xác định
Công việc kiểm thử chiếm từ 11% - 40% chi phí cho quá trình phát triển phầnmềm Hơn nữa, các dự án phần mềm đều mong muốn giảm chi phí về thời gian, nhânlực mà vẫn đem lại hiệu quả cao, chất lượng tốt Đó chính là lý do kiểm thử tự độngđược áp dụng rộng rãi trong các quy trình phát triển phần mềm ngày nay
Kiểm thử tự động đặc biệt phát huy tác dụng trong các trường hợp kiểm thử lặp
đi lặp lại, kiểm thử hồi quy hay các ca kiểm thử có giá trị dữ liệu đầu vào rất lớn khiếncho việc kiểm thử thủ công gặp nhiều khó khăn Đối với các trường hợp kiểm thử lặp
đi lặp lại, nếu thực hiện thủ công sẽ gây ra sự nhàm chán cho người kiểm thử, dẫn tớinăng suất lao động kém Đó là chưa kể tới việc lặp đi lặp lại quy trình một cách thủcông hoàn toàn có thể dẫn tới sai sót Ngược lại nếu thay bằng kiểm thử tự động, dù cólặp đi lặp lại bao nhiều lần thì cũng cho ra thao tác và kết quả chính xác Điều này giúpchúng ta tránh được những rủi ro không đáng có và giảm đáng kể thời gian cho việckiểm thử
Dù có rất nhiều ưu điểm về mặt thời gian thực thi nhưng kiểm thử tự động cũngkhông thể thay thế hoàn toàn quá trính kiểm thử của con người Để thực hiện kiểm thử
tự động, trước hết vẫn cần bàn tay của con người thiết lập thao tác cho công cụ hay cácđoạn kịch bản máy tính để thực thi Đối với những ca kiểm thử chỉ thực hiện số ít lần
Trang 28thì việc mất thời gian tạo kịch bản kiểm thử tự động là không cần thiết Chưa kể tớinhững ca kiểm thử với đặc thù riêng biệt mà kiểm thử tự động không làm được Thêmvào đó, không phải công cụ kiểm thử tự động nào cũng miễn phí và dễ sử dụng hayđưa vào triển khai rỗng rãi.
2.2 Các kỹ thuật xác định ca kiểm thử
Trong quá trình kiểm thử phần mềm sẽ nảy sinh vô số trường hợp cần phải xéttới Tuy nhiên, vì yếu tố chi phí, thời gian phát triển dự án người kiểm thử không thểtiến hành kiểm thử hết toàn bộ các giá trị đầu vào (Input) Lúc này, việc xác định tậpcác ca kiểm thử đặc trưng sẽ xây dựng sao cho có thể bao phủ được tối đa các trườnghợp là điều vô cùng cần thiết Phần này của đồ án đề cập tới một số kỹ thuật xác định
ca kiểm thử nhằm giải quyết vấn đề trên
2.2.1 Kỹ thuật phân vùng tương đương
Kỹ thuật phần vùng tương đương có đặc điểm là:
Chia miền dữ liệu đầu vào của một chương trình thành các vùng dữ liệutương đương nhau
Tất cả các giá trị trong một vùng tương đương sẽ cho ra kết quả đầu ragiống nhau
Có thể chọn ra một giá trị đại diện trong một vùng tương đương để tiếnhành kiểm thử
Hình 2.3 Minh họa kỹ thuật phân vùng tương đương
Việc thiết kế ca kiểm thử bằng kỹ thuật phân lớp tương đương dựa trên nguyên
tắc xác định số vùng tương đương hợp lệ và số vùng tương đương không hợp lệ.
Ví dụ: Trương hợp kiểm thử một ô textbox chỉ cho phép nhập vào số ký tựtrong khoảng [5-30] Áp dụng nguyên tắc xác định số vùng tương đương ta sẽ có các
ca kiểm thử sau:
Trang 29 Nhập vào một giá trị trong vùng tương đương không họp lệ thứ nhất: Nhập
4 ký tự
Nhập vào một giá trị trong vùng tương đương hợp lệ Nhập 6 ký tự
Nhập vào một giá trị trong vùng tương đương không hợp lệ thứ hai nhập 31
ký tự
Như vậy với kỹ thuật trên, kiểm thử viên đã rút ngắn được số ca kiểm thử cầnsinh ra so với việc kiểm thử toàn bộ các giá trị đầu vào
2.2.2 Kỹ thuật phân tích giá trị biên
Phân tích giá trị biên tập trung vào các giá trị tại biên của miền xác định để xâydựng ca kiểm thử Mục đích là tìm ra lỗi có thể xảy ra ở gần các giá trị biên này Phântích giá trị biên chính là trường hợp đặc biệt của kỹ thuật phân tích vùng tương đương.Dựa trên những vùng giá trị tương đương, kiểm thử viên sẽ xác định biên giữa nhữngvùng này và thiết kế ca kiểm thử phù hợp
Hình 2.4 Minh họa kỹ thuật phân tích giá trị biên
Với kỹ thuật phân tích giá trị biên, kiểm thử viên cần chú ý tới một số giá trịsau để sinh ca kiểm thử:
Giá trị nhỏ nhất
Giá trị gần kể lớn hơn giá trị nhỏ nhất
Giá trị gần kề nhỏ hơn giá trị nhỏ nhất
Giá trị bình thường
Giá trị gần kề nhỏ hơn giá trị lớn nhất
Giá trị lớn nhất
Giá trị gần kề lớn hơn giá trị lớn nhất
Ví dụ: Kiểm thử một textBox nhập tuổi cho nhập giá trị một trong khoảng 150] Vậy có thể sinh ra các ca kiểm thử cho trường hợp này theo kỹ thuật phân tíchbiên như sau:
[0- Giá trị nhỏ nhất: 0
Giá trị gần kể lớn hơn giá trị nhỏ nhất: 1
Trang 30 Giá trị gần kề nhỏ hơn giá trị nhỏ nhất: -1
Giá trị bình thường: 70
Giá trị gần kề nhỏ hơn giá trị lớn nhất: 149
Giá trị lớn nhất: 150
Giá trị gần kề lớn hơn giá trị lớn nhất: 151
Như vậy có thể thấy phân tích giá trị biên là kỹ thuật bổ sung cho kỹ thuật phânvùng tương đương, giúp kiểm thử viên sinh ca kiểm thử để kiểm tra các giá trị tại biên
Trong một số trường hợp, kiểm thử viên có thể kết hợp với lập trình viên để tìm
ra những trường hợp có thể bị bỏ sót trong quá trình viết đặc tả yêu cầu phần mềm vàlập trình
2.2.4 Kỹ thuật kiểm tra trạng thái
Kỹ thuật này dựa trên việc quan sát, theo dõi quá trình chuyển từ trạng thái nàysang trạng thái khác khi có một hành động xảy ra trong chương trình phần mềm đểphát hiện các lỗi có thể xảy ra mà các kỹ thuật trên có thể bỏ sót Ví dụ điển hình cho
kỹ thuật chuyển trạng thái là việc kiểm thử chức năng giỏ hàng trong các trang Webthương mại điện tử Lỗi có thể xuất hiện mỗi khi thêm sản phẩm vào giỏ hàng, xóa sảnphẩm giỏ hàng hay khi thanh toán các sản phẩm trong giỏ hàng đó Công việc củakiểm thử viên là xem xét các điều kiện trạng thái, theo dõi quá trình chuyển đổi giữacác trạng thái, điều kiện nhập đầu vào các sự kiện kích hoạt thay đổi trạng thái
2.3 Kết luận
Tóm lại, Chương 2 đã trình bày những khái niệm có cái nhìn tổng quát vềnhững vấn đề cơ bản xoay quanh phần mễm và kiểm thử phần mềm các vấn đề cụ thểbao gồm:
Các định nghĩa về phần mềm, kiểm thử phần mềm
Vai trò của kiểm thử trong quá trình phát triển dự án phần mềm
Các cấp độ trong kiểm thử phần mềm
Quy trình kiểm thử phần mềm
Trang 31 Phân loại kiểm thử phần mềm
Liệt kê các mức độ nghiệm trọng của lỗi
Tổng quan về ca kiểm thử
Vai trò của kiểm thử tự động trong kiểm thử phần mềm hiện nay
Trang 323 CHƯƠNG 3: KIỂM THỬ ỨNG DỤNG TRÊN NỀN WEB BẰNG CÔNG CỤ
SELENIUM 3.1 Công cụ kiểm thử tự động Selenium
3.1.1 Giới thiệu chung về Selenium
Selenium là một phần mềm mã nguồn mở - một công cụ kiểm thử phần mềm tựđộng để kiểm thử các ứng dụng trên nền Web Năm 2004, Selenium được phát triểnbởi ThoughtWorks với cái tên ban đầu là JavaScriptTestRunner Đến năm 2007, tácgiả Jason Huggins rời ThoughtWorks và gia nhập Selenium Team (thuộc Google), từ
đó tiếp tục phát triển Selenium như hiện nay
Selenium không chỉ là một công cụ duy nhất mà là một bộ các công cụ giúpkiểm thử tự động các ứng dụng trên nền Web hiệu quả hơn, bao gồm 4 phần: SeleniumIDE, Selenium RC, Selenium Grid, Selenium WenDriver
Selenium là một tập hợp mạnh mẽ của các công cụ hỗ trợ phát triển nhanhchóng của các thử nghiệm tự động hóa cho các ứng dụng dựa trên Web Seleniumcung cấp một tập phong phú các thử nghiệm chức năng đặc biệt hướng đến các nhucầ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, chophé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ế
Lợi ích của Selenium:
Hỗ trợ các trường hợp mà việc excute test lặp đi lặp lại
Hỗ trợ các trường hợp excute test một ma trận thử nghiệm lớn
Có thể thực hiện excute test song song
Có thể thực hiện excute 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 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 sosá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ênchúng ta hoàn toàn có thể yên tâm về sự hổ trợ miễn phí khi có vấn đề về
Trang 33Selenium 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,Bromien, Nunit
Selenium hỗ trợ chạy trên nhiều OS khác nhau với mức độ chỉnh sửa scripthầ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ăngviế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 tahoà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 takhô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ớiBrowser mà không hỗ trợ chúng ta làm việc với các Win app, kể cả Windialog 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 tacần một hay nhiều thư viện khác như AutoIt hay Coded UI
3.1.2 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 3.5 Các thành phần của Selenium
Selenium IDE: 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ệtFirefox add-on và cung cấp một giao diện dễ sử dụng để phát triển và chạytrường hợp kiểm thử cá nhân, bộ kiểm tra toàn bộ Selenium-IDE có một
Trang 34tính năng ghi lại, sẽ giữ Email 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ườnghợ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 chocá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
Selenium Webdriver: 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ụngmột framework cơ bản khác biệt trong khi Selenium RC sử dụng JavacriptSelenium-Core nhúng vào trong trình duyệt WebDriver tương tác trực tiếpvớ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 trongngữ 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 trang phức hợp
Điều hướng người dùng nâng cao như kéo-thả (drag-and-drop)
AJAX-based UI elements
Selenium RC (Remote Control):
Selenium RC là dự án Selenium chính trong một thời gian dài trước khiSelenium WebDriver (Selenium 2.0) ra đời Giờ đây Selenium RC hầunhư 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ụngRC
Selenium RC cho phép các nhà phát triển tự động hóa kiểm tra sử dụngmột ngôn ngữ lập trình cho tính linh hoạt tối đa và mở rộng trong việcphát triển logic thử nghiệm Ví dụ, nếu trình ứng dụng trả về một tậpkết quả của việc kiểm tra, và nếu chương trình thử nghiệm tự động cần
Trang 35chạy thử nghiệm trên mỗi phần tử trong tập hợp kết quả, hỗ trợ lặp đilặp lại các ngôn ngữ lập trình có thể được sử dụng để chuyển đổi thôngqua việc tập hợp kết quả, kêu gọi Selenium lệnh chạy thử nghiệm trênmỗi mục Khả năng sử dụng Selen-RC với một ngôn ngữ lập trình bậccao để 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 ứngdụ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áttriể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 Gird
Selenium Grid cho phép người dùng thực thi kiểm thử song song trên nhiềumáy tính khác nhau với nhiều trình duyệt khác nhau.Selenium Grid cho phép thực thikiểm thử với chế độ phân tán, sử dụng chung một code base Do đó, hard code khôngcầ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áckịch bản kiểm thử Có thể có nhiều Nodes trong một mô hình Grid CácNodes có thể được set up trên nhiều máy tính với nhiều trình duyệtkhác nhau
3.1.3 Hướng dẫn cài đặt Selenium
Trang 36Sau khi truy cập liên kết chỉ cần chọn thêm vào Chrome là được
Hình 3.6 Selenium IDE trên cửa hàng Chrome
3.1.3.2 Selenium Webdriver
Đối với Selenium Webdriver ta có thể cài bằng cách cài trực tiếp vào VisualStudio thông qua NuGet Truy cập vào NuGet Package Manager
Hình 3.7 Truy cập vào NuGet Package Manager trên Visual Studio
Tìm với từ khoá Selenium và chọn Selenium.WebDriver Sau đó chọn install
Trang 37Hình 3.8 Tìm kiếm và cài đặt Selenium WebDriver
Sau khi cài Selenium WebDriver Cần phải cài WebDriver cho trình duyệt, hiệntại Selenium hỗ trợ các trình duyệt chính như: Chrome, Firefox, Internet Explore (IE)
và Microsoft Egde
Có thể cài đặt trực tiếp qua NuGet như trên hoặc có thể tải về phiên bản phùhợp tại: https://chromedriver.chromium.org/downloads Và sử dụng bằng cách importvào trong code Ví dụ: để khởi tạo trong C# ta có thể viết:
IWebDriver driver = new ChromeDriver(@"C:\chromedriver_win32");
Trong đó "C:\chromedriver_win32" là thư mục gốc chứa driver
3.1.3.3 Selenium Grid
Để cài đặt Selenium Grid, ta cần tải file jar được cung cấp tại trang chủ củaSelenium: https://www.selenium.dev/downloads/
Hình 3.9 Trang chủ download Selenium Grid
Sau khi tải về, cần phải khởi tạo hub bằng command line