TRƯỜNG ĐẠI HỌC CÔNG NGHỆ GIAO THÔNG VẬN TẢI
KHOA CÔNG NGHỆ THÔNG TIN
-----o0o-----
BÁO CÁO BÀI TẬP LỚN HỌC PHẦN
ĐỒ ÁN HỆ THỐNG THÔNG TIN
ĐỀ TÀI: KIỂM THỬ TỬ ĐỘNG BẰNG SELENIUM VÀ ỨNG DỤNG
KIỂM THỬ CHO WEBSITE BÁN ĐIỆN THOẠI TIENDATPHONE
GIẢNG VIÊN HƯỚNG DẪN:
NHÓM SINH VIÊN THỰC HIỆN:
LỚP: 70DCHT23
HÀ NỘI 04-2023
MỤC LỤC
LỜI NĨI ĐẦU...............................................................................................................5
ĐÁNH GIÁ THÀNH VIÊN..........................................................................................6
DANH MỤC HÌNH ẢNH.............................................................................................7
DANH MỤC BẢNG......................................................................................................7
CHƯƠNG 1. TỔNG QUAN VỀ PHẦN MỀM VÀ LỖI PHẦN MỀM....................8
1.1. Định nghĩa phần mềm và công nghệ phần mềm...........................................8
1.2. Vòng đời của phần mềm..................................................................................8
1.3. Chất lượng phần mềm và đảm bảo chất lượng phần mềm..........................8
1.4. Lỗi phần mềm..................................................................................................9
1.5. Quy trình xử lý lỗi..........................................................................................11
CHƯƠNG 2. TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM...................................12
2.1. Kiểm thử phần mềm......................................................................................12
2.1.1. Khái niệm và mục tiêu của kiểm thử phần mềm......................................12
2.1.2. Quy trình kiểm thử phần mềm...................................................................12
2.1.3. Các mức độ kiểm thử.................................................................................12
2.1.4. Các phương pháp kiểm thử phần mềm.....................................................14
2.2. Kiểm thử tự động...........................................................................................14
2.2.1.
Khái niệm kiểm thử tự động.................................................................14
2.2.2. Quy trình kiểm thử tự động.......................................................................14
2.2.3. So sánh kiểm thử tự động và kiểm thử thủ công......................................15
2.2.4. Một số công cụ kiểm thử tự động phổ biển...............................................16
CHƯƠNG 3. CÔNG CỤ KIỂM THỬ TỰ ĐỘNG SELENIUM VÀ SELENIUM
WEBDRIVER..............................................................................................................17
3.1. Khái quát về Selenium...................................................................................17
3.2. Selenium WebDriver.....................................................................................19
2
3.3. Các câu lệnh sử dụng trong Selenium WebDriver.....................................21
CHƯƠNG 4. ỨNG DỤNG SELENIUM WEBDRIVER KIỂM THỬ WEBSITE
BÁN ĐIỆN THOẠI TIENDATPHONE....................................................................24
4.1. Giới thiệu website bán điện thoại TienDatPhone..........................................24
4.2. Hướng giải quyết bài toán và thực thi kiểm thử tự động.............................24
4.2.1. Các yêu cầu về công nghệ..........................................................................24
4.2.2. Hướng thực thi kiểm thử tự động..............................................................24
4.3. Thiết kế test case cho các chức năng chính....................................................29
4.3.1. Chức năng đăng nhập................................................................................29
4.3.2. Chức năng tìm kiếm sản phẩm..................................................................30
4.3.3. Chức năng thêm vào giỏ hàng...................................................................31
4.3.4. Chức năng cập nhật giỏ hàng....................................................................32
4.3.5. Chức năng đặt hàng...................................................................................33
4.3.6. Chức năng cập nhật thông tin tài khoản..................................................36
4.4. Kiểm thử tự động với Selenium WebDriver..................................................40
4.2.1. Chức năng đăng nhập................................................................................40
4.2.2. Chức năng tìm kiếm sản phẩm..................................................................42
4.2.3. Chức năng thêm vào giỏ hàng...................................................................44
4.2.4. Chức năng cập nhật giỏ hàng....................................................................46
4.2.5. Chức năng đặt hàng...................................................................................48
4.2.6. Chức năng cập nhật thông tin tài khoản..................................................51
4.5. Đánh giá và hướng phát triển.........................................................................53
KẾT LUẬN.................................................................................................................54
TÀI LIỆU THAM KHẢO..........................................................................................55
3
LỜI NÓI ĐẦU
4
ĐÁNH GIÁ THÀNH VIÊN
STT
Họ và tên
Nhiệm vụ
1
Nguyễn Thị Hải Tìm hiểu nội dung về kiểm thử tự động.
Yến
Thiết kế testcase và kiểm thử tự động chức
(Trưởng nhóm) năng cập nhật thơng tin tài khoản
2
Lê Thị Quỳnh
Đánh giá
Tìm hiểu về Selenium và Selenium
WebDriver.
Thiết kế testcase và kiểm thử tự động chức
năng đặt hàng.
3
4
Dương Thị
Nguyệt
Tìm hiểu nội dung về kiểm thử phần mềm.
Nguyễn Khánh
Vy
Tìm hiểu nội dung về phần mềm và lỗi
phần mềm.
Thiết kế testcase và kiểm thử tự động chức
năng tìm kiếm sản phẩm.
Thiết kế testcase và kiểm thử tự động chức
năng thêm và cập nhật giỏ hàng
5
Ngơ Tiến Đạt
Tìm hiểu về kiểm thử ứng dụng trên nền
web.
Thiết kế testcase và kiểm thử tự động chức
năng đăng nhập
5
DANH MỤC HÌNH ẢNH
DANH MỤC BẢNG
6
CHƯƠNG 1. TỔNG QUAN VỀ PHẦN MỀM VÀ LỖI PHẦN MỀM
1.1.
Định nghĩa phần mềm và công nghệ phần mềm
Phần mềm (Software) được xem là một hệ thống các ngôn ngữ lập trình được viết
theo một trật tự, cấu trúc nhất định thành các câu lệnh, chỉ thị. Không chỉ là những câu
lệnh mà phần mềm còn là các dữ liệu hay file hướng dẫn nhằm thực hiện các nhiệm
vụ, chức năng trên các thiết bị máy tính.
Để thực hiện các chức năng của mình, phần mềm đã gửi các câu lệnh đến phần
cứng để nó thực hiện hoặc cung cấp dữ liệu cho các chương trình, phần mềm khác
thực hiện các nhiệm vụ.
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ụng
các quan điểm, các tiến trình có kỷ luật và có bài bản vào để phát triển, vận hành và
bảo trì 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ần mề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 đến mứ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ợi trong
việc bảo trì và nâng cấp phần mềm.
1.2.
Vòng đời của phần mềm
Vòng đời phần mềm là một loạt 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 đến khi phần mềm bị loại bỏ hồn tồn. Mơ hình vịng đời phần
mềm gồm 7 giai đoạn:
1) Thu thập yêu cầu: Giai đoạn này tập trung vào việc thu thập thông tin và yêu cầu từ
khách hàng hoặc người dùng.
2) Phân tích yêu cầu: Giai đoạn này nhằm xác định các yêu cầu của khách hàng hoặc
người dùng, phân tích và đưa ra giải pháp phù hợp.
3) Thiết kế: Giai đoạn này tập trung vào thiết kế kiến trúc và cấu trúc của phần mềm,
bao gồm cả giao diện người dùng.
4) Lập trình: Giai đoạn này tập trung vào việc viết mã và triển khai giải pháp đã thiết
kế.
5) Kiểm thử: Giai đoạn này nhằm đảm bảo rằng phần mềm hoạt động đúng và đáp ứng
được các yêu cầu đã đề ra.
6) Triển khai: Giai đoạn này tập trung vào triển khai phần mềm vào mơi trường sản
xuất.
7) Bảo trì: Giai đoạn này nhằm duy trì và nâng cấp phần mềm trong quá trình sử dụng,
đảm bảo tính ổn định và an tồn của phần mềm7).
7
1.3.
Chất lượng phần mềm và đảm bảo chất lượng phần mềm
Chất lượng phần mềm theo Pressman là sự phù hợp của các yêu cầu cụ thể về
hiệu năng và chức năng, các tiêu chuẩn phát triển phần mềm được ghi lại rõ dàng bằng
tài liệu với các đặc tính ngầm định của tất cả các phần mềm được phát triển chuyên
nghiệp.
Định nghĩa của Pressman đề xuất ba yêu cầu với chất lượng phần mềm phải được
đáp ứng khi phát triển phần mềm:
- Các yêu cầu chức năng rõ ràng là nhân tố chính quyết định chất lượng đầu ra của
phần mềm.
- Các tiêu chuẩn chất lượng phần mềm sẽ được nói đến trong hợp đồng.
- Các đặc tính ngầm định cần được đáp ứng trong quá trình phát triển cho dù khơng
được nói đến rõ ràng trong hợp đồng.
Đảm bảo chất lượng phần mềm (Software Quality Assure) theo Daniel Galin là
một tập hợp các hành động cần thiết được lên kế hoạch một cách hệ thống để cung cấp
đầy đủ niềm tin rằng quá trình phát triển phần mềm phù hợp để thành lập các yêu cầu
chức năng kỹ thuật cũng như các yêu cầu quản lý theo lịch trình và hoạt động trong
giới hạn ngân sách.
1.4.
Lỗi phần mềm
Có rất nhiều định nghĩa về lỗi phần mềm nhưng có thể hiểu và phát biểu một
cách đơn giản thì "Lỗi phần mềm là sự khơng khớp giữa chương trình và đặc tả của
nó".
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 khác với đặ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ưng lạ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 đặc tả.
Lỗi phần mềm có thể đến từ nhiều nguyên nhân khác nhau, trong đó có cả các
nguyên nhân chủ quan và các nguyên nhân khách quan. Dưới đây là chín nguyên nhân
chủ yếu gây ra lỗi phần mềm:
1) Đị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 u cầu, lỗi khơng
hồn chỉnh, thiếu các yêu cầu quan trọng hoặc là quá chú trọng các yêu cầu không thật
sự cần thiết.
2) 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ây lỗi. Những lỗi
8
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 khi khá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ếu + quan tâm đến những đề cập của khách hàng.
Giải pháp khắc phục: Cần có ủy ban liên kết giữa khách hàng và nhà cung cấp để
tránh lỗi trong giao tiếp. Ủy ban do quản trị 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 đó.
3) 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ệnh 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 lại các mô-đun từ các
dự án trước mà chưa phân tích đầy đủ những thay đổ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áp như
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 được mô-đun nào.
4) 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ân tí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 tố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 >=3.
- Thiếu sót các trạng thái hệ thống phần mềm được yêu cầu.
5) Các lỗi lập trình: Có rất nhiều lý do dẫn đến việc 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 trong ngơn ngữ lập trình; sai sót trong việc áp dụng các cơng cụ phát triển; sai sót
trong lựa chọn dữ liệu...
6) Khơng tn 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 tn thủ các tài liệu và tiêu chuẩn lập trình của các
tổ chức phát triển phần mềm.
7) Thiếu sót trong quá trình kiểm thử: Lỗi phần mềm có thể đến từ chính q
trình kiểm thử khi mà người kiểm thử để lọt lỗi. Những lỗi này đến từ các nguyên
nhân sau đây:
- Kế hoạch kiểm thử chưa hồn chỉnh, để sót yêu cầu cần 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 hồn chỉnh do áp lực thời gian 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.
9
8) 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ần mềm phức tạp
mà các tiến trình được thực bằng nhiều bước, mỗi bước có thể có nhiều kiểu dữ liệu và
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.
9) Các lỗi về tài liệu: Các lỗi về tài liệu là vấn đề của các đội phát triển và bảo trì
khi có những sai sót trong các tài liệu liên quan. Những lỗi này có thể là nguyên nhân
gây ra lỗi trong giai đoạn phát triển kế tiếp và giai đoạn bảo trì.
1.5.
Quy trình xử lý lỗi
Trước khi giới thiệu về quy trình xử lý lỗi, chúng ta sẽ trình bày về các trạng thái
có thể có của lỗi.
Quy trình xử lý lỗi
Quy trình xử lý lỗi có thể bao gồm 6 bước sau:
1)
2)
3)
4)
5)
Bắt đầu: phát hiện phần mềm có lỗi và đưa lỗi lên hệ thống quản lý lỗi (Open)
Gán lỗi cho nhân viên phát triển
Xử lý lỗi (Fix)
Kiểm thử lại
Đóng lỗi (Closed)/ Reopen lỗi (Open)
10
11
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 và mục tiêu của kiểm thử phần mềm
Kiểm thử phần mềm là quá trình thực thi một hệ thống phần mềm để xác định xem
phần mềm có đúng với đặc tả khơng và thực hiện trong mơi trường như mong đợi hay
khơng.
Mục đích của kiểm thử phần mềm là tìm ra lỗi chưa được phát hiện, tìm một cách
sớm nhất và bảo đảm rằng lỗi sẽ được sửa.
Mục tiêu của kiểm thử phần mềm là thiết kế tài liệu kiểm thử một cách có hệ
thống và thực hiện nó sao cho có hiệu quả, nhưng tiết kiệm được thời gian, cơng sức
và chi phí.
Kiểm thử phần mềm là một hoạt động giữ vai trò rất quan trọng để bảo đảm chất
lượng phần mềm và là hoạt động mang tính sống cịn trong các dự án sản xuất hoặc gia
cơng phần mềm. Vì vậy, kiểm thử phần mềm đã trở thành quy trình bắt buộc trong các
dự án phát triển phần mềm trên thế giới.
2.1.2. Quy trình kiểm thử phần mềm
Quy trình kiểm thử phần mềm xác định các giai đoạn/pha trong kiểm thử phần
mềm. Tuy nhiên, khơng có quy trình tiêu chuẩn cố định nào trên thế giới, nhưng về cơ
bản quy trình kiểm thử bao gồm những giai đoạn sau:
1. Requirenment analysis - Phân tích yêu cầu
2. Test planning - Lập kế hoạch kiểm thử
3. Test case development - Thiết kế kịch bản kiểm thử
4. Test environment set up - Thiết lập môi trường kiểm thử
5. Test execution - Thực hiện kiểm thử
6. Test cycle closure - Đóng chu trình kiểm thử
Các giai đoạn kiểm thử được thực hiện một cách tuần tự. Mỗi giai đoạn sẽ có
những mục tiêu khác nhau, đầu vào và kết quả đầu ra khác nhau nhưng mục đích cuối
cùng vẫn là đảm bảo chất lượng sản phẩm phần mềm tốt nhất.
2.1.3. Các mức độ kiểm thử
Các mức kiểm thử được thể hiện ở hình 2.1
12
Hình 2.1. Bốn mức độ cơ bản của kiểm thử phần mềm
Mức 1 - Kiểm thử đơn vị (Unit Test)
Một đơn vị (Unit) là một thành phần phần mềm nhỏ nhất mà ta có thể kiểm thử
được, ví dụ: các hàm (Function), thủ tục (Procedure), lớp (Class), hoặc các phương
thức (Method).
Mức 2 - Kiểm thử tích hợp (Integration Test)
Kiểm thử tích hợp kết hợp các thành phần của một ứng dụng và kiểm thử như
một ứng dụng đã hoàn thành. Trong khi kiểm thử đơn vị kiểm tra các thành phần và
Unit riêng lẻ thì kiểm thử tích hợp kết hợp chúng lại với nhau và kiểm tra sự giao tiếp
giữa chúng.
Mức 3 - Kiểm thử hệ thống (System Test)
Mục đích của kiểm thử hệ thống là kiểm thử xem thiết kế và toàn bộ hệ thống
(sau khi tích hợp) có thỏa mãn u cầu đặt ra hay không.
Kiểm thử hệ thống kiểm tra cả các hành vi chức năng của phần mềm lẫn các
yêu cầu về chất lượng như độ tin cậy, tính tiện lợi khi sử dụng, hiệu năng và bảo mật.
Kiểm thử hệ thống bắt đầu khi tất cả các bộ phận của phần mềm đã được tích
hợp thành cơng.
Điểm khác nhau then chốt giữa kiểm thử tích hợp và kiểm thử hệ thống là kiểm
thử hệ thống chú trọng các hành vi và lỗi trên tồn hệ thống, cịn kiểm thử tích hợp chú
trọng sự giao tiếp giữa các đơn thể hoặc đối tượng khi chúng làm việc cùng nhau.
Thông thường ta phải thực hiện kiểm thử đơn vị và kiểm thử tích hợp để bảo đảm mọi
13
Unit và sự tương tác giữa chúng hoạt động chính xác trước khi thực hiện kiểm thử hệ
thống.
Mức 4 - Kiểm thử chấp nhận sản phẩm (Acceptance Test)
Mục đích của kiểm thử chấp nhận là kiểm thử khả năng chấp nhận cuối cùng để
chắc chắn rằng sản phẩm là phù hợp và thỏa mãn các yêu cầu của khách hàng và
khách hàng chấp nhận sản phẩm.
Trong giai đoạn kiểm thử chấp nhận thì người kiểm tra là khách hàng. Khách
hàng sẽ đánh giá phần mềm với mong đợi theo những thao tác sử dụng quen thuộc của
họ. Việc kiểm tra ở giai đoạn này có ý nghĩa hết sức quan trọng tránh cho việc hiểu sai
yêu cầu cũng như sự mong đợi của khách hàng.
2.1.4. Các phương pháp kiểm thử phần mềm
Có 3 phương pháp kiểm thử phần mềm:
Kiểm thử hộp trắng
Trong kiểm thử hộp trắng, cấu trúc mã hoặc thuật tốn của chương trình được
đưa vào xem xét. Các trường hợp kiểm thử được thiết kế dựa vào cấu trúc mã hoặc
cách thức làm việc của chương trình. Người kiểm thử truy cập vào mã nguồn của
chương trình và có thể kiểm tra nó, lấy đó làm cơ sở để hỗ trợ việc kiểm thử.
Kiểm thử hộp đen
Kiểm thử hộp đen không yêu cầu người kiểm thử cần phải có bất kỳ kiến thức về
mã hoặc thuật tốn của chương trình. Nó kiểm tra các chức năng của hệ thống tức là
những gì hệ thống được cho là cần phải làm dựa trên các "Đặc tả yêu cầu". Các trường
hợp kiểm thử thường được xây dựng xung quanh nó.
Hay nói cách khác, kiểm thử hộp đen là phương pháp test dựa trên đầu vào và đầu
ra của chương trình để test mà khơng quan tâm tới code bên trong được viết ra sao.
Kiểm thử hộp xám
Kiểm thử hộp xám là một phương pháp kiểm thử phần mềm được kết hợp giữa
phương pháp kiểm thử hộp đen và phương pháp kiểm thử hộp trắng.
2.2.
Kiểm thử tự động
2.2.1. Khái niệm kiểm thử tự động
Kiểm thử tự động là quá trình xử lý một cách tự động các bước thực hiện các test
case. Kiểm thử tự động bằng một công cụ nhằm rút ngắn thời gian kiểm thử.
2.2.2. Quy trình kiểm thử tự động
Quy trình kiểm thử tự động gồm 4 bước:
Bước 1: Lập kế hoạch kiểm thử
14
Bước 2: Thiết kế test case
Bước 3: Phát triển test script
Bước 4: Thực hiện kiểm thử
Bước 5: Đánh giá kết quả kiểm thử
2.2.3. So sánh kiểm thử tự động và kiểm thử thủ công
Ưu điểm
- Độ tin cậy cao (Reliability): Nhờ sự ổn định vượt trội của công cụ kiểm thử tự động
so với con người, đặc biệt trong trường hợp có quá nhiều test case cần được thực thi,
nên độ tin cậy của kiểm thử tự động thường cao hơn so với kiểm thử thủ công.
- Khả năng lặp (Repeatability): công cụ kiểm thử tự động ra đời là để giúp cho các
tester không phải lặp đi lặp lại các thao tác như: nhập dữ liệu, click, check kết quả...
một cách nhàm chán với độ tin cậy và ổn định cao.
- Khả năng tái sử dụng dụng (Reusability): với một bộ kiểm thử tự động, người ta có
thể sử dụng cho nhiều phiên bản ứng dụng khác nhau, đây được gọi là tính tái sử dụng.
- Tốc độ cao (Fast): do thực thi bởi máy nên tốc độ của kiểm thử tự động nhanh hơn
nhiều so với tốc độ của con người. Nếu cần 5 phút để thực thi một test case một cách
thủ cơng thì có thể người ta chỉ cần khoảng 30 giây để thực thi một cách tự động. Chi
phí thấp (Cost Reduction): nếu áp dụng kiểm thử tự động đúng cách, người ta có thể
tiết kiệm được nhiều chi phí, thời gian và nhân lực, do kiểm thử tự động nhanh hơn
nhiều so với kiểm thử thủ công, đồng thời nhân lực cần để thực thi và bảo trì scripts
khơng nhiều.
Nhược điểm
- Khó mở rộng, khó bảo trì (Poor scalability and maintainability): Trong cùng một dự
án, để mở rộng phạm vi cho kiểm thử tự động khó hơn nhiều so với kiểm thử thủ
công. Số lượng công việc phải làm để mở rộng phạm vi cho kiểm thử tự động là nhiều
hơn và khó hơn kiểm thử thủ cơng. Cũng vậy, để cập nhật một test case thủ công,
người ta chỉ cần mở ra và gõ, rất đơn giản. Nhưng kiểm thử tự động lại không đơn
giản như vậy, cập nhật hay chỉnh sửa yêu cầu rất nhiều công việc như debug, thay đổi
dữ liệu đầu vào, và cập nhật code mới.
- Khả năng bao phủ thấp (Low coverage): do khó ứng dụng, khó mở rộng và địi hỏi
nhiều kỹ năng lập trình nên độ bao phủ của kiểm thử tự động khá thấp.
- Vấn đề công cụ và nhân lực (Technology vs. people issues): hiện nay cũng có nhiều
cơng cụ hỗ trợ kiểm thử tự động khá tốt nhưng chúng vẫn còn nhiều hạn chế. Ngồi ra
nguồn nhân lực có thể sử dụng thành thạo các công cụ này cũng không nhiều.
15
2.2.4. Một số công cụ kiểm thử tự động phổ biển
- Selenium
- Katalon
- QucikTest Professional (QTP)
- Test Complete
- LoadTest
- Jmeter
- akaAT Studio
-…
16
CHƯƠNG 3. CÔNG CỤ KIỂM THỬ TỰ ĐỘNG SELENIUM VÀ
SELENIUM WEBDRIVER
3.1.
Khái quát về Selenium
Selenium là một công cụ hỗ trợ kiểm thử tự động cho các ứng dụng Web.
Selenium hỗ trợ kiểm thử trên hầu hết các trình duyệt phổ biến hiện nay như Firefox,
Internet Explorer, Safari, ... cũng như các hệ điều hành chủ yếu như Windows, Linux,
Mac,... Selenium cũng hỗ trợ một số lớn các ngôn ngữ lập trình Web phổ biến hiện
nay như C#, Java, Perl, PHP, Python, Ruby,... Cơng cụ này có thể kết hợp thêm với
một số công cụ khác như Junit và TestNG nhưng với người dùng thông thường chỉ cần
chạy tự động mà không cần cài thêm các công cụ bổ trợ.
a. Đặc điểm của Selenium
- Mã nguồn mở: Đây là điểm mạnh nhất của Selenium khi so sánh với các test tool
khác. Vì là mã nguồn mở nên chúng ta có thể sử dụng mà khơng phải lo lắng về phí
bản quyền hay thời hạn sử dụng.
- Cộng đồng hỗ trợ: vì là mã nguồn mở nên Selenium có một cộng đồng hỗ trợ khá
mạnh mẽ. Bên cạnh đó, Google là nơi phát triển Selenium nên chúng ta hồn tồn có
thể n tâm về sự hỗ trợ miễn phí khi có vấn đề về Selenium. Tuy nhiên, đây cũng là
một điểm yếu của Selenium. Vì cơng cụ này hồn tồn 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.
- Selenium hỗ trợ chạy trên nhiều hệ điều hành khác nhau với mức độ chỉnh sửa
script hầu như là khơng có. Thực sự thì điều này phụ thuộc phần lớn vào khả năng viết
script của người dùng.
- Chạy test case ở background. Khi chúng ta thực thi một test script, chúng ta hồn
tồn có thể làm việc khác trên cùng một máy tính. Điều này hỗ trợ chúng ta không cần
tốn quá nhiều tài nguyên máy móc khi chạy test script.
- Khơng hỗ trợ Win app. Selenium thực sự chỉ hỗ trợ chúng ta tương tác với
Browser mà không hỗ trợ chúng ta làm việc với các Win app, kể cả Win dialog như
Download/Upload. Vậy nên, để xử lý các trường hợp cần tương tác với hệ thống hay
một app thứ ba, chúng ta cần một hay nhiều thư viện khác như AutoIt hay Coded UI.
- Là một cơng cụ hỗ trợ kiểm tra tính năng nên Selenium khơng có khả năng giả
lập nhiều người dùng ảo cùng một lúc. Cơng việc của nó là chạy kiểm thử tự động dựa
trên một kịch bản đã được thiết kế từ trước. Qua đó chúng ta có thể chắc chắn rằng đối
tượng kiểm thử có hoạt động đúng như mong đợi hay không.
b. Các thành phần của Selenium
17
Selenium là một bộ công cụ hỗ trợ kiểm thử tự động các tính năng của ứng dụng
trên nền Web, bao gồm 4 thành phần: Selenium IDE, Selenium Grid, Selenium 1.0
( hay Selenium Remote Control - Selenium RC) và Selenium 2.0 (hay Selenium
WebDriver). Mỗi loại có một vai trị cụ thể trong việc hỗ trợ sự phát triển của tự động
hóa kiểm thử ứng dụng web.
Selenium IDE (Intergrated Development Environment)
Selenium IDE là được phát triển dưới hình thức add-on của Firefox. Chúng ta
chỉ có thể Record trên trình duyệt FireFox, nhưng bù lại, chúng ta có thể Playback trên
các trình duyện khác như là IE, Chrome....
Selenium có thể sinh code tự động hoặc nạp các đoạn mã viết tay. Công cụ này
cung cấp chức năng “thu và chạy lại” – Record and Playback. Sau đó chạy lại các câu
lệnh này để kiểm thử. Chức năng này rất hữu dụng giúp tiết kiệm thời gian viết kịch
bản kiểm thử. Selenium IDE còn cho phép lưu kịch bản đã thu dưới nhiều loại ngơn
ngữ lập trình khác nhau như Java, PHP, C#, Ruby....
Selenium Core: Đã được tích hợp trong Selenium IDE. Selenium Core là một
công cụ chạy các test script viết bằng Selenese. Thế mạnh của cơng cụ này là có thể
chạy test script trên gần như tất cả các trình duyệt, nhưng lại yêu cầu được cài đặt trên
máy chủ của website cần kiểm tra. Điều này là không thể khi Tester khơng có quyền
truy cập đến máy chủ đó.
Selenium RC (Remote Control)
Selenium Remote Control là một framework kiểm thử cho phép thực hiện nhiều
hơn và tuyến tính các hành động trên trình duyệt. Nó cho phép cho phép các nhà phát
triển tự động hóa kiểm thử sử dụng một ngơn ngữ lập trình cho tính linh hoạt tối đa và
mở rộng trong việc phát triển logic thử nghiệm.
Công cụ này có thể nhận các test script được thu bởi Selenium IDE, cho phép
chỉnh sửa, cải tiến linh động bằng nhiều ngơn ngữ lập trình khác nhau. Sau đó khởi
động một trong các trình duyệt Web được chỉ định để thực thi kiểm thử trực tiếp trên
trình duyệt đó. Selenium RC còn cung cấp khả năng lưu lại kết quả kiểm thử; cung cấp
một API (Application Programming Interface) và thư viện cho mỗi ngôn ngữ được hỗ
trợ: HTML, Java, C#, Perl, PHP, Python và Ruby. Khả năng sử dụng Selenium RC với
một ngơn ngữ lập trình bậc cao để phát triển các trường hợp kiểm thử cũng cho phép
kiểm thử tự động được tích hợp với một dự án xây dựng môi trường tự động.
Selenium WebDriver
Selenium WebDriver là sự kế thừa từ Selenium Remote Control, làm việc trực
tiếp với trình duyệt ở mức hệ điều hành, cho phép gửi lệnh trực tiếp đến trình duyệt và
xuất ra kết quả.
Selenium-Grid
18
Selenium – Grid Là một hệ thống hỗ trợ người dùng thực thi test script trên
nhiều trình duyệt một cách song song mà không cần phải chỉnh sửa test script.
Thực hiện phương pháp kiểm tra phân bổ, phối hợp nhiều Selenium RC để có
thể thực thi trên nhiều trình duyệt Web khác nhau trong cùng một lúc nhằm giảm thiểu
thời gian thực hiện.
3.2.
Selenium WebDriver
Tiền thân của Selenium WebDriver
Trước khi Selenium WebDriver ra đời và phát triển thì Selenium RC là cơng cụ
chính trong suốt một thời gian dài. Hiện nay, Selenium RC không được sử dụng nhiều
như Selenium WebDriver nữa, tuy nhiên người dùng vẫn có thể tiếp tục phát triển các
kịch bản kiểm thử với Selenium RC.
Selenium RC là công cụ phục vụ cho các công việc kiểm thử đòi hỏi nhiều hơn
việc thao tác với các website trên giao diện . Nó cho phép viết các kịch bản kiểm thử
tự động ứng dụng Web với sự hỗ trợ của các ngơn ngữ lập trình như Java, C#, Python,
Pert, PHP để tạo ra các trường hợp 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, gửi mail kết quả kiểm thử.
Các thành phần của Selenium RC gồm:
- Máy chủ Selenium: Thực hiện phân tích và chạy các lệnh được gửi đến từ ứng
dụng cần kiểm thử và các thao tác như HTTP proxy, phân tích và xác minh các thơng
điệp HTTP, giữa trình duyệt và ứng dụng cần kiểm tra.
- Các thư viện máy khách: cung cấp sự hỗ trợ lập trình cho phép chạy lệnh
Selenium từ chương trình. Các thư viện máy khách hỗ trợ cho các ngôn ngữ lập trình
khác nhau thì khác nhau. Giao diện lập trình là tập các chức năng chạy lệnh Selenium,
trong mỗi giao diện có một chức năng lập trình hỗ trợ Selenium.
Đặc trưng của Selenium WebDriver
Selenium WebDriver kế thừa và phát triển từ Selenium IDE, Selenium RC,
Selenium Grid. Selenium WebDriver tương tác trực tiếp với trình duyệt mà khơng cần
thơng qua bất kỳ trung gian, không giống như Selenium RC phụ thuộc vào một máy
chủ.
Tính năng chính trong Selenium 2.0 là việc tích hợp WebDriver API. Ngồi
việc giải quyết một số hạn chế trong Selenium RC API, Selenium WebDriver còn
được thiết kế để mang đến một giao diện lập trình đơn giản hơn. Nó cho phép sử dụng
một trong số các ngơn ngữ lập trình như HTML, Java, .Net, Perl, Ruby... để tạo kịch
bản kiểm thử kết hợp với sử dụng các điều kiện, vòng lặp... khiến cho test script trở
nên chính xác hơn.
19
Selenium WebDriver còn được phát triển tốt hơn để hỗ trợ cho các trang Web
động do các phần tử trong một trang Web động có thể thay đổi bất cứ lúc nào, ngay cả
khi trang đó khơng được tải lại. Vì vậy, Selenium WebDriver được phát triển để hỗ trợ
quá trình kiểm thử mà khơng cần phải thực hiện lại khi có thay đổi xảy ra.
Cách hoạt động của Selenium WebDriver
Selenium WebDriver là tập hợp các API mã nguồn mở, cho phép tạo và chạy
các bài test tự động ở cấp độ trình duyệt và hệ điều hành.
WebDriver protocol có một đầu cuối cục bộ (‘máy khách’) sẽ gửi các lệnh (test
script) tới một driver dành riêng cho trình duyệt. Driver thực thi các lệnh này trên
phiên bản trình duyệt của nó.
Ví dụ: ChromeDriver sẽ thực hiện test trên Chrome; GeckoDriver sẽ làm điều
đó trên Firefox.
Cấu trúc hoạt động của Selenium WebDriver.
Selenium WebDriver bao gồm:
API: Giúp chuyển các test script viết bằng ngơn ngữ lập trình sang Selenese
(ngơn ngữ scripting của Selenium), thông qua các binding.
Library: Nơi chứa API và các binding.
Driver: Module thực hiện việc mở trình duyệt và chạy test script. Ví dụ:
Chromedriver hỗ trợ tự động hóa Selenium trên Chrome.
20