Tải bản đầy đủ (.docx) (57 trang)

công cụ kiểm thử tự động

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.16 MB, 57 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN

BÀI TẬP LỚN
KIỂM THỬ PHẦN MỀM

ĐỀ TÀI

KIỂM THỬ ỨNG DỤNG WEB VỚI CÔNG CỤ SELENIUM
Giảng viên hướng dẫn : Ts. Nguyễn Hoàng Tú
Nhóm thực hiện

: NHÓM 6

Lớp

: KHMT4-K9

Danh sách nhóm: 1.Phạm Văn Hải
2.Lê Sỹ Tiến
3.Dương Đức Tuyến
4.Hoàng Bá Vũ

Hà Nội,năm 2017

1


LỜI NÓI ĐẦU
Các ứng dụng Web đã được phát triển và trở thành nền tảng kết nối thông tin thiết
yếu trong nhiều doanh nghiệp, đóng vai trò quyết định của thương mại điện tử (e commerce), trao đổi thông tin. Để có thể đạt được điều này, các ứng dụng web cần phải


có hiệu năng cao, đáng tin cậy,…Việc đưa ra một ứng dụng Web hoàn hảo cho những
người đang và sẽ sử dụng ứng dụng đã trở thành một thử thách chính trong đảm bảo
chất lượng. Kiểm thử các ứng dụng Web đã vượt quá giới hạn của kiểm thử những hệ
thống phần mềm truyền thống.Như chúng ta đã biết, một ứng dụng Web thường có rất
nhiều nhóm người sử dụng với các nền tảng khác nhau (hệ điều hành, trình duyệt,…),
điều này dẫn tới việc kiểm thử ứng dụng Web cần phải có những phương pháp đặc biệt
khác với phần mềm truyền thống.
Selenium là một công cụ kiểm thử ứng dụng Web tiêu biểu. Đây là một công cụ mã
nguồn mở, mạnh mẽ hỗ trợ trên nền Web, nhiều platform và các trình duyệt phổ biến.
Công cụ này được phát triển chủ yếu trong Java script và công nghệ trình duyệt như
DHTML và các khung hình, và do đó hỗ trợ tất cả các trình duyệt chính trên tất cả các
nền tảng. Selenium có lẽ là một trong những công cụ tốt nhất trên thị trường cho các
ứng dụng Web. Điều đáng lưu ý là kiểm thử phần mềm nói chung và kiểm thử ứng dụng
web nói riêng đều chưa được phổ biến ở Việt Nam. Đây cũng là lý do nhóm em chọn đề
tài “Kiểm thử ứng dụng Web với công cụ Selenium” với mong muốn giúp nhiều
người hiểu rõ hơn nữa về kiểm thử ứng dụng web, cũng như cách sử dụng công cụ
Selenium vào công việc này.

2


MỞ ĐẦU
1. LÝ

DO CHỌN ĐỀ TÀI
Với mục tiêu đến năm 2020 đưa đất nước ta cơ bản trở thành một nước Công

nghiệp hóa theo hướng hiện đại, Công nghệ thông tin phải là một trong những
ngành kinh tế mũi nhọn của Đất nước, mở đường, tạo động lực cho một giai đoạn
đổi mới mạnh mẽ hơn của đất nước vì vậy Đảng và Nhà nước ta đã và đang tiếp

tục đầu tư và khuyến khích phát triển, ứng dụng Công nghệ thông tin trong tất cả
các lĩnh vực của đời sống. Như chúng ta đã biết, để tạo ra sản phẩm công nghệ
thông tin hay phần mềm có chất lượng thì hoạt động kiểm tra phần mềm đóng vai
trò rất quan trọng. Nó đảm bảo cho phần mềm tạo ra có chạy đúng với yêu cầu của
khách hàng hay không, có xảy ra những sai sót mà nó khác với bảng phân tích thiết
kế ban đầu không từ đó đảm bảo được yêu cầu chất lượng sản phẩm trước khi bàn
giao cho khách hàng. Tuy nhiên, hoạt động này lại tiêu tốn và chiếm tỷ trọng khá
lớn công sức và thời gian trong một dự án. Do vậy, nhu cầu tự động hoá quy trình
kiểm thử phần mềm cũng được đặt ra để nhằm giảm nhân lực, vật lực, thời gian mà
vẫn có độ chính xác cao.
Hiện nay, các ứng dụng web đang được sử dụng khá phổ biến. Lĩnh vực kiểm
thử phần mềm đã được phát triển khá lâu cùng với đó kiểm thử phần mềm cho các
ứng dụng web cũng đang phát triển. Rất nhiều doanh nghiệp CNTT đã và đang có
nhu cầu tuyển dụng rất lớn về lĩnh vực này nhưng không tuyển đủ vì hầu hết
những người làm về kiểm thử đều nghiên cứu về kiểm thử trên desktop
application. Hiện tại trong lĩnh vực kiểm thử phần mềm cho Web app đã có nhiều
công cụ hỗ trợ kiểm thử tự động như: QuickTest Pro, Selenium, LoadRunner…
Trong số đó, , Selenium là một tool khá tốt và mạnh, bao gồm nhiều chức năng
điển hình của một công cụ kiểm thử tự động.
Vì những lý do trên trên nên nhóm quyết định chọn đề tài “Kiểm thử tự động
ứng dụng web với Selenium” từ đó áp dụng vào thực nghiệm bằng việc sử dụng
công cụ Selenium để kiểm thử trên một ứng dụng web.
3


2. MỤC TIÊU
-

Tìm hiểu về kiểm thử phần mềm.
Tìm hiểu về kiểm thử tự động, các công cụ kiểm thử tự động

- Tìm hiểu, nghiên cứu công cụ kiểm thử tự động Selenium: Tổng quan cài
đặt, ứng dụng
- Xây dựng kịch bản kiểm thử (testcase) cho một số chức năng của phần mềm
- Ứng dụng công cụ trong kiểm thử ứng dụng web, Sử dụng công cụ
kiểm thử Selenium, thực hiện kiểm thử và xây dựng testscript kiểm thử demo
1 số chức năng trên cơ sở testcase đã có và xây dựng báo cáo, kết quả kiểm
thử.

-

4


CHƯƠNG I.TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM
1. Khái niệm kiểm thử phần mềm
- Kiểm thử phần mềm là quá trình

thực thi một hệ thống phần mềm để xác định xem

phần mềm có đúng với đặc tả không và thực hiện trong môi trường như mong đợi
-

hay không.
Mục đích của kiểm thử phần mềm là để kiểm tra xem phần mềm có đáp ứng với nhu
cầu của khách hang và phù hợp với đặc tả yêu cầu, đảm bảo chất lượng và tính
chính xác của ứng dụng

2. Các

cấp độ kiểm thử phần mềm


Hình 1: Các cấp độ kiểm thử
2.1. Kiểm

thử đơn vị


Một đơn vị (Unit) là một thành phần phần mềm nhỏ nhất mà ta có thể kiểm
thử được, ví dụ: các hàm (Function), thủ tục (Procedure), lớp (Class), hoặc các
phương thức (Method).

Unit testing đề cập đến các kiểm thử để chứng thực (xác minh - verify) chức
năng của một phần riêng biệt của code, thường ở mức hàm (function level). Trong
một môi trường hướng đối tượng (object-oriented environment), kiểm thử đơn vị
thường được sử dụng ở mức lớp (class) và kiểm thử các đơn vị nhỏ nhất bao gồm
các hàm constructor và destructor.
Kiểm thử đơn vị thường do lập trình viên thực hiện. Công đoạn này cần
được thực hiện càng sớm càng tốt trong giai đoạn viết code và xuyên suốt chu kỳ
phát triển phần mềm. Một hàm có thể có nhiều kiểm thử, để bắt được các trường
hợp hoặc các nhánh trong code.
Cũng như các mức kiểm thử khác, kiểm thử đơn vị cũng đòi hỏi phải chuẩn
bị trước các ca kiểm thử (hay trường hợp kiểm thử) (test case) hoặc kịch bản (test
script), trong đó chỉ định rõ dữ liệu vào, các bước thực hiện và dữ liệu mong muốn
sẽ xuất ra. Các test case và test script được giữ lại để sử dụng sau này.
2.2 Kiểm thử tích hợp
Integration test kết hợp các thành phần của một ứng dụng và kiểm thử như
một ứng dụng đã hoàn thành. Trong khi Unit Test kiểm tra các thành phần và Unit
riêng lẻ thì Intgration Test kết hợp chúng lại với nhau và kiểm tra sự giao tiếp giữa
chúng.
 Integration Test có 2 mục tiêu chính:

• Phát hiện lỗi giao tiếp xảy ra giữa các Unit.
• Tích hợp các Unit đơn lẻ thành các hệ thống nhỏ (subsystem) và cuối cùng là
nguyên hệ thống hoàn chỉnh (system) chuẩn bị cho kiểm thử ở mức hệ thống
(System Test).
 Có 4 loại kiểm thử trong Integration Test:


• Kiểm thử cấu trúc (Structure Test): Tương tự White Box Test (kiểm thử nhằm bảo
đảm các thành phần bên trong của một chương trình chạy đúng), chú trọng đến
hoạt động của các thành phần cấu trúc nội tại của chương trình chẳng hạn các lệnh
và nhánh bên trong.
• Kiểm thử chức năng (Functional Test): Tương tự Black Box Test (kiểm thử chỉ
chú trọng đến chức năng của chương trình, không quan tâm đến cấu trúc bên

2.3

trong), chỉ khảo sát chức năng của chương trình theo yêu cầu kỹ thuật.
• Kiểm thử hiệu năng (Performance Test): kiểm thử việc vận hành của hệ thống.
• Kiểm thử khả năng chịu tải (Stress Test): kiểm thử các giới hạn của hệ thống.
Kiểm thử hệ thống
Kiểm thử hệ thống (ST) bao gồm một loạt những kiểm nghiệm nhằm xác
minh toàn bộ các thành phần của hệ thống được tích hợp một cách đúng đắn. Mục
đích của ST là đảm bảo toàn bộ hệ thống hoạt động như khách hàng mong muốn.
System Test bắt đầu khi tất cả các bộ phận của PM đã được tích hợp thành
công. Thông thường loại kiểm tra này tốn rất nhiều công sức và thời gian. Trong
nhiều trường hợp, việc kiểm tra đòi hỏi một số thiết bị phụ trợ, phần mềm hoặc
phần cứng đặc thù, đặc biệt là các ứng dụng thời gian thực, hệ thống phân bố, hoặc
hệ thống nhúng. Ở mức độ hệ thống, người kiểm tra cũng tìm kiếm các lỗi, nhưng
trọng tâm là đánh giá về hoạt động, thao tác, sự tin cậy và các yêu cầu khác liên
quan đến chất lượng của toàn hệ thống.

Điểm khác nhau then chốt giữa Integration Test và System Test là System Test
chú trọng các hành vi và lỗi trên toàn hệ thống, còn Integration Test chú trọng sự
giao tiếp giữa các đơn thể hoặc đối tượng khi chúng làm việc cùng nhau. Thông
thường ta phải thực hiện Unit Test và Integration Test để bảo đảm mọi Unit và sự

tương tác giữa chúng hoạt động chính xác trước khi thực hiện System Test.
 Kiểm thử hệ thống thường có các loại kiểm thử sau:
• Kiểm tra chức năng (Functional Test): bảo đảm các hành vi của hệ thống thỏa mãn


đúng yêu cầu thiết kế.
Kiểm tra khả năng vận hành (Performance Test): bảo đảm tối ưu việc phân bổ tài
nguyên hệ thống (ví dụ bộ nhớ) nhằm đạt các chỉ tiêu như thời gian xử lý hay đáp
ứng câu truy vấn…




Kiểm tra khả năng chịu tải (Stress Test hay Load Test): bảo đảm hệ thống vận hành
đúng dưới áp lực cao (ví dụ nhiều người truy xuất cùng lúc). Stress Test tập trung



vào các trạng thái tới hạn, các “điểm chết”, các tình huống bất thường…
Kiểm tra cấu hình (Configuration Test)
Kiểm tra khả năng bảo mật (Security Test): bảo đảm tính toàn vẹn, bảo mật của dữ



liệu và của hệ thống.

Kiểm tra khả năng phục hồi (Recovery Test): bảo đảm hệ thống có khả năng khôi



phục trạng thái ổn định trước đó trong tình huống mất tài nguyên hoặc dữ liệu; đặc
biệt quan trọng đối với các hệ thống giao dịch như ngân hàng trực tuyến
2.4 Kiểm thử chấp nhận
Sau giai đoạn ST là AT, đây là giai đoạn kiểm tra được khách hàng thực hiện.
Mục đích của AT là để chứng minh phần mềm thỏa mãn tất cả yêu cầu của khách
hàng và khách hàng chấp nhận sản phẩm và trả tiền thanh toán hợp đồng.
AT có ý nghĩa hết sức quan trọng, mặc dù trong hầu hết mọi trường hợp, các
phép kiểm tra của ST và AT gần như tương tự, nhưng bản chất và cách thức thực
hiện lại rất khác biệt.
Trên thực tế, nếu khách hàng không quan tâm và không tham gia vào quá
trình phát triển phần mềm thì thường kết quả AT sẽ sai lệch rất lớn, mặc dù PM đã
trải qua tất cả các kiểm tra trước đó. Sự sai lệch này liên quan đến việc hiểu sai yêu
cầu cũng như sự mong chờ của khách hàng. Ví dụ đôi khi một PM xuất sắc vượt
qua các phép kiểm tra về chức năng thực hiện bởi nhóm thực hiện dự án, nhưng
khách hàng khi kiểm tra sau cùng vẫn thất vọng vì bố cục màn hình nghèo nàn,
thao tác không tự nhiên, không theo tập quán sử dụng của khách hàng…
Có 2 phương pháp kiểm thử chấp nhận:


Kiểm thử alpha: được thực hiện tại nơi tổ chức phát triển nhưng không phải do



nhóm phát triển test mà do khách hàng thực hiện test.
Kiểm thử beta: được thực hiện bởi khách hàng hoặc các khách hàng tiềm năng tại


nơi của họ (khách hàng download bản beta và cài vào máy mình rồi sử dụng).
3. Các kỹ thuật kiểm thử
Một sản phẩm đều có thể được kiểm thử theo 2 cách:
• Hiểu rõ một chức năng cụ thể của một hàm hay một module. Các trường hợp
kiểm thử có thể xây dựng để kiểm thử tất cả các thao tác đó.


• Hiểu rõ cách hoạt động của một hàm/module hay sản phẩm. Các trường hợp
kiểm thử có thể được xây dựng để đảm bảo tất cả các thành phần con khớp với
nhau. Đó là tất cả các thao tác nội bộ của hàm dựa vào các mô tả và tất cả các
thành phần nội bộ đã được kiểm thủ một cách thoả đáng.
Cách tiếp cận đầu tiên được gọi là kiểm thử hộp đen (Black-box testing) và
cách tiếp cận thứ hai là gọi là kiểm thử hộp trắng (White-box testing).
3.1 Kiểm thử hộp đen (Black Box Test)
Kiểm thử hộp đen hay còn gọi là kiểm tra chức năng và thử nghiệm hành vi.
Xem chương trình như là một “hộp đen”, hoàn toàn không quan tâm về cách cư xử
và cấu trúc bên trong của chương trình. Thay vào đó, Tập trung vào tìm các trường
hợp mà chương trình không thực hiện theo các đặc tả của nó. [2]
 Phương pháp kiểm thử hộp đen bao gồm:
• Phân vùng tương đương - Equivalence partitioning








Phân tích giá trị biên – Boundary value analysis
Kiểm thử mọi cặp – All-pairs testing.

Kiểm thử fuzz – Fuzz testing.
Kiểm thử dựa trên mô hình – Model-based testing.
Ma trận dấu vết – Traceability matrix.
Kiểm thử thăm dò – Exploratory testing
Kiểm thử dựa trên đặc tả – Specification-base testing
3.1.1 Phân vùng tương đương - Equivalence partitioning
Phân vùng tương đương (Equivalence Class): là một kỹ thuật kiểm thử phần
mềm có liên quan đến phân chia các giá trị đầu vào thành các phân vùng hợp lệ và
không hợp lệ, sau đó chúng ta sẽ viết ra các kịch bản kiểm thử cho từng phần, chọn
giá trị đại diện từ mỗi phân vùng làm dữ liệu thử nghiệm.[2]



Phân vùng tương đương: là kỹ thuật thực hiện test theo từng class đồng giá trị (tập



hợp điều kiện cùng một thao tác).
Tập hợp giá trị input có cùng một kết quả xử lý, tập hợp thời gian có cùng một kết



quả xử lý, tập hợp kết quả export được xử lý cùng một giá trị nhập.
Mục đích : Giảm đáng kể số lượng test case cần phải thiết kế vì với mỗi lớp tương
đương ta chỉ cần test trên các phần tử đại diện.






Chọn tối thiểu một giá trị đại diện từ các class đồng giá trị để tiến hành test.
Thiết kế ca kiểm thử cho phân vùng tương đương dựa trên sự đánh giá về các vùng
tương đương với một điều kiện vào. Vùng tương đương biểu thị một tập cho các

trạng thái hợp lệ hay không hợp lệ đối với điều kiện vào
• Thiết kế test case bằng phân vùng tương đương tiến hành theo hai bước:
- Xác định các lớp tương đương
- Xác định các ca kiểm thử

Hình 2:Các giá trị trong vùng tương đương
--> Nếu có lỗi xảy ra thì các giá trị khác trong class đồng giá trị cũng sẽ có lỗi
giống nhau.
3.1.2 Phân tích giá trị biên – Boundary Value Analysis
Phân tích giá trị biên (Boundary Value Analysis): là một kỹ thuật kiểm thử
phần mềm có liên quan đến việc xác định biên (ranh giới) của điều kiện mô tả cho
các giá trị đầu vào và chọn giá trị ở biên và bên cạnh giá trị biên làm dữ liệu kiểm
thử. Phương pháp phân tích giá trị biên sẽ đưa ra các giá trị đặc biệt, bao gồm loại
dữ liệu, giá trị lỗi, bên trong, bên ngoài biên giá trị, lớn nhất và nhỏ nhất.

Hình 3: Các giá trị biên
 Test
• Tìm


giá trị biên được thực hiện theo trình tự dưới đây:
ra đường biên
Quyết định giá trị biên








Quyết định giá trị để test
Giá trị biên.
Dưới giá trị biên. (Nếu là class đồng giá trị)
Trên 1 giá trị biên. (Nếu là class đồng giá trị)

Hình 4: Các giá trị trong vùng dữ liệu
 Boundary values:
Min – 1
Min
Max
Max + 1[11]
3.1.3
Sử dụng bảng quyết định – Decision Table
- Làm giảm số lượng tets casse không cần thiết so với 2 kỹ thuật trên vì nó loại trừ
-

các phép kết hợp không cần thiết giữa các giá trị biến đầu vào.
Liệt kê nguyên nhân (cause) – kết quả (result) trong một ma trận. Mỗi cột ma trận
đại diện cho 1 phép kết hợp giữa các cause trong trong việc tạo ra 1 result


Hình 5. Bảng quyết định








Các bước để tạo bảng quyết định
Liệt kê các nguyên nhân trong bảng quyết định
Tính tổng số lượng kết hợp giữa các cause
Điền vào các cột với tất cả các kết hợp có thể có
Rút bớt số lượng các phép kết hợp dư thừa
Kiểm tra các phép kết hợp có bao phủ hết mọi trường hợp hay không
Bổ sung kết quả vào bảng quyết định [11]
3.2. Kiểm thử hộp trắng
Kiểm thử hộp trắng (White box testing) là một kỹ thuật xác minh giúp các kỹ sư
phần mềm có thể sử dụng để kiểm tra mã code của họ hoạt động như dự kiến.
Có các loại white box testing đang tồn tại như sau:
* API testing (application programming interface) – Kiểm thử ứng dụng bằng
cách sử dụng các hàm API public và private
* Code coverage – Là việc tạo các trường hợp test để thỏa mãn một số điều
kiện bao phủ code - code coverage (ví dụ như, người thiết kế test có thể tạo ra các


trường hợp test sao cho tất cả các câu lệnh của chương trình đều được thực thi ít
nhất 1 lần)
* Fault injection methods – cải tiến bao phủ một trường hợp bằng cách đưa một
số lỗi vào để test các đường dẫn code.
* Mutation testing methods
* Static testing - White box testing bao gồm tất cả các phương pháp kiểm thử
tĩnh (ví dụ review code).
Kiểm thử độ bao phủ
Phương pháp kiểm thử white box cũng có thể được sử dụng để ước lượng tính
trọn vẹn đầy đủ của các tập hợp kiểm thử (test suit) đã được tạo ra bằng phương

pháp kiểm thử black box. Điều này cho phép nhóm sản xuất phần mềm xem xét lại
các phần của hệ thống ít được test nhất và để chắc chắn rằng các chức năng quan
trọng nhất đã được tập trung test kỹ.

Hai hình thức chung của kiểm thử độ bao phủ code:
* Bao phủ chức năng - Function coverage, dựa trên việc thực thi các chức năng.
* Bao phủ câu lệnh - Statement coverage, dựa trên số lượng các dòng lệnh đã được
thực thi để hoàn thành kiểm thử.
4. Tổng

kết

Chương I đã trình bày các khái niệm, những định nghĩa và những vấn đề cơ bản
xung quanh phần mềm và kiểm thử phần mềm, quy trình kiểm thử phần mềm. Các
vấn đề chính bao gồm:




Khái niệm kiểm thử phần mềm
Các cấp độ kiểm thử
Các kỹ thuật kiểm thử


CHƯƠNG II. TÌM HIỂU KIỂM THỬ TỰ ĐỘNG
1.

Khái niệm kiểm thử tự động
Kiểm thử tự động là quy trình xử lý một cách tự động các bước thực hiện các
testcase, kiểm thử bằng một công cụ nhằm rút ngắn thời gian kiểm thử.

Công cụ kiểm thử tự động có thể lấy dự liệu từ file bên ngoài (excel,
csv, …) nhập vào ứng dụng, so sánh kết quả mong đợi (từ excel, csv) với kết quả
thực tế và xuất ra báo cáo kết quả kiểm thử.
Ưu điểm: Thích hợp với trường hợp phải test nhiều lần cho một test case có
tính ổn định và tin cậy cao hơn so với kiểm thử thủ công.Có thể thực hiện thao tác
lặp đi lặp lại(nhập dữ liệu,click,check kết quả...) giúp tester không phải làm những
việc gây nhàm chán và dễ nhầm lẫn.Giảm chi phí đầu tư dài hạn.
Nhược điểm: Tốn kém hơn kiểm thủ công, chi phí đầu tư ban đầu lớn. Kiểm
thử thủ công là không thể thay thế vì người ta không thể tự động hóa mọi thứ.


3.


Lý do cần kiểm thử tự động
Kiểm thử bằng tay cho tất cả các flow, field và scenario là tốn thời gian và chi phí
Độ tin cậy cao
Manual testing có thể trở nên nhàm chán và do đó dễ bị sót lỗi
Cách duy nhất để thực hiện Load test, performance test
Khả năng tái sử dụng
Khi nào áp dụng kiểm thử tự động
Kiểm thử tự động sẽ được sử dụng khi dự án không đủ tài nguyên: thời gian, nhân



lực và chi phí.
Kiểm thử hồi quy khi sản phẩm được sửa đổi hoặc nâng cấp và cần kiểm thử lại các




tính năng đã thực hiện tốt trước đó.
Kiểm tra khả năng vận hành của sản phẩm trong các môi trường đặc biệt: đo tốc độ

2.





xử lý trung bình ứng với mỗi yêu cầu, xác định khả năng chịu tải tối đa, xác định
4.

cấu hình tối thiểu để thực thi hệ thống, kiểm tra các cơ chế an ninh và an toàn, ....
So sánh kiểm thử tự động và kiểm thử bằng tay
Cả hai thử nghiệm thủ công và tự động đều có những mặt lợi và bất lợi. Đó là
giá trị để biết sự khác biệt, khi sử dụng một trong hai cho kết quả tốt nhất.
Trong kiểm thử thủ công, trường hợp thử nghiệm được thực hiện bằng thủ công
(bởi một con người) mà không cần bất kỳ sự hỗ trợ từ các công cụ hoặc các
kịchbản.Nhưng với kiểm thử tự động, trường hợp thử nghiệm được thực hiện với
sự hỗ trợ của các công cụ, kịch bản, và phần mềm.


Kiểm thử thủ công

Kiểm thử tự động

Kiểm thử thủ công là không chính xác
tại mọi thời điểm do lỗi của con người,
do đó nó là ít đáng tin cậy.
Kiểm thử thủ công tốn thời gian.


Tự động thử nghiệm là đáng tin cậy hơn,
vì nó được thực hiện bởi các công cụ
hoặc các kịch bản.
Tự động thử nghiệm được thực hiện bởi
các công cụ phần mềm, vì vậy nó là
nhanh hơn so với một phương pháp thủ
công đáng kể.
Đầu tư là cần thiết cho công cụ kiểm
thử.
Tự động thử nghiệm là một lựa chọn
thực tế khi các trường hợp thử nghiệm
được chạy liên tục trong một thời gian
dài.
Kiểm thử tự động không đòi hỏi sự quan
sát của con người và không thể đảm bảo
thân thiện với người hoặc trải nghiệm
khách hàng tích cực.

Đầu tư là cần thiết cho nguồn nhân lực
Kiểm thử thủ công chỉ là thực tế khi các
trường hợp thử nghiệm đang chạy một
lần hoặc hai lần, và thường xuyên lặp đi
lặp lại không cần thiết.
Kiểm thử thủ công cho phép con người
quan sát, có thể hữu ích hơn nếu mục
tiêu là người dùng thân thiện hoặc cải
thiện trải nghiệm của khách hàng.

Tổng kết


5.

Chương II đã trình bày khái quát về kiểm thử tự động và so sánh sự khác nhau
giữa kiểm thử bằng tay và kiểm thử tự động. Các vấn đề chính bao gồm:





Khái niệm kiểm thử tự động
Lý do cần kiểm thử tự động
Khi nào nên áp dụng kiểm thử tự động
So sánh kiểm thử tự động và kiểm thử bằng tay


CHƯƠNG III.KIỂM THỬ TỰ ĐỘNG ỨNG DỤNG WEB
1. Ứng

dụng web
Trong kỹ thuật phần mềm, một Ứng dụng web hay webapp là một trình ứng

dụng mà có thể tiếp cận qua web thông qua mạng như Internet hay intranet.
Ứng dụng web phổ biến nhờ vào sự có mặt vào bất cứ nơi đâu của một
chương trình. Khả năng cập nhật và bảo trì ứng dụng Web mà không phải phân
phối và cài đặt phần mềm trên hàng ngàn máy tính là lý do chính cho sự phổ
biến của nó.
Ứng dụng web được dùng để hiện thực Webmail, bán hàng trực tuyến, đấu
giá trực tuyến, wiki, diễn đàn thảo luận, Weblog, Hệ quản trị nội dung, Phần
2.


mềm quản lý nguồn nhân lực và nhiều chức năng khác.
Kiểm thử ứng dụng web
Các ứng dụng web càng ngày càng trở nên phổ biến và phát triển mạnh mẽ,
nhằm đáp ứng tối đa những đòi hỏi của người dùng khi họ bật trình duyệt web
của mình lên. Gần như những gì phần mềm truyền thống làm được thì ứng dụng
web cũng có thể làm được. Và cho đến nay, các ứng dụng web đóng vai trò
quyết định trong thương mại điện tử và trao đổi thông tin.
Muốn tạo ra được ứng dụng web có hiệu năng cao, đáng tin cậy như vậy thì
sau khâu tạo dựng, cần phải kiểm thử ứng dụng đó một cách tỉ mỉ, cẩn thận và
chặt chẽ. Về mặt bản chất, các ứng dụng web cũng là phần mềm, nên các loại
kiểm thử áp dụng cho phần mềm cũng được áp dụng khi kiểm thử ứng dụng
web. Tuy nhiên, người kiểm thử cũng không thể áp dụng một cách cứng nhắc
các phương pháp đó, mà cần phải linh hoạt, biến nó trở nên phù hợp, thích ứng

với kiểm thử ứng dụng web.
3. Các bước kiểm thử ứng dụng web
Một ứng dụng web thường có rất nhiều nhóm người sử dụng với nhiều nền
tảng khác nhau (hệ điều hành, trình duyệt…), người ta cũng rất khó có thể đoán
được số lượng người sử dụng một ứng dụng web là bao nhiêu, rồi thời gian hồi
đáp yêu cầu của người sử dụng đối với ứng dụng là một trong những yếu tố
mang tính quyết định thành bại của ứng dụng…dẫn đến việc kiểm thử ứng dụng
web sẽ có những khác biệt nhất định so với kiểm thử phần mềm truyền thống.
Trong đó, kiểm thử giao diện người dùng, kiểm thử hiệu năng và kiểm thử bảo
mật là những loại kiểm thử mà ứng dụng web cần chú trọng.
 Các bước kiểm thử ứng dụng web:


3.1.


Kiểm thử chức năng
Việc kiểm thử chức năng yêu cầu tester thực hiện test 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 các
thông tin cần thiết từ người dùng. Ngoài ra còn có kết nối cơ sở dữ liệu, kiểm


tra cookies và xác minh HTML/CSS.
Kiểm tra các liên kết (links) bao gồm kiểm tra liên kết ngoài trang web, liên kết
nội bộ, liên kết tới các vị trí trong cùng trang, liên kết sử dụng để gửi email tới



admin hoặc người dùng khác trong trang…
Kiểm tra form của các trang: form là phần cơ bản của các trang web, nên cần
được kiểm tra một cách kỹ càng, bao gồm các yêu cầu sau:
- Không nhập gì vào các trường bắt buộc thì sao?
- Giá trị mặc định của các trường là gì?
- Nhập đầu vào không đúng validate của các trường thì sao?
- Thao tác trên các trường: xem, nhập, lưu, sửa, xóa…



Kết nối cơ sở dữ liệu: yêu cầu kiểm tra tính toàn vẹn của dữ liệu khi tạo, sửa, xóa
form…hoặc bất cứ chức năng nào có liên quan tới cơ sở dữ liệu. Khi truy vấn
cơ sở dữ liệu thì kết quả trả về có tương ứng với kết quả nhìn thấy được trên
giao diện không, dữ liệu có được lấy và cập nhật chính xác không?...




Kiểm thử cookies: cookies là các tệp được tạo bởi trang web đã truy cập để lưu
trữ thông tin duyệt web, như các tùy chọn trang web hoặc thông tin đăng nhập
của người dùng. Người dùng có thể tùy chỉnh trên trình duyệt nhằm quản lý
cookies, thực hiện các thao tác cho phép lưu, hoặc xóa, hoặc chặn…để kiểm tra
các tính năng lưu hoặc không lưu trạng thái đăng nhập, tính năng bảo mật của



ứng dụng web.
Xác minh HTML/CSS: việc xác minh này đặc biệt quan trọng khi developer thực
hiện tối ưu hóa trang web cho các công cụ tìm kiếm, chủ yếu liên quan tới lỗi cú
pháp HTML. Tester sẽ kiểm tra xem trang web có được nhận diện bởi các công

cụ tìm kiếm khác nhau hay không (ví dụ: Google, Yahoo, Bing…)
3.2.
Kiểm thử tính khả dụng
Tính khả dụng của trang web được định nghĩa là trang web dễ sử dụng, có
hướng dẫn sử dụng rõ ràng, rành mạch, mỗi trang đều có menu chính và menu
này phải nhất quán. Tester cần lưu ý những điều này.


Ngoài ra, khi kiểm thử tính khả dụng, tester còn cần thực hiện kiểm thử các
điều khiển chuyển hướng (như button, text box, text link, bread crum…), nội
dung của trang web phải dễ hiểu và thân thiện với người sử dụng. Không có lỗi
chính tả, không khó để đọc chữ, hình ảnh được sắp xếp gọn gàng, hợp lý.
Kiểm thử giao diện
Các giao diện chính bao gồm:
• Giao diện web server và server ứng dụng
• Giao diện server ứng dụng và giao diện server dữ liệu
Kiểm tra tất cả các tương tác giữa các server. Nếu server dữ liệu hoặc web


3.3.

server trả lại bất kỳ báo lỗi nào cho bất kỳ truy vấn nào từ server ứng dụng thì
ngay lập tức server ứng dụng phải nhận được và cho hiển thị cảnh báo tới người
dùng. Kiểm tra các trường hợp giao dịch bị ngắt đột ngột do người dùng, hoặc
kết nối tới server bị gián đoạn, bị khởi động lại…
Kiểm thử khả năng tương thích
Yêu cầu thực hiện các kiểm tra như sau:
Tương thích với trình duyệt (trên máy tính và điện thoại di động): Người dùng

3.4.


khác nhau có thể sử dụng trình duyệt khác nhau tùy theo nhu cầu, thói quen…
của họ. Cần phải kiểm tra ứng dụng web trên càng nhiều trình duyệt càng tốt
(IE, Firefox, Chrome, Safari, Opera…) để kiểm tra sự tương thích. Kiểm tra
trên cả các phiên bản khác nhau của trình duyệt. Kiểm tra trên cả trình duyệt


của thiết bị điện thoại thông minh.
Nếu ứng dụng chạy tốt hơn, hoặc có ưu tiên tương thích hơn với trình duyệt nào



đó thì cần có thông báo tới người dùng.
Tương thích với hệ điều hành: một số chức năng của ứng dụng có thể không
tương thích với một số hệ điều hành, hoặc có những lưu ý khác khi sử dụng,




điều này cần phải được kiểm tra kỹ và thông báo cho người dùng được biết.
Tương thích với các thiết bị ngoại vi (máy in…): khi người dùng có lệnh in trang
thì phải đảm bảo tính chính xác của fonts, cỡ chữ, cỡ giấy…mà người dùng đã
chọn.
Kiểm thử hiệu năng
Bao gồm các yêu cầu:
Kiểm thử tải: kiểm thử hiệu năng của ứng dụng với các tốc độ kết nối mạng khác

3.5.


nhau. Kiểm thử khi có nhiều người dùng cùng truy cập hoặc cùng yêu cầu một


trang xem hệ thống có thể duy trì hoạt động được không? Hoặc kiểm thử khi


người dùng tải lên hoặc tải xuống một số lượng dữ liệu đặc biệt lớn…
Kiểm thử áp lực: tức là việc đẩy hệ thống ra ngoài giới hạn của nó, thử làm gián
đoạn trang web bằng cách tăng lượng tải cao hơn và kiểm tra xem hệ thống
phản ứng như thế nào và phục hồi như thế nào.

3.6.

Kiểm thử bảo mật

Một số case cho kiểm thử bảo mật web như sau:



Gõ trực tiếp url vào thanh địa chỉ của trình duyệt mà không qua đăng nhập. Các



trang nội bộ phải không được mở.
Sau khi đăng nhập và mở các trang nội bộ, thay đổi url trực tiếp bằng cách đổi
tham số ID của trang tới trang thuộc quyền người dùng đã đăng nhập khác. Truy
cập phải bị từ chối bởi người dùng này không thể xem trang thống kê của người



dùng khác.
Thử các giá trị đầu vào không hợp lệ trong các trường username, password. Hệ



thống phải báo lỗi.
Các thư mục web, các tệp tin không được truy nhập trực tiếp mà không có tùy
chọn “Download”.

4.

Tổng kết
Chương II đã giới thiệu được về kiểm thử tự động trên ứng dụng web, khái quát




về ứng dụng web và các bước thực hiện trên ứng dụng web. Các vấn đề chính:
Giới thiệu về ứng dụng web

Tìm hiểu về kiểm thử trên ứng dụng web
Các bước kiểm thử ứng dụng web


CHƯƠNG IV:TÌM HIỂU VỀ SELENIUM
1. Giới thiệu chung về Selenium, cách cài đặt và sử dụng Selenium
1.1. Giới thiệu chung về Selenium.
Selenium (thường được viết là SE) là m ột phần mềm mã nguồn mở,
được phát triển bởi Jason Huggins, sau được phát triển bởi nhóm Thought Work
vào năm 2004.Selenium là một bộ các công c ụ hỗ trợ kiểm thử tự động các tính
năng củaứng dụng Web, bao gồm 4 phần: Selenium IDE, Selenium Remote
Control (RC),Selenium Core và Selenium Grid
Selenium IDE: là môi trường phát triển tích hợp cho việc xây dựng
trường hợp kiểm thử Selenium. Nó ho ạt động như một add-on của Firefox và
cung cấp một giao diện dễ sử dụng để phát triển và chạy trường hợp kiểm thử.
Selenium- IDE có tính năng thu lại kịch bản kiểm thử để tái sử dụng. Nó cũng
có một menu ngữ cảnh tích hợp với trình duyệt Firefox, cho phép người dùng
ch ọn từ một danh sách xác minh (verify) và khẳng định (assert) cho các yếu tố
giao diện đã ch ọn. Selenium-IDE cũng cung cấp các chức năng chỉnh sửa các
trường hợp kiểm thử chính xác và dễ kiểm soát hơn.Mặc dù Selenium - IDE chỉ


là một Firefox add-on, nhưng các test case tạo ra bằng Selenium-IDE vẫn có th
ể chạy trên các trình duyệt khác bằng cách sử dụng Selenium- RC.
Selenium Core: Công cụ này đã đượ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 hần hết 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 ứng dụng web cần kiểm tra.
Điều này là không thể khi nhân viên ki ểm thử không có quy ền truy cập đến
máy chủ.

Selenium RC (Remote Control): Selenium- RC 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. Ví dụ, nếu trình ứng
dụng trả về một tập kết quả của việc kiểm thử, và nếu chương trình thử nghiệm
tự động cần chạy thử nghiệm trên mỗi phần tử trong tập hợp kết quả, hỗ trợ lặp
đi lặp lại các ngôn ng ữ lập trình có thể được sử dụng để chuyển đổi thông qua
vi ệc tập hợp kết quả, kêu gọi lệnh Selenium chạy thử nghiệm trên mỗi mục.
Selenium - RC 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 thử nghiệm cũng cho phép thử nghiệm tự động được
tích hợp với một dự án xây dựng môi trường tự động.
1.2. Selenium IDE.
1.2.1 Giới thiệu về Selenium IDE.
Selenium IDE là một add-on của Mozilla Firefox phiên bản 2.0 trở lên, ban
đầu được phát triển bởi Shinya Kasatani theo hướng sử dụng Selenium Core mà
không c ần cài đặt. Selenium vào máy ch ủ ứng dụng. Nó được xây dựng sử
dụng JavaScript do vậy mà nó có th ể tương tác với DOM (Document Object
Model), sử dụng được những cách gọi Java Script.
Selenium cho phép ghi lại những hành động trong luồng công vi ệc cần
kiểm tra bằng các chức năng Record và Playback.


Selenium IDE cũng chứa một menu ngữ cảnh cho phép lựa chọn yếu tố
giao diện người dùng t ừ các trình duyệt đang hiển thị trang và sau đó chọn từ
một danh sách các l ệnh Selenium và các thông s ố được xác định theo ngữ cảnh
của phần giao diện người dùng lựa chọn.
1.2.2 Hướng dẫn cài đặt Selenium IDE.
Để kiểm tra xem trên trình duyệt Firefox đã được cài selenium IDE.
Người dùng có thể vào bật trình duyệt này và nhấp vào Tools trên menu Bar.

Quan sát trên menu đổ xuống có mục selenium IDE không? Nếu chưa có thì
thực hiện những bước sau để cài tiện ích này của Firefox
- Bước

1: Vào trang tại thẻ

“Download” click vào phiên bản IDE.

Hình 6. Trang Download tiện ích IDE
-

Bước 2: Popup như phía dưới hiện lên. Click “Alow” để cho phép cài đặt phần
mềm trên máy tính.


Hình 7. Popup Alow hiển thị khi cài đặt IDE

-

Bước 3: Màn hình tiếp theo hiển thị. Click “Install Now”

Hình 8. Các thành phần được cài đặt trong Selenium IDE

- Bước

4: Khởi động lại trình duyệt Firefox.

- Bước

5: Lần đầu khởi động Selenium của bạn


Click vào Tool trên Menu Bar, di chuyển chuột và click lên mục Selenium IDE

Hình 9. Thao tác mở IDE trên menu Tools


Một cửa sổ mới bật ra như hình vẽ dưới đây:

Hình 10. Giao diện Selenium IDE

1.2.3.Các icon của Selenium IDE.
Phần này sẽ giải thích một số thành phần và ký hiệu của Selenium IDE.

Hình 11. Giải thích các thành phần và ký hi ệu của Selenium IDE


Giải thích 1 số ký hiệu :
o Base URL: Đây là URL của ứng dụng web được kiểm thử.
o Thanh trượt

: Điều chỉnh tốc độ nhanh chậm khi chạy testcase.

o Nút

: Chạy tất cả các testcase.

o Nút

: Chạy từng testcase một.


o Nút

: Cho phép dừng thử nghiệm tại bất kỳ một điểm nào bạn muốn.

o Nút

: Sau khi click vào biểu tượng Pause, nó s ẽ chuyển sang biểu tượng

Resume. Với nút này cho phép b ạn có th ể tiếp tục chạy thử nghiệm của bạn
tạiđoạn bạn đã dừng.
o Nút

: Bỏ qua một testcase khi nó đã bị tạm dừng.

o Nút

: Được sử dụng để thu các testcase qua những thao tác bạn tác động

đến trang web cần kiểm thử.
o Textbox Command: dòng lệnh.
o Textbox Target: Kết quả mong đợi của dòng lệnh.
o Textbox Value: Giá trị đầu vào của dòng lệnh
Bảng Selenium sẽ lưu lại các lệnh, kết quả mong đợi và giá tr ị đầu vào của các lệnh.
Nếu Click vào tab Source, ta có th ể thấy Selenium IDE lưu trữ các testcase có
dạng
HTML:


×