BỘ XÂY DỰNG
TRƯỜNG ĐẠI HỌC KIẾN TRÚC HÀ NỘI
-----oo0oo-----
BÁO CÁO
KIỂM THỬ PHẦN MỀM
Đề Tài:
NGHIÊN CỨU KIỂM THỬ TỰ ĐỘNG VỚI CÔNG CỤ SELENIUM
ỨNG DỤNG KIỂM THỬ HỆ THỐNG WEBSITE CHỢ TỐT
Nhóm sinh viên thực hiện:
Ngô Hiểu Vy – 20CN4
Tạ Quang Huy – 20CN4
Nguyễn Đăng Đạt – 20CN4
Nguyễn Năng Thành Trung – 20CN4
Giáo viên hướng dẫn: TS. Nguyễn Đăng Khoa
Hà Nội – 28/3/2024
LỜI CẢM ƠN
Dưới sự hướng dẫn tận tình của Thầy giáo hướng dẫn TS. Nguyễn Đăng Khoa,
nhóm em đã hoàn thành đề tài ứng dụngKiểm thử tự động với công cụ selenium
kiểm thử hệ thống website Chợ Tốt”.
Để hoàn thành bài tiểu luận này, nhóm chúng em xin chân thành cảm ơn tới Thầy
giáo hướng dẫn TS. Nguyễn Đăng Khoa đã tận tình hướng dẫn, giảng dạy trong suốt quá
trình học tập, nghiên cứu và rèn luyện ở trường Đại Học Kiến trúc Hà Nội.
Mặc dù đã có nhiều cố gắng để thực hiện đề tài một cách hoàn chỉnh nhất. Song do
thời gian hạn, trình độ hiểu biết kiến thức còn chưa cao cho nên trong bài tiểu luận
không thể tránh khỏi những thiếu sót, nhóm chúng em rất mong nhận được sự đóng góp ý
kiến của thầy và các bạn để có thể hoàn thiện bài tiểu luận này tốt hơn.
Em xin chân thành cảm ơn!
1
MỤC LỤC
DANH MỤC HÌNH VẼ...................................................................................................3
DANH MỤC BẢNG BIỂU..............................................................................................3
A. PHẦN MỞ ĐẦU.......................................................................................................4
B. PHẦN NỘI DUNG...................................................................................................5
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT............................................................................5
1.1 Phần mềm và các khái niệm liên quan...........................................................5
1.2 Tìm hiểu về kiểm thử phần mềm....................................................................6
1.3 Kiểm thử tự động...........................................................................................12
1.4 Kết luận..........................................................................................................16
CHƯƠNG 2. KIỂM THỬ WEBSITE......................................................................17
2.1 Khái quát về kiểm thử website........................................................................17
2.2 Các loại kiểm thử thực hiện trên nền Web.....................................................19
2.3 Một số công cụ hỗ trợ kiểm thử ứng dụng trên nền Web..............................22
2.4 Kết luận.............................................................................................................23
CHƯƠNG 3. CÔNG CỤ SELENIUM......................................................................24
3.1 Giới thiệu công cụ kiểm thử tự động Selenium..............................................24
3.2 Selenium IDE....................................................................................................25
CHƯƠNG 4. ỨNG DỤNG KIỂM THỬ WEBSITE CHỢ TỐT.............................33
4.1 Giới thiệu........................................................................................................33
4.2 Lên kế hoạch kiểm thử..................................................................................34
4.3 Thiết kế test case............................................................................................35
4.4 Thực hiện kiểm thử.......................................................................................47
4.5 Kết luận..........................................................................................................47
C. PHẦN KẾT LUẬN.................................................................................................49
TÀI LIỆU THAM KHẢO.........................................................................................51
2
DANH MỤC HÌNH VẼ
Hình 1. Hình minh họa kiểm thử hộp đen........................................................................10
Hình 2. Công cụ Selenium...............................................................................................25
Hình 3. Ttuy cập địa chỉ cài đặt công cụ Selenium..........................................................26
Hình 4. Tiến hành chọn phiên bản Selenium IDE để cài đặt............................................27
Hình 5. Thêm tiện ích Selenium IDE...............................................................................27
Hình 6. Xác nhận cài đặt tiện ích Selenium IDE vào trình duyệt.....................................28
Hình 7. Giao diện Selenium.............................................................................................28
Hình 8. Tạo dự án mới trong Selenium............................................................................29
Hình 9. Đặt tên cho dự án vừa tạo....................................................................................30
Hình 10. Chọn chế độ ghi một ca kiểm thử......................................................................30
Hình 11. Chèn liên kết cần kiểm thử................................................................................31
Hình 12. Hiện cửa sổ trang liên kế...................................................................................31
Hình 13. Dừng chế độ ghi................................................................................................32
Hình 14. Chạy các thao tác vừa ghi lại trên Selenium......................................................32
Hình 15. Lưu dự án..........................................................................................................33
Hình 16. Giao diện trang website Chợ Tốt.......................................................................34
DANH MỤC BẢNG BIỂU
Bảng 1. Các thuật ngữ liên quan trong kiểm thử phần mềm.............................................12
Bảng 2. Test case chức năng đăng ký...............................................................................39
Bảng 3. Test case chức năng đăng nhập...........................................................................42
Bảng 4. Test case chức năng tìm kiếm.............................................................................43
Bảng 5. Test case chức năng xem sản phẩm....................................................................45
Bảng 6. Test case kiểm tra tính tương thích trên các trình duyệt......................................46
Bảng 7. Test case kiểm tra tính bảo mật trên website.......................................................47
3
A. PHẦN MỞ ĐẦU
Tính cấp thiết của đề tài
Trong thời đại công nghệ 4.0 đang phát triển mạnh mẽ, ngành công nghệ thông
tin đã trở thành một trong những lĩnh vực quan trọng nhất. Sự bùng nổ của ngành
công nghiệp phần mềm trong vài thập kỷ qua đã tạo ra một nhu cầu ngày càng cao về
chất lượng sản phẩm phần mềm. Người tiêu dùng ngày càng phụ thuộc nhiều hơn vào
các ứng dụng phần mềm, do đó, yêu cầu về sự an toàn, tin cậy dễ sử dụng của
chúng ngày càng tăng cao.
Trong quy trình sản xuất phần mềm, kiểm thử đóng một vai trò không thể thiếu
để đảm bảo rằng sản phẩm cuối cùng đáp ứng được các tiêu chuẩn chất lượng u
cầu của người dùng. Công cụ kiểm thử như Selenium, được phát triển dựa trên
nguồn mở và miễn phí, đã trở thành một phần quan trọng trong quy trình này.
Selenium cùng với các công cụ hỗ trợ khác như Cucumber, TestLink, Jenkins,
Maven, Ant, cho phép kiểm thử viên phát triển các framework kiểm thử tự động
hóa việc chạy các kịch bản kiểm thử. Điều này giúp giảm thiểu tài nguyên tăng độ
tin cậy của quy trình kiểm thử. Selenium đặc biệt phù hợp cho việc kiểm thử các ứng
dụng web và được đánh giá là một trong những công cụ hiệu quả nhất trên thị trường.
Với mong muốn chia sẻ kiến thức kinh nghiệm, nhóm chúng em muốn giúp
mọi người hiểu hơn về quy trình kiểm thử ứng dụng website cách sử dụng công
cụ Selenium vào công việc kiểm thử đó.
Mục tiêu nghiên cứu
Nhóm chúng em thực hiện đề tài này nhằm hiểu hơn về kiểm thử phần mềm,
kiểm thử tự động s dụng Selenium trong kiểm thử ứng dụng web. Đồng thời,
chúng em muốn áp dụng các kiến thức đã được học để tối ưu hóa công việc, tiết kiệm
thời gian, nâng cao độ tin cậy giảm sự mệt mỏi cho kiểm thử viên, cũng như giảm
thiểu chi phí tổng thể của quy trình kiểm thử.
Đối tượng nghiên cứu
Hệ thống trang Website Chợ Tốt: https://www.chotot.com/
Phạm vi nghiên cứu
Đề tài nghiên cứu sẽ tập trung vào các khía cạnh: tìm hiểu về kiểm thử phần
mềm, tìm hiểu về công cụ Selenium IDE, thiết kế và triển khai các kịch bản kiểm thử
4
tự động, ứng dụng công cụ Selenium trong kiểm thử thực tế tại trang website Chợ
Tốt.
B. PHẦN NỘI DUNG
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT
1.1 Phần mềm và các khái niệm liên quan
1.1.1 Khái niệm phần mềm
Phần mềm thường được mô tả bởi ba thành phần cấu thành:
Tập các lệnh (chương trình máy tính) trên máy tính khi thực hiện sẽ tạo ra
các dịch vụ và đem lại những kết quả mong muốn cho người dùng.
Các cấu trúc dữ liệu (lưu giữ trên các bộ nhớ) làm cho chương trình thao
tác hiệu quả với các thông tin thích hợp và nội dung thông tin được số hóa.
Các tài liệu để tả thao tác, cách sử dụng bảo trì phần mềm (hướng
dẫn sử dụng, tài liệu kỹ thuật, tài liệu phân tích, thiết kế, kiểm thử, v.v.).
1.1.2 Các thuộc tính của phần mềm
Một phần mềm chất lượng được đánh giá từ chất lượng quy trình đến chất
lượng phần mềm nội bộ. Cụ thể chúng được đánh giá như sau:
Khả năng bảo trì: Bao gồm khả năng kiểm tra, nâng cấp, thay đổi phát
triển phần mềm cho phù hợp với yêu cầu, chức năng và môi trường.
Khả năng tin cậy: Việc kiểm tra giám sát độ tin cậy sẽ giảm thiểu lỗi
phần mềm như dừng hoạt động hoặc gây ảnh hưởng trực tiếp đến người
dùng.
Độ hữu hiệu: khả năng đáp ứng hiệu quả một cách thích hợp nhằm tiết
kiệm tài nguyên, tăng hiệu suất ứng dụng và khả năng mở rộng phần mềm.
Tính bảo mật an toàn: Tính bảo mật, an toàn bao gồm khảng bảo mật
dữ liệu người dùng, ngăn chặn các tấn công từ bên ngoài, kiểm soát vận
hành hệ thống.
Khảng sử dụng: Khả năng sử dụng liên quan đến mức độ dễ dàng của
người dùng để hoàn thành một tác vụ mong muốn và loại hỗ trợ người dùng
mà hệ thống cung cấp.
Tính dễ mở rộng: Khả năng mở rộng là một đặc tính của một hệ thống hoặc
ứng dụng cho biết khả năng của nó để tiếp tục hoạt động tốt trong điều kiện
khối lượng công việc đang tăng lên hoặc đang phát triển.
1.1.3 Các lỗi phần mềm
5
Lỗi phần mềm nhìn chung sự không khớp giữa chương trình đặ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:
Lỗi (Error): Là các vấn đề mà con người mắc phải trong quá trính xây dựng
phát triển phần mềm. các phần của đoạn không đúng một
phần hoặc toàn bộ như kết quả của lỗi ngữ pháp, lỗi logic,… sinh ra bởi nhà
phân tích hệ thống, lập trình viên, các thành viên khác của đội phát triển
phần mềm.
Sai (Fault): Sai kết quả của lỗi, các lỗi gây ra hoạt động không
chính xác của phần mềm trong một ứng dụng cụ thể.
Thất bại (Failure): Thất bại dễ thấy nhất khi một lỗi được thực thi. Chúng
thường xuất hiện dưới hai dạng: thất bại có thể chạy được (ví dụ như
nguồn) thất bại chỉ liên kết với các lỗi về nhiệm vụ. Ngoài ra, thể k
đến các thất bại liên quan tới các lỗi bỏ quên. Chúng ra 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ệc khảo
sát được thực hiện tốt.
Sự cố (Incident): Sự cố triệu chứng liên kết với một thất bại thể hiện
cho người dùng hoặc người kiểm thử về sự xuất hiện của thất bại này.
Thừa: Một số chức năng không trong đặc tả yêu cầu phần mềm nhưng
lạ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 khiến cho người sử dụng nghĩ rằng phần mềm đang hoạt động không đúng.
1.2 Tìm hiểu về kiểm thử phần mềm
1.2.1 Khái niệm kiểm thử phần mềm
Kiểm thử phần mềm (Software Testing) một cuộc kiểm tra được tiến
hành để cung cấp cho các bê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ử. Kiểm thử thể cung cấp cho doanh nghiệp một
quan điểm, một cách nhìn độc lập về phần mềm để từ đó cho phép đánh giá
thấu hiểu được những rủi ro trong quá trình triển khai phần mềm.
Kiểm thử phần mềm một quá trình thực thi một chương trình hoặc ứng
dụng với mục đích tìm ra lỗi phần mềm (Glen Myers).
Kiểm thử phần mềm cũng thể được phát biểu một quá trình xác minh
(validating) hoặc xác thực (verifying) xem một chương trình phần mềm, ứng dụng
6
hoặc sản phẩm đáp ứng các yêu cầu kinh doanh đặc tả theo bản thiết kế
phát triển và hoạt động như mong đợi.
1.2.2 Quy trình kiểm thử phần mềm
Quy trình kiểm thử phần mềm gồm sáu bước quan trọng để đảm bảo chất
lượng và độ tin cậy của sản phẩm cuối cùng:
Phân tích yêu cầu: Hiểu yêu cầu của phần mềm, xác định các chức năng
cần kiểm thử và lập kế hoạch cho các hoạt động kiểm thử tiếp theo.
Lập kế hoạch kiểm thử: Bước này tập trung vào việc xác định kế hoạch
kiểm thử chi tiết, bao gồm lịch trình, phân công nguồn lực, các tiêu chí
đánh giá chất lượng. Việc kiểm soát tiến độ nguồn lực cũng được thực
hiện chặt chẽ trong giai đoạn này.
Thiết kế kịch bản kiểm thử: Trong bước này, các kịch bản kiểm thử dữ
liệu kiểm thử được thiết kế để đảm bảo rằng tất cả các khía cạnh của phần
mềm được kiểm tra một cách toàn diện.
Thiết lập môi trường kiểm thử: Cài đặt cấu hình môi trường cần thiết để
thực hiện kiểm thử, bao gồm cài đặt phần mềm cần kiểm thử, các công cụ
kiểm thử cần thiết và cấu hình môi trường kiểm thử phù hợp với yêu cầu.
Thực hiện kiểm thử: Thực hiện các trường hợp kiểm thử đã được thiết kế,
ghi lại kết quả kiểm thử báo cáo lỗi thiếu sót cho nhóm phát triển
phần mềm.
Đóng chu trình kiểm thử: Cuối cùng, khi tất cả các vấn đề đã được giải
quyết sản phẩm đạt được chất lượng đủ, quy trình kiểm thử được đóng
lại. Các báo cáo tài liệu kiểm thử được lưu trữ để sử dụng cho các bản
cập nhật hoặc dự án tương lai.
1.2.3 Nguyên tắc kiểm thử
Nguyên tắc kiểm thử phần mềm gồm:
Kiểm thử chứng minh sự hiện diện của lỗi (Testing shows the presence of
defects): Quy trình kiểm thử không nhất thiết phát hiện tất cả các lỗi có thể
có trong phần mềm. Thay vào đó, nó tập trung vào việc chứng minh sự tồn
tại của các lỗi bằng cách tìm ra các trường hợp thử nghiệm có thể phát hiện
ra chúng.
Kiểm thử toàn bộ là không khả thi (Exhaustive testing is impossible): Với
số lượng kịch bản kiểm thử vô hạn, kiểm thử toàn bộ mọi khả năng trong
phần mềm là không khả thi. Thay vào đó, kiểm thử được tập trung vào việc
chọn ra các trường hợp kiểm thử đại diện để tối ưu hóa việc phát hiện lỗi
mà không cần phải kiểm tra mọi khả năng.
7
Kiểm thử càng sớm càng tốt (Early testing): Việc bắt đầu kiểm thử sớm
trong quy trình phát triển phần mềm giúp phát hiện và sửa chữa lỗi một
cách nhanh chóng và hiệu quả. Điều này giúp giảm thiểu chi phí và thời
gian cần thiết cho việc sửa lỗi sau này.
Lỗi thường phân bổ tập trung (Defects clustering): Trong quá trình kiểm
thử, các lỗi thường tập trung tại các vị trí hoặc tính năng cụ thể của phần
mềm thay vì phân bố đều khắp nơi. Điều này có thể cho thấy rằng có những
vùng chưa được kiểm thử kỹ lưỡng hoặc có vấn đề về quy trình phát triển.
Nghịch lý thuốc trừ sâu (Pesticide paradox): Nguyên tắc này ám chỉ rằng
việc sử dụng cùng một phương pháp kiểm thử liên tục có thể dẫn đến việc
bỏ qua các lỗi mới. Để tránh điều này, phải sử dụng một loạt các kỹ thuật
kiểm thử khác nhau để đảm bảo rằng cả các khía cạnh của phần mềm đều
được kiểm tra kỹ lưỡng.
Kiểm thử phụ thuộc vào ngữ cảnh (Testing is context): Hiệu suất của kiểm
thử phụ thuộc vào ngữ cảnh của dự án và môi trường làm việc. Các phương
pháp kiểm thử và kỹ thuật phải được điều chỉnh và tùy chỉnh để phù hợp
với điều kiện cụ thể của dự án, bao gồm yêu cầu, công nghệ và nguồn lực
có sẵn.
Quan niệm sai lầm về việc “hết lỗi” (Absence of errors fallacy): Mặc dù
kiểm thử có thể giúp phát hiện và sửa lỗi, nhưng không bao giờ có thể đảm
bảo rằng không có lỗi nào còn lại trong phần mềm. Quan niệm này là một
lời nhắc nhở rằng kiểm thử chỉ có thể giảm thiểu, chứ không thể loại bỏ
hoàn toàn rủi ro của các lỗi.
1.2.4 Các mức kiểm thử
Kiểm thử phần mềm một quá trình quan trọng để đảm bảo chất lượng
phần mềm. Việc áp dụng các mức kiểm thử phù hợp sẽ giúp phát hiện lỗi sớm,
nâng cao chất lượng độ tin cậy của phần mềm, đồng thời đảm bảo đáp ứng yêu
cầu của người dùng và doanh nghiệp.
Các mức kiểm thử phần mềm thông thường:
Kiểm thử mức đơn vị (Unit Test): Kiểm tra từng đơn vị, thành phần riêng lẻ
của phần mềm để đảm bảo hoạt động chính xác. Mục tiêu phát hiện lỗi
sớm, giúp sửa lỗi dễ dàng, tăng độ tin cậy bảo trì code, tạo nền tảng cho
các mức kiểm thử cao hơn.
Kiểm thử tích hợp (Integration Test): Kiểm tra cách các đơn vị, thành phần
được kết nối và tương tác với nhau. Mục tiêu là phát hiện lỗi giao diện giữa
các đơn vị, đảm bảo các đơn vị hoạt động phối hợp hiệu quả, tăng độ tin
cậy của hệ thống.
8
Kiểm thử mức hệ thống (System Test): Kiểm thử toàn bộ hệ thống phần
mềm để đảm bảo đáp ứng u cầu hoạt động ổn định. Mục tiêu phát
hiện lỗi hệ thống, đảm bảo hệ thống hoạt động ổn định, tăng cường sự tự tin
trước khi triển khai hệ thống, đảm bảo đáp ứng yêu cầu của người dùng
doanh nghiệp.
Kiểm thử chấp nhận (Acceptance Testing): Xác nhận mức độ mà phần mềm
đáp ứng được yêu cầu người dùng chức năng kinh doanh. Mục tiêu
đảm bảo hệ thống đáp ứng nhu cầu mong muốn của người dùng, thu
thập phản hồi từ người dùng để cải thiện hệ thống, cung cấp sở để quyết
định việc triển khai hệ thống.
1.2.5 Kiểm thử hộp đen
Kiểm thử hộp đen phương pháp kiểm thử phần mềm chức năng của
phần mềm được đưa vào xem xét. Tester thực hiện kiểm thử dựa trên đầu vào
đầu ra của chương trình không quan tâm tới code bên trong được viết ra sao.
Kiểu kiểm thử này được thực hiện hoàn toàn dựa trên bản đặc tả yêu cầu phần
mềm.
Hình 1. Hình minh họa kiểm thử hộp đen
1.2.4.1 Các bước kiểm thử hộp đen
Quá trình kiểm thử hộp đen trong 4 bước:
Lập kế hoạch test: Phân tích yêu cầu, xác định phạm vi, tài nguyên, công cụ
kiểm thử và phân công người thực hiện test.
Thiết kế Test Case: Dựa trên kế hoạch, viết test case với thông tin đầy đủ
về dữ liệu đầu vào, kết quả mong đợi và hành động kiểm tra.
Thực hiện kiểm thử: Thực hiện kiểm thử dựa trên test case, ghi nhận lỗi
thông báo cho nhà phát triển để khắc phục, sau đó kiểm tra lại chức năng.
Báo cáo kết quả Test: Tạo báo cáo về số lượng test case đã hoàn thành, lỗi
đã phát hiện và đã khắc phục, cũng như thời gian thực hiện.
1.2.4.2 Các loại kiểm thử hộp đen
9
Có rất nhiều loại trong phương pháp kiểm thử hộp đen , dưới đây là một vài
phương pháp nổi bật:
Kiểm thử chức năng: Liên quan đến các yêu cầu chức năng của hệ thống,
được thực hiện bởi kỹ sư kiểm thử phần mềm.
Kiểm thử phi chức ng: Bao gồm kiểm thử hiệu suất, kiểm thử khả năng
mở rộng, và kiểm thử tính khả dụng.
Kiểm thử hồi quy: Xác minh rằng phần mềm vẫn hoạt động chính xác sau
khi bị thay đổi hoặc giao tiếp với các phần mềm khác.
1.2.4.3 Các công cụ kiểm thử hộp đen
Với kiểm thử chức năng hoặc kiểm thử hồi quy, chúng ta thể sử dụng
QTP, Selenium.
Còn với kiểm thử phi chức năng, chúng ta thể sử dụng LoadRunner,
Jmeter.
1.2.4.4 Các kỹ thuật kiểm thử hộp đen
Trong phương pháp kiểm thử hộp đen, có 4 phương pháp quan trọng và phổ
biến nhất:
Phân vùng tương đương: Chia các giá trị đầu vào thành các vùng tương đương
hợp lệ và không hợp lệ, sau đó chọn một số giá trị đại diện để test.
Phân tích giá trị biên: Chọn các giá trị biên để kiểm tra, bao gồm giá trị lớn
nhất, nhỏ nhất, lớn nhất + 1, nhỏ nhất - 1, và giá trị bình thường.
Bảng quyết định: Liệt các điều kiện đầu vào, tính số trường hợp kết hợp,
xây dựng bảng quyết định để chọn testcase.
Đoán lỗi: Tìm lỗi dựa trên kinh nghiệm của người kiểm thử, không tuân theo
quy luật cụ thể.
Đây là những phương pháp quan trọng giúp kiểm thử hộp đen hiệu quả.
1.2.6 Các thuật ngữ liên quan trong kiểm thử phần mềm
Thuật ngữ Ý nghĩa
Test Plan Kế hoạch kiểm thử: tài liệu kế hoạch test bao gồm bản
tả các mục tiêu, phạm vi, phương pháp tiếp cận, tập trung
vào nỗ lực kiểm thử phần mềm
Test Case Trường hợp kiểm thử: Test case tả một dữ liệu đầu vào
(input), hành động (action) một kết quả mong đợi (expected
10
response), để xác định một chức năng của ứng dụng phần mềm
hoạt động đúng hay không.
Testing Execution Thực hiện kiểm thử: trực tiếp trên ứng dụng phần mềm
QA Giám sát, quản lý đảm bảo chất lượng
QC Kiểm soat chất lượng sản phẩm
Defect/ Bug Các lỗi
Priority Độ ưu tiên
Severity Độ nghiêm trọng
Verification Xác minh là đảm bảo phần mềm thực hiện đúng đặc tả yêu cầu,
có đúng thiết kế hay không, phát hiện lỗi lập trình
Validation Xác nhận quá trình đánh giá một hệ thống hay cấu phần
trong hay cuối của quá trình phát triển để xác định xem đáp
ứng yêu cầu quy định
Functional testing Kiểm thử chức năng
Non- Functionl Kiểm thử phi chức năng
Bảng 1. Các thuật ngữ liên quan trong kiểm thử phần mềm
1.2.7 Mục đích của kiểm thử phần mềm
Mục đích của kiểm thử phần mềm tìm ra lỗi phần mềm càng sớm càng
tốt nhằm giúp tiết kiệm chi phí và thời gian sửa chữa. Kiểm thử giúp đảm bảo rằng
sản phẩm phần mềm đáp ứng được các yêu cầu mong đợi của người dùng một
cách đáng tin cậy và hiệu quả.
Kiểm thử giúp xác nhận tính chính xác, tính đầy đủ tính ổn định của
phần mềm, từ đó giảm thiểu rủi ro về lỗi vấn đề kỹ thuật khi sản phẩm được
triển khai và sử dụng trong môi trường thực tế.
Ngoài ra, kiểm thử cũng giúp cải thiện chất lượng phần mềm bằng cách
phát hiện và loại bỏ các lỗi, hạn chế scố vàng tính ổn định của ứng dụng. Qua
đó, việc kiểm thử cũng đóng vai trò quan trọng trong việc xây dựng niềm tin và uy
tín từ phía người dùng đối với sản phẩm phần mềm.
11
1.3 Kiểm thử tự động
1.3.1 Khái niệm kiểm thử tự động
Kiểm thử tự động quá trình thực hiện một cách tự động các bước trong
một kịch bản kiểm thử.
Kiểm thử tự động một kỹ thuật tự động trong đó người kiểm thử tự viết
các tập lệnh sử dụng phần mềm phù hợp để kiểm thử phần mềm. về bản
một quá trình tự động hóa của một quy trình kiểm thử thủ công. Giống như
kiểm thử quy hồi, kiểm thử tự động cũng được sử dụng để kiểm thử ứng dụng theo
quan điểm tải, hiệu năng và ứng suất.
Kiểm thử tự động giúp giảm chi phí kiểm thử bằng cách hỗ trợ quá trình
kiểm thử thông quan các công cụ phần mềm. còn giúp các kỹ kiểm thử
(tester) không phải lặp đi lặp lại các bước nhàm chán.
1.3.2 Quy trình kiểm thử tự động
Quy trình kiểm thử tự động bao gồm: tester sử dụng các kịch bản tự động
(automation scripts) thực thi các script để chạy ứng dụng với sự giúp sức của
các automation tool. Một khi script đã sẵn sàng thì việc thực thi kiểm thử thể
diễn ra nhanh chóng và hiệu quả.
Các hoạt động của kiểm thử tự động:
Phân tích yêu cầu/ Xác định môi trường/ công cụ.
Xác định tiêu chí đầu ra.
Lên kế hoạch và kiểm soát.
Thiết lập môi trường kiểm thử.
Triển khai thiết kế kiểm thử.
Thực thi kiểm thử.
Phân tích, báo cáo.
1.3.3 Ưu điểm và nhược điểm của kiểm thử tự động
1.3.3.1 Ưu điểm
Độ tin cậy: Công cụ kiểm thử tự động mang lại tính ổn định cao hơn so với
con người. Đặc biệt, trong những trường hợp nhiều test case nên độ tin cậy
của kiểm thử sẽ đạt mức tối ưu hơn so với kiểm thử thủ công.
Khả năng lặp lại: Với những công cụ kiểm thử tự động sẽ ra đời nhiều các
tester không phải trải qua quá trình lặp lại nhiều thao tác giảm được sự
nhàm chán cũng như độ tin cậy cao và ổn định.
12
Khả năng tái sử dụng: Đây chính một bộ kiểm thử tự động được nhiều
người sử dụng với nhiều những phiên bản khác nhau được gọi tái sử
dụng.
Tốc độ cao: với tốc độ kiểm thử nhanh hơn so với tốc độ của con người.
Những thực thi của một test case một cách thủ công thể hoàn thành hay
thực thi trong thời gian ngắn nhất một cách tự động.
Chi phí thấp: chi phí sử dụng kiểm thử tự động khá hấp dẫn phù hợp
thể tiết kiệm được nhiều chi phí cũng như thời gian nhân lực. Do quá trình
kiểm thử nhanh hơn thử thủ công nên nhân lực sẽ được thực thi bảo trì
không nhiều.
1.3.3.2 Nhược điểm
Khó bảo trì mở rộng: Trong một dự án để thể mở rộng được phạm vi
kiểm thử tự động sẽ khá khó so với những kiểm thử thủ công quá trình
cập nhật chỉnh sửa theo những yêu cầu của Debug, thay đổi dữ liệu, cập
nhật code mới.
Khả năng bao phủ kém: Do mở rộng nên sự đòi hỏi kỹ năng lập trình rất
cần thiết khá cầu kỳ để phủ sóng được những kiểm thử tự động thấp xét
trên nhiều góc nhìn toàn diện.
1.3.4 Các công cụ hỗ trợ kiểm thử tự động
Một số công cụ kiểm thử tự động phổ biến hiện nay:
Selenium: một công cụ kiểm tra phần mềm được sử dụng để kiểm tra hồi
quy (Regression Testing). Đây một công ckiểm tra nguồn mở cung
cấp chức năng phát lại thu âm để kiểm tra hồi quy. Selenium cung cấp
các điều khoản để xuất khẩu ghi lại kịch bản trong các ngôn ngữ khác như
Java, Ruby, Rspec, Python, C#, Junit và TestNG. Nó có thể thực hiện nhiều
bộ kiểm thử cùng một lúc, xác định phần tử sử dụng id, tên, đường dẫn, ...
lưu trữ các bộ kiểm thử như Ruby Script, HTML bất kỳ định dạng nào
khác.
QTP (HP UFT): QTP được sử dụng rộng rãi để kiểm tra chức năng
(Functional Testing) hồi quy (Regression Testing), giải quyết các ứng
dụng phần mềm môi trường. Để đơn giản hóa việc tạo bảo trì thử
nghiệm, nó sử dụng khái niệm kiểm tra từ khóa. QTP được sử dụng dễ dàng
hơn dành cho người kiểm thử viên không theo ngành kỹ thuật để thích ứng
và tạo ra các trường hợp thử nghiệm làm việc. QTP sửa lỗi nhanh hơn bằng
cách ghi lại sao chép các lỗi cho nhà phát triển, thu gọn tài liệu thử
13
nghiệm tại một trang web QTP hỗ trợ môi trường phát triển .NET,
chế xác định đối tượng kiểm thử tốt.
Rational Function Tester: là một công cụ kiểm tra tự động hướng đối tượng
khả năng tự động kiểm tra dữ liệu, kiểm tra giao diện, kiểm thử hồi
quy (Regression Testing). Phần mềm hỗ trợ một loạt các giao thức ứng
dụng như Java, HTML, NET, Windows, SAP, Visual Basic ... thể ghi
lại và phát lại các hành động theo yêu cầu. Tích hợp tốt với công cụ quản lý
kiểm soát nguồn như Rational Clear Case tích hợp Rational Team
Concert. Cho phép các nhà phát triển tạo ra các kịch bản liên quan đến từ
khóa để thể được tái sử dụng. Bộ biên tập Công cụ Java Developer
Toolkit của Eclipse tạo điều kiện cho nhóm tạo mã thử nghiệm các đoạn mã
trong Java với Eclipse.
WATIR: một phần mềm kiểm tra nguồn mở để kiểm thử hồi
quy( Regression Testing). Watir chỉ hỗ trợ khám phá Internet trên các cửa
sổ trong khi Watir webdriver hỗ trợ Chrome, Firefox, IE, Opera. Hỗ trợ
nhiều trình duyệt trên các nền tảng khác nhau, sử dụng một ngôn ngữ kịch
bản hiện đại có đầy đủ tínhng, hỗ trợ ứng dụng web được viết bởi bất kỳ
ngôn ngữ nào, cho phép bạn viết các test case dễ đọc và bảo trì
1.3.5 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 số trường hợp cần phải
xét tới. Tuy nhiên, yếu tố chi phí, thời gian phát triển dự án nê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ập các ca kiểm thử đặc trưng sẽ xây dựng sao cho thể bao phủ được
tối đa các trường hợp điều cùng cần thiết. Phần này của đồ án sẽ đề 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 đề kể trên.
1.3.5.1 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ệu
tươ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 ra
giống nhau.
thể chọn ra một giá trị đại diện trong một vùng tương đương để tiến
hành kiểm thử.
14
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ệ số vùng tương đương không
hợp lệ.
dụ, trường hợp kiểm thử một ô textbox chỉ cho phép nhập vào số 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 ca kiểm thử sau:
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ần sinh ra so với việc phải kiểm thử toàn bộ các giá trị đầu vào.
1.3.5.2 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ây dựng ca kiểm thử. Mục đích tìm ra lỗi thể xảy ra gần các giá trị biên
này. Phân tích giá trị biên chính trường hợp đặc biệt của kỹ thuật phân 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
giá trị biên giữa những vùng này và thiết kế ca kiểm thử phù hợp.
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
15
dụ: Kiểm thử một textbox nhập tuổi cho phép nhập giá trị số trong
khoảng [0 - 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ích giá trị biên như sau:
Giá trị nhỏ nhất: 0
Giá trị gần kề lớn hơn giá trị nhỏ nhất: 1
Giá trị gần kề lớn 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, thể thấy phân tích giá trị biên kỹ thuật bổ sung cho kỹ thuật
phân vù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.
1.3.5.3 Đoán lỗi
Một kỹ thuật thiết kế ca kiểm thử khác đoán lỗi. Kiểm thử viên phỏng
đoán lỗi dựa trên trực giác kinh nghiệm của mình, từ đó liệt các trường hợp
có thể xảy ra lỗi và sinh ca kiểm thử. Khó có thể đưa ra một quy trình cho kỹ thuật
kiểm thử đoán lỗi vì nó có tính trực giác cao và không thể dự đoán trước.
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 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.
1.3.5.4 Chuyển 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ày sang trạng thái khác khi 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 thể xảy ra các kỹ thuật trên thể bỏ sót. dụ
điển hình cho kỹ thuật chuyển trạng thái việc kiểm thử chức năng giỏ hàng
trong các trang Web thương mại điện tử. Lỗi thể xuất hiện mỗi khi thêm sản
phẩm vào giỏ hàng, xóa sản phẩm khỏi giỏ hàng hay khi thanh toán các sản phẩm
trong giỏ hàng đó. Công việc của kiểm thử viên xem xét các điều kiện trạng
thái, theo dõi quá trình chuyển đổi giữa cá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.
1.4 Kết luận
16
Chương 1 đã trình bày những khái niệm để cái nhìn tổng quát về những
vấn đề bản xoay quanh phần mềm 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ử phần mềm trong quá trinh phát triển dự án phần mềm.
Quy trình và nguyên tắc kiểm thử phần mềm.
Các mức độ kiểm thử trong kiểm thử phần mềm.
Các thuật ngữ sử dụng trong kiểm thử phần mềm.
Các mức trong kiểm thử phần mềm.
Kiểm thử tự động.
Các công cụ hỗ trợ kiểm thử tự động.
Một số kỹ thuật xác định ca kiểm thử.
Như vậy, hầu hết các loại kiểm thử đều tốn nhiều thời gian do thực hiện các
thử nghiệm liên tục. Các kiểm tra không thành công sẽ chạy liên tục cho đến khi
khắc phục được tất cả các sự cố. Nhóm kiểm thử phần mềm yêu cầu nhiều thành
viên dẫn đến tăng chi phí của phần mềm ngân sách. Nếu nâng cao phạm vi
tăng thời lượng vòng đời phát triển của phần mềm thì cần tốn nhiều chi phí và thời
gian hơn nữa. Do đó một trong các mục tiêu của kiểm thử là tự động hóa kiểm thử,
nhờ đó giảm thiểu chi phí rất nhiều, tối thiểu hóa các lỗi do người gây ra, đặc
biệt giúp việc kiểm thử hồi qui dễ dàng và nhanh chóng hơn.
CHƯƠNG 2. KIỂM THỬ WEBSITE
2.1 Khái quát về kiểm thử website
2.1.1 Khái quát
Khi mạng Internet ngày càng phát triển, môi trường mạng đem đến nhiều
cơ hội kinh doanh, tiếp cận khách hàng thì hiểu nhiên việc thiết kế website các
ứng dụng chạy trên nền Web cần thiết để chiếm lĩnh thị trường. Các ứng dụng
Web phát triển đóng vai trò to lớn trong việc kết nối, trao đổi thông tin của
nhiều doanh nghiệp.
Muốn được sự thành công trên, trước hết các ứng dụng chạy trên nền
Web phải có chất lượng tốt, hiệu năng cao, chưa kể tới các yếu tố về giao diện, trải
nghiệm người dùng,…Ngoài ra, chúng ta đều biết ứng dụng trên nền Web
những đặc thù khác biệt hoàn toàn so với ứng dụng di động, ứng dụng desktop,…
Ứng dụng trên nền Web không giới hạn chỉ điện thoại thông minh, máy tính hay
máy tính bảng, được thiết kế để chạy trên nhiều nền tảng khác nhau. Mỗi nền
tảng lại những yêu cầu riêng về cấu hình, độ phân giải, đặc thù thao tác,…Đó
17
chính là những vấn đề lớn đặt ra cho các nhà phát triển phần mềm trong việc đảm
bảo chất lượng cho các ứng dụng trên nền Web khi phải chạy trên đa nền tảng.
thế cần phải đưa ra một chiến lược hiệu quả cho kiểm thử, tránh những rủi ro,
nâng cao chất lượng cho ứng dụng Web.
2.1.2 Các loại ứng dụng Web
Ứng dụng Web tĩnh: loại ứng dụng Web hiển thị ít nội dụng không
tính linh hoạt. Ứng dụng Web tĩnh thường chỉ xây dựng từ HTML, CSS
Javascript. Do không có cơ sở dữ liệu và công cụ điều khiển nội dung gián tiếp
nên người quản trị không thể tùy ý thay đổi nội dung cần kiến thức về
HTML, CSS bản để chỉnh sửa. Điểm cộng của website này nội dung đơn
giản, không mất nhiều thời gian, công sức để xây dựng do không phải xử
những câu lệnh phức tạp. Tuy nhiên, do không hệ thống hỗ trợ thay đổi nội
dung nên việc cập nhật thông tin cho website gặp rất nhiều khó khăn, thậm chí
phải bỏ ra chi phí lớn khi thay đổi nhiều lần. Một số dụ cho Web tĩnh
những trang giới thiệu công ty, tổ chức, sản phẩm, khóa học ít nhu cầu cập
nhật thông tin,…
Ứng dụng Web động: So với nhiều web tĩnh thì web động phức tạp hơn về mặt
kỹ thuật khi xây dựng. Web động s dụng sở dữ liệu để hiển thị nội dung
cũng như cho phép người dùng tương tác được với nội dung đó. Web động
được chia làm 2 phần back-end (dành cho người quản trị Web thay đổi, cập
nhật nội dung) front-end (dành cho người dùng truy cập). Hiện nay rất
nhiều ngôn ngữ lập trình để xây dựng Web động như Java, PHP, ASP.NET,
VB.NET, Ruby, …Đối với Web động, việc cập nhật nội dung rất đơn giản,
dễ dàng. Không những thế, một số hệ thống lớn hiện nay còn cho phép người
quản trị thể thay đổi giao diện Web trên trang quản trị không cần phải
can thiệp trực tiếp vào mã nguồn. Đó là những lý do khiến cho Web động được
sử dụng phổ biến hơn Web tĩnh.
2.1.3 Chất lượng của một ứng dụng trên nền Web
Trước đây, kiểm thử phần mềm thường chỉ liên quan đến ứng dụng
desktop, nhưng hiện nay, đã mở rộng sang nhiều nền tảng khác nhau bao gồm
cả ứng dụng trên điện thoại thông minh, máy tính bảng ứng dụng chạy trên nền
Web. Mỗi loại ứng dụng đặc điểm riêng, đòi hỏi các phương pháp kiểm thử
khác nhau.
Ứng dụng trên nền Web thường phải thích nghi với nhiều trình duyệt khác
nhau, gây ra những thách thức trong việc đảm bảo tính tương thích. Với lượng truy
18
cập lớn, kiểm thử hiệu năng độ ổn định của ứng dụng rất quan trọng. Sự phụ
thuộc vào tốc độ và ổn định của đường truyền Internet cũng cần được xem xét.
Ngoài ra, việc tối ưu SEO (Search Engine Optimization) - quy trình tối ưu
hóa website cũng trở thành một phần không thể thiếu trong kiểm thử ứng dụng
Web, đặc biệt là để đảm bảo ứng dụng có thứ hạng cao trên các máy tìm kiếm như
Google.
2.2 Các loại kiểm thử thực hiện trên nền Web
2.2.1 Kiểm thử chức năng
Kiểm thử chức năng yêu cầu kiểm thử viên thực hiện kiểm thử tất cả các
link trong trang Web, định dạng được sử dụng trong các trang Web để gửi và nhận
thông tin cần thiết từ người dùng. Ngoài ra còn thể kết nối sở dữ liệu, kiểm
tra cookie và xác minh HTML/ CSS, …
Kiểm thử giao diện: Trước khi lập trình viên bắt tay vào xây dựng mã nguồn sẽ
luôn có một bản thiết kế UI quy định giao diện của ứng dụng Web. Mỗi thành
phần textbox, button, image, link bố cục trên các ứng dụng Web đều được
chỉ ra một cách cụ thể trong tài liệu này. Bản thiết kế UI thường sẽ kèm theo
file. PSD bản vẽ giao diện của ứng dụng Web s dụng phần mềm photoshop
để lập trình viên dễ dàng xây dựng cũng như khách ng thể biết trước ứng
dụng của mình sẽ hiển thị ra sao.
Kiểm thử các liên kết menu: Trong một ứng dụng Web hai loại liên kết:
liên kết nội bộ (Internal Link) liên kết ngoại bộ (External Link). Cả 2 loại
liên kết trên đều cần kiểm tra xem chúng hoạt động không? trỏ đến địa
chỉ mong muốn không? Cần đảm bảo rằng các liên kết không tự trỏ đến vị trí
của chính nó.
Kiểm thử các form nhập dữ liệu: Cần đảm bảo các trường nhập dữ liệu được
thiết kế đúng kiểu loại, bộ lọc kiểm tra tính đúng đắn của dữ liệu nhập vào
trước khi gửi đi tránh việc hacker thể tận dụng lỗ hổng SQL Injection từ
chính các form đăng nhập liệu trên ứng dụng Web.
Kiểm thử lỗi pháp HTML/CSS: bước tiếp theo, người kiểm thử cần xác
định các thẻ CSS bị lỗi hoặc các thuộc tính, id, class được viết trong thẻ HTML
không hợp lệ hoặc không thuộc bất kỳ thẻ CSS nào.
Kiểm thử cookie session: Kiểm thử các ứng dụng đăng nhập trong phiên
bằng cách cho phép hiệu hóa các tập tin cookie. thể thử đưa lỗi vào
ứng dụng Web bằng cách sử dụng môt tên miền không phù hợp như cố tình
truyền sai, thiếu tham số,…
19

Preview text:

BỘ XÂY DỰNG
TRƯỜNG ĐẠI HỌC KIẾN TRÚC HÀ NỘI -----oo0oo----- BÁO CÁO
KIỂM THỬ PHẦN MỀM Đề Tài:
NGHIÊN CỨU KIỂM THỬ TỰ ĐỘNG VỚI CÔNG CỤ SELENIUM
ỨNG DỤNG KIỂM THỬ HỆ THỐNG WEBSITE CHỢ TỐT
Nhóm sinh viên thực hiện: Ngô Hiểu Vy – 20CN4 Tạ Quang Huy – 20CN4
Nguyễn Đăng Đạt – 20CN4
Nguyễn Năng Thành Trung – 20CN4
Giáo viên hướng dẫn: TS. Nguyễn Đăng Khoa Hà Nội – 28/3/2024 LỜI CẢM ƠN
Dưới sự hướng dẫn tận tình của Thầy giáo hướng dẫn TS. Nguyễn Đăng Khoa,
nhóm em đã hoàn thành đề tài “Kiểm thử tự động với công cụ selenium ứng dụng
kiểm thử hệ thống website Chợ Tốt”.
Để hoàn thành bài tiểu luận này, nhóm chúng em xin chân thành cảm ơn tới Thầy
giáo hướng dẫn TS. Nguyễn Đăng Khoa đã tận tình hướng dẫn, giảng dạy trong suốt quá
trình học tập, nghiên cứu và rèn luyện ở trường Đại Học Kiến trúc Hà Nội.
Mặc dù đã có nhiều cố gắng để thực hiện đề tài một cách hoàn chỉnh nhất. Song do
thời gian có hạn, trình độ hiểu biết và kiến thức còn chưa cao cho nên trong bài tiểu luận
không thể tránh khỏi những thiếu sót, nhóm chúng em rất mong nhận được sự đóng góp ý
kiến của thầy và các bạn để có thể hoàn thiện bài tiểu luận này tốt hơn. Em xin chân thành cảm ơn! 1 MỤC LỤC
DANH MỤC HÌNH VẼ...................................................................................................3
DANH MỤC BẢNG BIỂU..............................................................................................3
A. PHẦN MỞ ĐẦU.......................................................................................................4
B. PHẦN NỘI DUNG...................................................................................................5
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT............................................................................5
1.1 Phần mềm và các khái niệm liên quan...........................................................5
1.2 Tìm hiểu về kiểm thử phần mềm....................................................................6
1.3 Kiểm thử tự động...........................................................................................12
1.4 Kết luận..........................................................................................................16
CHƯƠNG 2. KIỂM THỬ WEBSITE......................................................................17
2.1 Khái quát về kiểm thử website........................................................................17
2.2 Các loại kiểm thử thực hiện trên nền Web.....................................................19
2.3 Một số công cụ hỗ trợ kiểm thử ứng dụng trên nền Web..............................22
2.4 Kết luận.............................................................................................................23
CHƯƠNG 3. CÔNG CỤ SELENIUM......................................................................24
3.1 Giới thiệu công cụ kiểm thử tự động Selenium..............................................24
3.2 Selenium IDE....................................................................................................25
CHƯƠNG 4. ỨNG DỤNG KIỂM THỬ WEBSITE CHỢ TỐT.............................33
4.1 Giới thiệu........................................................................................................33
4.2 Lên kế hoạch kiểm thử..................................................................................34
4.3 Thiết kế test case............................................................................................35
4.4 Thực hiện kiểm thử.......................................................................................47
4.5 Kết luận..........................................................................................................47
C. PHẦN KẾT LUẬN.................................................................................................49
TÀI LIỆU THAM KHẢO.........................................................................................51 2 DANH MỤC HÌNH VẼ
Hình 1. Hình minh họa kiểm thử hộp đen........................................................................10
Hình 2. Công cụ Selenium...............................................................................................25
Hình 3. Ttuy cập địa chỉ cài đặt công cụ Selenium..........................................................26
Hình 4. Tiến hành chọn phiên bản Selenium IDE để cài đặt............................................27
Hình 5. Thêm tiện ích Selenium IDE...............................................................................27
Hình 6. Xác nhận cài đặt tiện ích Selenium IDE vào trình duyệt.....................................28
Hình 7. Giao diện Selenium.............................................................................................28
Hình 8. Tạo dự án mới trong Selenium............................................................................29
Hình 9. Đặt tên cho dự án vừa tạo....................................................................................30
Hình 10. Chọn chế độ ghi một ca kiểm thử......................................................................30
Hình 11. Chèn liên kết cần kiểm thử................................................................................31
Hình 12. Hiện cửa sổ trang liên kế...................................................................................31
Hình 13. Dừng chế độ ghi................................................................................................32
Hình 14. Chạy các thao tác vừa ghi lại trên Selenium......................................................32
Hình 15. Lưu dự án..........................................................................................................33
Hình 16. Giao diện trang website Chợ Tốt.......................................................................34
DANH MỤC BẢNG BIỂU
Bảng 1. Các thuật ngữ liên quan trong kiểm thử phần mềm.............................................12
Bảng 2. Test case chức năng đăng ký...............................................................................39
Bảng 3. Test case chức năng đăng nhập...........................................................................42
Bảng 4. Test case chức năng tìm kiếm.............................................................................43
Bảng 5. Test case chức năng xem sản phẩm....................................................................45
Bảng 6. Test case kiểm tra tính tương thích trên các trình duyệt......................................46
Bảng 7. Test case kiểm tra tính bảo mật trên website.......................................................47 3 A. PHẦN MỞ ĐẦU
Tính cấp thiết của đề tài
Trong thời đại công nghệ 4.0 đang phát triển mạnh mẽ, ngành công nghệ thông
tin đã trở thành một trong những lĩnh vực quan trọng nhất. Sự bùng nổ của ngành
công nghiệp phần mềm trong vài thập kỷ qua đã tạo ra một nhu cầu ngày càng cao về
chất lượng sản phẩm phần mềm. Người tiêu dùng ngày càng phụ thuộc nhiều hơn vào
các ứng dụng phần mềm, do đó, yêu cầu về sự an toàn, tin cậy và dễ sử dụng của chúng ngày càng tăng cao.
Trong quy trình sản xuất phần mềm, kiểm thử đóng một vai trò không thể thiếu
để đảm bảo rằng sản phẩm cuối cùng đáp ứng được các tiêu chuẩn chất lượng và yêu
cầu của người dùng. Công cụ kiểm thử như Selenium, được phát triển dựa trên mã
nguồn mở và miễn phí, đã trở thành một phần quan trọng trong quy trình này.
Selenium cùng với các công cụ hỗ trợ khác như Cucumber, TestLink, Jenkins,
Maven, Ant, cho phép kiểm thử viên phát triển các framework kiểm thử và tự động
hóa việc chạy các kịch bản kiểm thử. Điều này giúp giảm thiểu tài nguyên và tăng độ
tin cậy của quy trình kiểm thử. Selenium đặc biệt phù hợp cho việc kiểm thử các ứng
dụng web và được đánh giá là một trong những công cụ hiệu quả nhất trên thị trường.
Với mong muốn chia sẻ kiến thức và kinh nghiệm, nhóm chúng em muốn giúp
mọi người hiểu rõ hơn về quy trình kiểm thử ứng dụng website và cách sử dụng công
cụ Selenium vào công việc kiểm thử đó.
Mục tiêu nghiên cứu
Nhóm chúng em thực hiện đề tài này nhằm hiểu rõ hơn về kiểm thử phần mềm,
kiểm thử tự động và sử dụng Selenium trong kiểm thử ứng dụng web. Đồng thời,
chúng em muốn áp dụng các kiến thức đã được học để tối ưu hóa công việc, tiết kiệm
thời gian, nâng cao độ tin cậy và giảm sự mệt mỏi cho kiểm thử viên, cũng như giảm
thiểu chi phí tổng thể của quy trình kiểm thử.
Đối tượng nghiên cứu
Hệ thống trang Website Chợ Tốt: https://www.chotot.com/ Phạm vi nghiên cứu
Đề tài nghiên cứu sẽ tập trung vào các khía cạnh: tìm hiểu về kiểm thử phần
mềm, tìm hiểu về công cụ Selenium IDE, thiết kế và triển khai các kịch bản kiểm thử 4
tự động, ứng dụng công cụ Selenium trong kiểm thử thực tế tại trang website Chợ Tốt. B. PHẦN NỘI DUNG
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT
1.1 Phần mềm và các khái niệm liên quan
1.1.1 Khái niệm phần mềm
Phần mềm thường được mô tả bởi ba thành phần cấu thành:
Tập các lệnh (chương trình máy tính) trên máy tính khi thực hiện sẽ tạo ra
các dịch vụ và đem lại những kết quả mong muốn cho người dùng.
Các cấu trúc dữ liệu (lưu giữ trên các bộ nhớ) làm cho chương trình thao
tác hiệu quả với các thông tin thích hợp và nội dung thông tin được số hóa.
Các tài liệu để mô tả thao tác, cách sử dụng và bảo trì phần mềm (hướng
dẫn sử dụng, tài liệu kỹ thuật, tài liệu phân tích, thiết kế, kiểm thử, v.v.).
1.1.2 Các thuộc tính của phần mềm
Một phần mềm chất lượng được đánh giá từ chất lượng quy trình đến chất
lượng phần mềm nội bộ. Cụ thể chúng được đánh giá như sau:
Khả năng bảo trì: Bao gồm khả năng kiểm tra, nâng cấp, thay đổi và phát
triển phần mềm cho phù hợp với yêu cầu, chức năng và môi trường.
Khả năng tin cậy: Việc kiểm tra và giám sát độ tin cậy sẽ giảm thiểu lỗi
phần mềm như dừng hoạt động hoặc gây ảnh hưởng trực tiếp đến người dùng.
Độ hữu hiệu: Là khả năng đáp ứng hiệu quả một cách thích hợp nhằm tiết
kiệm tài nguyên, tăng hiệu suất ứng dụng và khả năng mở rộng phần mềm.
Tính bảo mật và an toàn: Tính bảo mật, an toàn bao gồm khả năng bảo mật
dữ liệu người dùng, ngăn chặn các tấn công từ bên ngoài, kiểm soát vận hành hệ thống.
Khả năng sử dụng: Khả năng sử dụng liên quan đến mức độ dễ dàng của
người dùng để hoàn thành một tác vụ mong muốn và loại hỗ trợ người dùng mà hệ thống cung cấp.
Tính dễ mở rộng: Khả năng mở rộng là một đặc tính của một hệ thống hoặc
ứng dụng cho biết khả năng của nó để tiếp tục hoạt động tốt trong điều kiện
khối lượng công việc đang tăng lên hoặc đang phát triển.
1.1.3 Các lỗi phần mềm 5
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:
Lỗi (Error): Là các vấn đề mà con người mắc phải trong quá trính xây dựng
và phát triển phần mềm. Là các phần của đoạn mã mà không đúng một
phần hoặc toàn bộ như kết quả của lỗi ngữ pháp, lỗi logic,… sinh ra bởi nhà
phân tích hệ thống, lập trình viên, các thành viên khác của đội phát triển phần mềm.
Sai (Fault): Sai là kết quả của lỗi, là các lỗi mà nó gây ra hoạt động không
chính xác của phần mềm trong một ứng dụng cụ thể.
Thất bại (Failure): Thất bại dễ thấy nhất khi một lỗi được thực thi. Chúng
thường xuất hiện dưới hai 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ể kể
đến các thất bại liên quan tới các lỗi bỏ quên. Chúng ra 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ệc khảo
sát được thực hiện tốt.
Sự cố (Incident): Sự cố là triệu chứng liên kết với một thất bại và thể hiện
cho người dùng hoặc người kiểm thử về sự xuất hiện của thất bại này.
Thừa: Một số chức năng không có trong đặc tả yêu cầu phần mềm nhưng
lạ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 khiến cho người sử dụng nghĩ rằng phần mềm đang hoạt động không đúng.
1.2 Tìm hiểu về kiểm thử phần mềm
1.2.1 Khái niệm kiểm thử phần mềm
Kiểm thử phần mềm (Software Testing) là một cuộc kiểm tra được tiến
hành để cung cấp cho các bê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ử. Kiểm thử có thể cung cấp cho doanh nghiệp một
quan điểm, một cách nhìn độc lập về phần mềm để từ đó cho phép đánh giá và
thấu hiểu được những rủi ro trong quá trình triển khai phần mềm.
Kiểm thử phần mềm là một quá trình thực thi một chương trình hoặc ứng
dụng với mục đích tìm ra lỗi phần mềm (Glen Myers).
Kiểm thử phần mềm cũng có thể được phát biểu là một quá trình xác minh
(validating) hoặc xác thực (verifying) xem một chương trình phần mềm, ứng dụng 6
hoặc sản phẩm có đáp ứng các yêu cầu kinh doanh và đặc tả theo bản thiết kế và
phát triển và hoạt động như mong đợi.
1.2.2 Quy trình kiểm thử phần mềm
Quy trình kiểm thử phần mềm gồm sáu bước quan trọng để đảm bảo chất
lượng và độ tin cậy của sản phẩm cuối cùng:
Phân tích yêu cầu: Hiểu rõ yêu cầu của phần mềm, xác định các chức năng
cần kiểm thử và lập kế hoạch cho các hoạt động kiểm thử tiếp theo.
Lập kế hoạch kiểm thử: Bước này tập trung vào việc xác định kế hoạch
kiểm thử chi tiết, bao gồm lịch trình, phân công nguồn lực, và các tiêu chí
đánh giá chất lượng. Việc kiểm soát tiến độ và nguồn lực cũng được thực
hiện chặt chẽ trong giai đoạn này.
Thiết kế kịch bản kiểm thử: Trong bước này, các kịch bản kiểm thử và dữ
liệu kiểm thử được thiết kế để đảm bảo rằng tất cả các khía cạnh của phần
mềm được kiểm tra một cách toàn diện.
Thiết lập môi trường kiểm thử: Cài đặt và cấu hình môi trường cần thiết để
thực hiện kiểm thử, bao gồm cài đặt phần mềm cần kiểm thử, các công cụ
kiểm thử cần thiết và cấu hình môi trường kiểm thử phù hợp với yêu cầu.
Thực hiện kiểm thử: Thực hiện các trường hợp kiểm thử đã được thiết kế,
ghi lại kết quả kiểm thử và báo cáo lỗi và thiếu sót cho nhóm phát triển phần mềm.
Đóng chu trình kiểm thử: Cuối cùng, khi tất cả các vấn đề đã được giải
quyết và sản phẩm đạt được chất lượng đủ, quy trình kiểm thử được đóng
lại. Các báo cáo và tài liệu kiểm thử được lưu trữ để sử dụng cho các bản
cập nhật hoặc dự án tương lai.
1.2.3 Nguyên tắc kiểm thử
Nguyên tắc kiểm thử phần mềm gồm:
Kiểm thử chứng minh sự hiện diện của lỗi (Testing shows the presence of
defects): Quy trình kiểm thử không nhất thiết phát hiện tất cả các lỗi có thể
có trong phần mềm. Thay vào đó, nó tập trung vào việc chứng minh sự tồn
tại của các lỗi bằng cách tìm ra các trường hợp thử nghiệm có thể phát hiện ra chúng.
Kiểm thử toàn bộ là không khả thi (Exhaustive testing is impossible): Với
số lượng kịch bản kiểm thử vô hạn, kiểm thử toàn bộ mọi khả năng trong
phần mềm là không khả thi. Thay vào đó, kiểm thử được tập trung vào việc
chọn ra các trường hợp kiểm thử đại diện để tối ưu hóa việc phát hiện lỗi
mà không cần phải kiểm tra mọi khả năng. 7
Kiểm thử càng sớm càng tốt (Early testing): Việc bắt đầu kiểm thử sớm
trong quy trình phát triển phần mềm giúp phát hiện và sửa chữa lỗi một
cách nhanh chóng và hiệu quả. Điều này giúp giảm thiểu chi phí và thời
gian cần thiết cho việc sửa lỗi sau này.
Lỗi thường phân bổ tập trung (Defects clustering): Trong quá trình kiểm
thử, các lỗi thường tập trung tại các vị trí hoặc tính năng cụ thể của phần
mềm thay vì phân bố đều khắp nơi. Điều này có thể cho thấy rằng có những
vùng chưa được kiểm thử kỹ lưỡng hoặc có vấn đề về quy trình phát triển.
Nghịch lý thuốc trừ sâu (Pesticide paradox): Nguyên tắc này ám chỉ rằng
việc sử dụng cùng một phương pháp kiểm thử liên tục có thể dẫn đến việc
bỏ qua các lỗi mới. Để tránh điều này, phải sử dụng một loạt các kỹ thuật
kiểm thử khác nhau để đảm bảo rằng cả các khía cạnh của phần mềm đều
được kiểm tra kỹ lưỡng.
Kiểm thử phụ thuộc vào ngữ cảnh (Testing is context): Hiệu suất của kiểm
thử phụ thuộc vào ngữ cảnh của dự án và môi trường làm việc. Các phương
pháp kiểm thử và kỹ thuật phải được điều chỉnh và tùy chỉnh để phù hợp
với điều kiện cụ thể của dự án, bao gồm yêu cầu, công nghệ và nguồn lực có sẵn.
Quan niệm sai lầm về việc “hết lỗi” (Absence of errors fallacy): Mặc dù
kiểm thử có thể giúp phát hiện và sửa lỗi, nhưng không bao giờ có thể đảm
bảo rằng không có lỗi nào còn lại trong phần mềm. Quan niệm này là một
lời nhắc nhở rằng kiểm thử chỉ có thể giảm thiểu, chứ không thể loại bỏ
hoàn toàn rủi ro của các lỗi.
1.2.4 Các mức kiểm thử
Kiểm thử phần mềm là một quá trình quan trọng để đảm bảo chất lượng
phần mềm. Việc áp dụng các mức kiểm thử phù hợp sẽ giúp phát hiện lỗi sớm,
nâng cao chất lượng và độ tin cậy của phần mềm, đồng thời đảm bảo đáp ứng yêu
cầu của người dùng và doanh nghiệp.
Các mức kiểm thử phần mềm thông thường:
Kiểm thử mức đơn vị (Unit Test): Kiểm tra từng đơn vị, thành phần riêng lẻ
của phần mềm để đảm bảo hoạt động chính xác. Mục tiêu là phát hiện lỗi
sớm, giúp sửa lỗi dễ dàng, tăng độ tin cậy và bảo trì code, tạo nền tảng cho
các mức kiểm thử cao hơn.
Kiểm thử tích hợp (Integration Test): Kiểm tra cách các đơn vị, thành phần
được kết nối và tương tác với nhau. Mục tiêu là phát hiện lỗi giao diện giữa
các đơn vị, đảm bảo các đơn vị hoạt động phối hợp hiệu quả, tăng độ tin cậy của hệ thống. 8
 Kiểm thử mức hệ thống (System Test): Kiểm thử toàn bộ hệ thống phần
mềm để đảm bảo đáp ứng yêu cầu và hoạt động ổn định. Mục tiêu là phát
hiện lỗi hệ thống, đảm bảo hệ thống hoạt động ổn định, tăng cường sự tự tin
trước khi triển khai hệ thống, đảm bảo đáp ứng yêu cầu của người dùng và doanh nghiệp.
Kiểm thử chấp nhận (Acceptance Testing): Xác nhận mức độ mà phần mềm
đáp ứng được yêu cầu người dùng và chức năng kinh doanh. Mục tiêu là
đảm bảo hệ thống đáp ứng nhu cầu và mong muốn của người dùng, thu
thập phản hồi từ người dùng để cải thiện hệ thống, cung cấp cơ sở để quyết
định việc triển khai hệ thống.
1.2.5 Kiểm thử hộp đen
Kiểm thử hộp đen là phương pháp kiểm thử phần mềm mà chức năng của
phần mềm được đưa vào xem xét. Tester thực hiện kiểm thử dựa trên đầu vào và
đầu ra của chương trình mà không quan tâm tới code bên trong được viết ra sao.
Kiểu kiểm thử này được thực hiện hoàn toàn dựa trên bản đặc tả yêu cầu phần mềm.
Hình 1. Hình minh họa kiểm thử hộp đen
1.2.4.1 Các bước kiểm thử hộp đen
Quá trình kiểm thử hộp đen trong 4 bước:
Lập kế hoạch test: Phân tích yêu cầu, xác định phạm vi, tài nguyên, công cụ
kiểm thử và phân công người thực hiện test.
Thiết kế Test Case: Dựa trên kế hoạch, viết test case với thông tin đầy đủ
về dữ liệu đầu vào, kết quả mong đợi và hành động kiểm tra.
Thực hiện kiểm thử: Thực hiện kiểm thử dựa trên test case, ghi nhận lỗi và
thông báo cho nhà phát triển để khắc phục, sau đó kiểm tra lại chức năng.
Báo cáo kết quả Test: Tạo báo cáo về số lượng test case đã hoàn thành, lỗi
đã phát hiện và đã khắc phục, cũng như thời gian thực hiện.
1.2.4.2 Các loại kiểm thử hộp đen 9
Có rất nhiều loại trong phương pháp kiểm thử hộp đen , dưới đây là một vài phương pháp nổi bật:
Kiểm thử chức năng: Liên quan đến các yêu cầu chức năng của hệ thống,
được thực hiện bởi kỹ sư kiểm thử phần mềm.
Kiểm thử phi chức năng: Bao gồm kiểm thử hiệu suất, kiểm thử khả năng
mở rộng, và kiểm thử tính khả dụng.
Kiểm thử hồi quy: Xác minh rằng phần mềm vẫn hoạt động chính xác sau
khi bị thay đổi hoặc giao tiếp với các phần mềm khác.
1.2.4.3 Các công cụ kiểm thử hộp đen
Với kiểm thử chức năng hoặc kiểm thử hồi quy, chúng ta có thể sử dụng QTP, Selenium.
Còn với kiểm thử phi chức năng, chúng ta có thể sử dụng LoadRunner, Jmeter.
1.2.4.4 Các kỹ thuật kiểm thử hộp đen
Trong phương pháp kiểm thử hộp đen, có 4 phương pháp quan trọng và phổ biến nhất:
Phân vùng tương đương: Chia các giá trị đầu vào thành các vùng tương đương
hợp lệ và không hợp lệ, sau đó chọn một số giá trị đại diện để test.
Phân tích giá trị biên: Chọn các giá trị biên để kiểm tra, bao gồm giá trị lớn
nhất, nhỏ nhất, lớn nhất + 1, nhỏ nhất - 1, và giá trị bình thường.
Bảng quyết định: Liệt kê các điều kiện đầu vào, tính số trường hợp kết hợp, và
xây dựng bảng quyết định để chọn testcase.
Đoán lỗi: Tìm lỗi dựa trên kinh nghiệm của người kiểm thử, không tuân theo quy luật cụ thể.
Đây là những phương pháp quan trọng giúp kiểm thử hộp đen hiệu quả.
1.2.6 Các thuật ngữ liên quan trong kiểm thử phần mềm Thuật ngữ Ý nghĩa Test Plan
Kế hoạch kiểm thử: Là tài liệu kế hoạch test bao gồm bản mô
tả các mục tiêu, phạm vi, phương pháp tiếp cận, và tập trung
vào nỗ lực kiểm thử phần mềm Test Case
Trường hợp kiểm thử: Test case mô tả một dữ liệu đầu vào
(input), hành động (action) và một kết quả mong đợi (expected 10
response), để xác định một chức năng của ứng dụng phần mềm
hoạt động đúng hay không. Testing Execution
Thực hiện kiểm thử: trực tiếp trên ứng dụng phần mềm QA
Giám sát, quản lý đảm bảo chất lượng QC
Kiểm soat chất lượng sản phẩm Defect/ Bug Các lỗi Priority Độ ưu tiên Severity Độ nghiêm trọng Verification
Xác minh là đảm bảo phần mềm thực hiện đúng đặc tả yêu cầu,
có đúng thiết kế hay không, phát hiện lỗi lập trình Validation
Xác nhận là quá trình đánh giá một hệ thống hay cấu phần
trong hay cuối của quá trình phát triển để xác định xem nó đáp ứng yêu cầu quy định Functional testing Kiểm thử chức năng Non- Functionl Kiểm thử phi chức năng
Bảng 1. Các thuật ngữ liên quan trong kiểm thử phần mềm
1.2.7 Mục đích của kiểm thử phần mềm
Mục đích của kiểm thử phần mềm là tìm ra lỗi phần mềm càng sớm càng
tốt nhằm giúp tiết kiệm chi phí và thời gian sửa chữa. Kiểm thử giúp đảm bảo rằng
sản phẩm phần mềm đáp ứng được các yêu cầu và mong đợi của người dùng một
cách đáng tin cậy và hiệu quả.
Kiểm thử giúp xác nhận tính chính xác, tính đầy đủ và tính ổn định của
phần mềm, từ đó giảm thiểu rủi ro về lỗi và vấn đề kỹ thuật khi sản phẩm được
triển khai và sử dụng trong môi trường thực tế.
Ngoài ra, kiểm thử cũng giúp cải thiện chất lượng phần mềm bằng cách
phát hiện và loại bỏ các lỗi, hạn chế sự cố và tăng tính ổn định của ứng dụng. Qua
đó, việc kiểm thử cũng đóng vai trò quan trọng trong việc xây dựng niềm tin và uy
tín từ phía người dùng đối với sản phẩm phần mềm. 11
1.3 Kiểm thử tự động
1.3.1 Khái niệm kiểm thử tự động
Kiểm thử tự động là quá trình thực hiện một cách tự động các bước trong
một kịch bản kiểm thử.
Kiểm thử tự động là một kỹ thuật tự động trong đó người kiểm thử tự viết
các tập lệnh và sử dụng phần mềm phù hợp để kiểm thử phần mềm. Nó về cơ bản
là một quá trình tự động hóa của một quy trình kiểm thử thủ công. Giống như
kiểm thử quy hồi, kiểm thử tự động cũng được sử dụng để kiểm thử ứng dụng theo
quan điểm tải, hiệu năng và ứng suất.
Kiểm thử tự động giúp giảm chi phí kiểm thử bằng cách hỗ trợ quá trình
kiểm thử thông quan các công cụ phần mềm. Nó còn giúp các kỹ sư kiểm thử
(tester) không phải lặp đi lặp lại các bước nhàm chán.
1.3.2 Quy trình kiểm thử tự động
Quy trình kiểm thử tự động bao gồm: tester sử dụng các kịch bản tự động
(automation scripts) và thực thi các script để chạy ứng dụng với sự giúp sức của
các automation tool. Một khi script đã sẵn sàng thì việc thực thi kiểm thử có thể
diễn ra nhanh chóng và hiệu quả.
Các hoạt động của kiểm thử tự động:
Phân tích yêu cầu/ Xác định môi trường/ công cụ.
Xác định tiêu chí đầu ra.
Lên kế hoạch và kiểm soát.
Thiết lập môi trường kiểm thử.
Triển khai thiết kế kiểm thử. Thực thi kiểm thử. Phân tích, báo cáo.
1.3.3 Ưu điểm và nhược điểm của kiểm thử tự động 1.3.3.1 Ưu điểm
Độ tin cậy: Công cụ kiểm thử tự động mang lại tính ổn định cao hơn so với
con người. Đặc biệt, trong những trường hợp nhiều test case nên độ tin cậy
của kiểm thử sẽ đạt mức tối ưu hơn so với kiểm thử thủ công.
Khả năng lặp lại: Với những công cụ kiểm thử tự động sẽ ra đời nhiều các
tester không phải trải qua quá trình lặp lại nhiều thao tác giảm được sự
nhàm chán cũng như độ tin cậy cao và ổn định. 12
Khả năng tái sử dụng: Đây chính là một bộ kiểm thử tự động được nhiều
người sử dụng với nhiều những phiên bản khác nhau và được gọi là tái sử dụng.
Tốc độ cao: với tốc độ kiểm thử nhanh hơn so với tốc độ của con người.
Những thực thi của một test case một cách thủ công có thể hoàn thành hay
thực thi trong thời gian ngắn nhất một cách tự động.
Chi phí thấp: chi phí sử dụng kiểm thử tự động khá hấp dẫn và phù hợp có
thể tiết kiệm được nhiều chi phí cũng như thời gian nhân lực. Do quá trình
kiểm thử nhanh hơn thử thủ công nên nhân lực sẽ được thực thi và bảo trì không nhiều.
1.3.3.2 Nhược điểm
Khó bảo trì và mở rộng: Trong một dự án để có thể mở rộng được phạm vi
kiểm thử tự động sẽ khá khó so với những kiểm thử thủ công vì quá trình
cập nhật và chỉnh sửa theo những yêu cầu của Debug, thay đổi dữ liệu, cập nhật code mới.
Khả năng bao phủ kém: Do mở rộng nên sự đòi hỏi kỹ năng lập trình là rất
cần thiết và khá cầu kỳ để phủ sóng được những kiểm thử tự động thấp xét
trên nhiều góc nhìn toàn diện.
1.3.4 Các công cụ hỗ trợ kiểm thử tự động
Một số công cụ kiểm thử tự động phổ biến hiện nay:
Selenium: là một công cụ kiểm tra phần mềm được sử dụng để kiểm tra hồi
quy (Regression Testing). Đây là một công cụ kiểm tra mã nguồn mở cung
cấp chức năng phát lại và thu âm để kiểm tra hồi quy. Selenium cung cấp
các điều khoản để xuất khẩu ghi lại kịch bản trong các ngôn ngữ khác như
Java, Ruby, Rspec, Python, C#, Junit và TestNG. Nó có thể thực hiện nhiều
bộ kiểm thử cùng một lúc, xác định phần tử sử dụng id, tên, đường dẫn, ...
lưu trữ các bộ kiểm thử như Ruby Script, HTML và bất kỳ định dạng nào khác.
QTP (HP UFT): QTP được sử dụng rộng rãi để kiểm tra chức năng
(Functional Testing) và hồi quy (Regression Testing), giải quyết các ứng
dụng phần mềm và môi trường. Để đơn giản hóa việc tạo và bảo trì thử
nghiệm, nó sử dụng khái niệm kiểm tra từ khóa. QTP được sử dụng dễ dàng
hơn dành cho người kiểm thử viên không theo ngành kỹ thuật để thích ứng
và tạo ra các trường hợp thử nghiệm làm việc. QTP sửa lỗi nhanh hơn bằng
cách ghi lại và sao chép các lỗi cho nhà phát triển, thu gọn tài liệu thử 13
nghiệm tại một trang web QTP hỗ trợ môi trường phát triển .NET, có cơ
chế xác định đối tượng kiểm thử tốt.
Rational Function Tester: là một công cụ kiểm tra tự động hướng đối tượng
có khả năng tự động kiểm tra dữ liệu, kiểm tra giao diện, và kiểm thử hồi
quy (Regression Testing). Phần mềm hỗ trợ một loạt các giao thức và ứng
dụng như Java, HTML, NET, Windows, SAP, Visual Basic ... Có thể ghi
lại và phát lại các hành động theo yêu cầu. Tích hợp tốt với công cụ quản lý
kiểm soát nguồn như Rational Clear Case và tích hợp Rational Team
Concert. Cho phép các nhà phát triển tạo ra các kịch bản liên quan đến từ
khóa để có thể được tái sử dụng. Bộ biên tập Công cụ Java Developer
Toolkit của Eclipse tạo điều kiện cho nhóm tạo mã thử nghiệm các đoạn mã trong Java với Eclipse.
WATIR: Là một phần mềm kiểm tra mã nguồn mở để kiểm thử hồi
quy( Regression Testing). Watir chỉ hỗ trợ khám phá Internet trên các cửa
sổ trong khi Watir webdriver hỗ trợ Chrome, Firefox, IE, Opera. Hỗ trợ
nhiều trình duyệt trên các nền tảng khác nhau, sử dụng một ngôn ngữ kịch
bản hiện đại có đầy đủ tính năng, hỗ trợ ứng dụng web được viết bởi bất kỳ
ngôn ngữ nào, cho phép bạn viết các test case dễ đọc và bảo trì
1.3.5 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ét tới. Tuy nhiên, vì yếu tố chi phí, thời gian phát triển dự án nê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ập cá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ường hợp là điều vô cùng cần thiết. Phần này của đồ án sẽ đề 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 đề kể trên.
1.3.5.1 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ệu tươ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 ra giống nhau.
Có thể chọn ra một giá trị đại diện trong một vùng tương đương để tiến hành kiểm thử. 14
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:
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ần sinh ra so với việc phải kiểm thử toàn bộ các giá trị đầu vào.
1.3.5.2 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ây dự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ân tích giá trị biên chính là trường hợp đặc biệt của kỹ thuật phân 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
giá trị biên giữa những vùng này và thiết kế ca kiểm thử phù hợp.
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 15
Ví dụ: Kiểm thử một textbox nhập tuổi cho phép nhập giá trị số trong
khoảng [0 - 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ích giá trị biên như sau: Giá trị nhỏ nhất: 0
Giá trị gần kề lớn hơn giá trị nhỏ nhất: 1
Giá trị gần kề lớn 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ân vù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. 1.3.5.3 Đoán lỗi
Một kỹ thuật thiết kế ca kiểm thử khác là đoán lỗi. Kiểm thử viên phỏng
đoán lỗi dựa trên trực giác và kinh nghiệm của mình, từ đó liệt kê các trường hợp
có thể xảy ra lỗi và sinh ca kiểm thử. Khó có thể đưa ra một quy trình cho kỹ thuật
kiểm thử đoán lỗi vì nó có tính trực giác cao và không thể dự đoán trước.
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.
1.3.5.4 Chuyển 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ày sang 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 Web thươ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ản phẩm khỏi giỏ hàng hay khi thanh toán các sản phẩm
trong giỏ hàng đó. Công việc của kiể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ữa các trạng thái, điều kiện nhập đầu vào và
các sự kiện kích hoạt thay đổi trạng thái. 1.4 Kết luận 16
Chương 1 đã 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ử phần mềm trong quá trinh phát triển dự án phần mềm.
Quy trình và nguyên tắc kiểm thử phần mềm.
Các mức độ kiểm thử trong kiểm thử phần mềm.
Các thuật ngữ sử dụng trong kiểm thử phần mềm.
Các mức trong kiểm thử phần mềm. Kiểm thử tự động.
Các công cụ hỗ trợ kiểm thử tự động.
Một số kỹ thuật xác định ca kiểm thử.
Như vậy, hầu hết các loại kiểm thử đều tốn nhiều thời gian do thực hiện các
thử nghiệm liên tục. Các kiểm tra không thành công sẽ chạy liên tục cho đến khi
khắc phục được tất cả các sự cố. Nhóm kiểm thử phần mềm yêu cầu nhiều thành
viên dẫn đến tăng chi phí của phần mềm và ngân sách. Nếu nâng cao phạm vi và
tăng thời lượng vòng đời phát triển của phần mềm thì cần tốn nhiều chi phí và thời
gian hơn nữa. Do đó một trong các mục tiêu của kiểm thử là tự động hóa kiểm thử,
nhờ đó mà giảm thiểu chi phí rất nhiều, tối thiểu hóa các lỗi do người gây ra, đặc
biệt giúp việc kiểm thử hồi qui dễ dàng và nhanh chóng hơn.
CHƯƠNG 2. KIỂM THỬ WEBSITE
2.1 Khái quát về kiểm thử website 2.1.1 Khái quát
Khi mạng Internet ngày càng phát triển, môi trường mạng đem đến nhiều
cơ hội kinh doanh, tiếp cận khách hàng thì hiểu nhiên việc thiết kế website và các
ứng dụng chạy trên nền Web là cần thiết để chiếm lĩnh thị trường. Các ứng dụng
Web phát triển và đóng vai trò to lớn trong việc kết nối, trao đổi thông tin của nhiều doanh nghiệp.
Muốn có được sự thành công trên, trước hết các ứng dụng chạy trên nền
Web phải có chất lượng tốt, hiệu năng cao, chưa kể tới các yếu tố về giao diện, trải
nghiệm người dùng,…Ngoài ra, chúng ta đều biết ứng dụng trên nền Web có
những đặc thù khác biệt hoàn toàn so với ứng dụng di động, ứng dụng desktop,…
Ứng dụng trên nền Web không giới hạn chỉ ở điện thoại thông minh, máy tính hay
máy tính bảng, mà được thiết kế để chạy trên nhiều nền tảng khác nhau. Mỗi nền
tảng lại có những yêu cầu riêng về cấu hình, độ phân giải, đặc thù thao tác,…Đó 17
chính là những vấn đề lớn đặt ra cho các nhà phát triển phần mềm trong việc đảm
bảo chất lượng cho các ứng dụng trên nền Web khi phải chạy trên đa nền tảng. Vì
thế cần phải đưa ra một chiến lược hiệu quả cho kiểm thử, tránh những rủi ro,
nâng cao chất lượng cho ứng dụng Web.
2.1.2 Các loại ứng dụng Web
Ứng dụng Web tĩnh: Là loại ứng dụng Web hiển thị ít nội dụng và không có
tính linh hoạt. Ứng dụng Web tĩnh thường chỉ xây dựng từ HTML, CSS và
Javascript. Do không có cơ sở dữ liệu và công cụ điều khiển nội dung gián tiếp
nên người quản trị không thể tùy ý thay đổi nội dung mà cần có kiến thức về
HTML, CSS cơ bản để chỉnh sửa. Điểm cộng của website này là nội dung đơn
giản, không mất nhiều thời gian, công sức để xây dựng do không phải xử lý
những câu lệnh phức tạp. Tuy nhiên, do không có hệ thống hỗ trợ thay đổi nội
dung nên việc cập nhật thông tin cho website gặp rất nhiều khó khăn, thậm chí
phải bỏ ra chi phí lớn khi thay đổi nhiều lần. Một số ví dụ cho Web tĩnh là
những trang giới thiệu công ty, tổ chức, sản phẩm, khóa học có ít nhu cầu cập nhật thông tin,…
Ứng dụng Web động: So với nhiều web tĩnh thì web động phức tạp hơn về mặt
kỹ thuật khi xây dựng. Web động sử dụng cơ sở dữ liệu để hiển thị nội dung
cũng như cho phép người dùng tương tác được với nội dung đó. Web động
được chia làm 2 phần là back-end (dành cho người quản trị Web thay đổi, cập
nhật nội dung) và front-end (dành cho người dùng truy cập). Hiện nay có rất
nhiều ngôn ngữ lập trình để xây dựng Web động như Java, PHP, ASP.NET,
VB.NET, Ruby, …Đối với Web động, việc cập nhật nội dung là rất đơn giản,
dễ dàng. Không những thế, một số hệ thống lớn hiện nay còn cho phép người
quản trị có thể thay đổi giao diện Web trên trang quản trị mà không cần phải
can thiệp trực tiếp vào mã nguồn. Đó là những lý do khiến cho Web động được
sử dụng phổ biến hơn Web tĩnh.
2.1.3 Chất lượng của một ứng dụng trên nền Web
Trước đây, kiểm thử phần mềm thường chỉ liên quan đến ứng dụng
desktop, nhưng hiện nay, nó đã mở rộng sang nhiều nền tảng khác nhau bao gồm
cả ứng dụng trên điện thoại thông minh, máy tính bảng và ứng dụng chạy trên nền
Web. Mỗi loại ứng dụng có đặc điểm riêng, đòi hỏi các phương pháp kiểm thử khác nhau.
Ứng dụng trên nền Web thường phải thích nghi với nhiều trình duyệt khác
nhau, gây ra những thách thức trong việc đảm bảo tính tương thích. Với lượng truy 18
cập lớn, kiểm thử hiệu năng và độ ổn định của ứng dụng là rất quan trọng. Sự phụ
thuộc vào tốc độ và ổn định của đường truyền Internet cũng cần được xem xét.
Ngoài ra, việc tối ưu SEO (Search Engine Optimization) - quy trình tối ưu
hóa website cũng trở thành một phần không thể thiếu trong kiểm thử ứng dụng
Web, đặc biệt là để đảm bảo ứng dụng có thứ hạng cao trên các máy tìm kiếm như Google.
2.2 Các loại kiểm thử thực hiện trên nền Web
2.2.1 Kiểm thử chức năng
Kiểm thử chức năng yêu cầu kiểm thử viên thực hiện kiểm thử tất cả các
link trong trang Web, định dạng được sử dụng trong các trang Web để gửi và nhận
thông tin cần thiết từ người dùng. Ngoài ra còn có thể kết nối cơ sở dữ liệu, kiểm
tra cookie và xác minh HTML/ CSS, …
Kiểm thử giao diện: Trước khi lập trình viên bắt tay vào xây dựng mã nguồn sẽ
luôn có một bản thiết kế UI quy định giao diện của ứng dụng Web. Mỗi thành
phần textbox, button, image, link và bố cục trên các ứng dụng Web đều được
chỉ ra một cách cụ thể trong tài liệu này. Bản thiết kế UI thường sẽ kèm theo
file. PSD – bản vẽ giao diện của ứng dụng Web sử dụng phần mềm photoshop
để lập trình viên dễ dàng xây dựng cũng như khách hàng có thể biết trước ứng
dụng của mình sẽ hiển thị ra sao.
Kiểm thử các liên kết và menu: Trong một ứng dụng Web có hai loại liên kết:
liên kết nội bộ (Internal Link) và liên kết ngoại bộ (External Link). Cả 2 loại
liên kết trên đều cần kiểm tra xem chúng có hoạt động không? Có trỏ đến địa
chỉ mong muốn không? Cần đảm bảo rằng các liên kết không tự trỏ đến vị trí của chính nó.
Kiểm thử các form nhập dữ liệu: Cần đảm bảo các trường nhập dữ liệu được
thiết kế đúng kiểu loại, có bộ lọc kiểm tra tính đúng đắn của dữ liệu nhập vào
trước khi gửi đi tránh việc hacker có thể tận dụng lỗ hổng SQL Injection từ
chính các form đăng nhập liệu trên ứng dụng Web.
Kiểm thử lỗi cú pháp HTML/CSS: Ở bước tiếp theo, người kiểm thử cần xác
định các thẻ CSS bị lỗi hoặc các thuộc tính, id, class được viết trong thẻ HTML
không hợp lệ hoặc không thuộc bất kỳ thẻ CSS nào.
Kiểm thử cookie và session: Kiểm thử các ứng dụng đăng nhập trong phiên
bằng cách cho phép và vô hiệu hóa các tập tin cookie. Có thể thử đưa lỗi vào
ứng dụng Web bằng cách sử dụng môt tên miền không phù hợp như cố tình
truyền sai, thiếu tham số,… 19