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

Sử dụng jmeter để kiểm thử

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.24 MB, 55 trang )

Học viện Kỹ thuật Mật Mã

BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ
-----□□&□□-----

THỰC TẬP CƠ SỞ

KIỂM THỬ WEBSITE
(Nhóm 72)

Giảng viên hướng dẫn: Ths Nguyễn Đức Hiếu
Sinh viên thực hiện: Nguyễn Trọng Hiếu – AT140613
Vũ Hồng Việt – AT140552
Nguyễn Đắc Thành – AT140442
Hà Nội, 2020

1


Học viện Kỹ thuật Mật Mã

LỜI NÓI ĐẦU
Trong thời buổi cơng nghệ thơng tin có mặt khắp các lĩnh vực, các tổ chức cá nhân,
doanh nghiệp ngày càng phát triển mạnh mẽ. Nhu cầu sử dụng các phần mềm để thực
hiện các cơng việc được nhanh chóng, chính xác và hiệu quả ngày càng tăng. Việc đảm
bảo chất lượng phần mềm ngày càng trở lên quan trọng. Bên cạnh các phần mềm truyền
thống, người ta còn sử dụng các phần mềm chạy trên nền web. Chính vì điều đó website
ngày càng được sử dụng rộng rãi.
Ngoài ra, để đáp ứng nhu cầu chia sẻ thông tin, cũng như truyền đạt thơng tin một
cách nhanh chóng và tiếp cận với nhiều người nhất thì website chính là phương tiện có


khả năng làm tốt nhất cơng việc đó.
Ngày nay, các website được phát triển một cách cực kỳ mạnh mẽ và nhanh chóng.
Tuy nhiên, đi cùng với sự phát triển vượt bậc và tiện lợi như thế thì cũng có khơng ít các
trở ngại dẫn đến việc website không được hoạt động một cách hiệu quả nhất. Do đó, cần
thiết phải kiểm thử và đảm bảo chất lượng của website.
Với sự hướng dẫn của thầy Nguyễn Đức Hiếu, nhóm chúng em thực hiện đề tài
“Kiểm thử website” và thực hiện trên một sản phẩm website được bọn e chọn. Do hạn
chế về mặt kiến thức cho nên không thể tránh khỏi sai sót trong q trình làm báo cáo, rất
mong được sự giúp đỡ và chỉ dạy của thầy và các bạn.
Chúng em xin chân thành cảm ơn!

MỤC LỤC
2


Học viện Kỹ thuật Mật Mã

DANH MỤC ẢNH............................................................................................................5
DANH MỤC BẢNG..........................................................................................................6
PHẦN 1: MỞ ĐẦU............................................................................................................7
1.1 Tầm quan trọng của việc kiểm thử........................................................................7
1.2 Lý do chọn đề tài.....................................................................................................7
1.3 Mục đích đề tài........................................................................................................8
PHẦN 2: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM....................................................8
2.1 Khái niệm kiểm thử phần mềm.............................................................................8
2.1.1 Khái niệm kiểm thử phần mềm.........................................................................8
2.1.2 Một số khái niệm liên quan...............................................................................8
2.2 Vai trò và mục tiêu kiểm thử phần mềm...............................................................9
2.2.1 Vai trò kiểm thử phần mềm...............................................................................9
2.2.2 Mục tiêu kiểm thử phần mềm.........................................................................10

2.3. Các mức độ kiểm thử...........................................................................................10
2.5 Phân biệt Retesting và Regression Testing..........................................................12
2.6 Quy trình kiểm thử phần mềm............................................................................13
2.7 Các chiến lược kiểm thử.......................................................................................14
PHẦN 3: KIỂM THỬ WEBSITE....................................................................................16
3.1 Kiểm thử tự động..................................................................................................16
3.1.1 Khái niệm kiểm thử tự động............................................................................17
3.1.2 Mục đích kiểm thử tự động.............................................................................17
3.1.3 Ưu nhược điểm kiểm thử tự động...................................................................17
3.1.4 Quy trình kiểm thử tự động.............................................................................19
3.2 Kiểm thử Website..................................................................................................20
3.2.1 Khái quát về kiểm thử Website........................................................................20
3.2.2 Thành phần bên trong trang Web...................................................................21
3.2.3 Tại sao cần kiểm thử Website..........................................................................21
3.3 Những phương pháp kỹ thuật khi kiểm thử Website.........................................22
3


Học viện Kỹ thuật Mật Mã

3.3.1 Kiểm thử chức năng (Functional testing).......................................................22
3.3.2 Kiểm thử hiệu suất (Performance testing)......................................................25
3.3.3 Kiểm thử bảo mật............................................................................................25
3.4 Các công cụ kiểm thử tự động Website...............................................................26
3.4.1 Công cụ Selenium............................................................................................26
3.4.2 Công cụ Apache Jmeter...................................................................................29
PHẦN 4: THỰC NGHIỆM..............................................................................................34
4.1 Đặc tả một số chức năng.......................................................................................34
4.1.1 Chức năng đăng ký..........................................................................................34
4.1.2 Chức năng đăng nhập.....................................................................................37

4.2 Testcase..................................................................................................................39
4.2.1 Testcase Đăng ký..............................................................................................39
4.2.2 Testcase Đăng nhập.........................................................................................44
4.3 Sử dụng Selenium để kiểm thử chức năng..........................................................46
4.3.2 Kiểm thử chức năng Đăng Nhập....................................................................46
4.3.1 Kiểm thử chức năng Đăng Kí.........................................................................50
4.5 Sử dụng JMeter để kiểm thử hiệu năng..............................................................53
DANH MỤC TÀI LIỆU THAM KHẢO..........................................................................55

4


Học viện Kỹ thuật Mật Mã

DANH MỤC Ả
Hình 3. 1: .......................................................................................20
Hình 3. 2: : Giao diện web selenium................................................................................27
Hình 3. 3: Tải xuống Selenium IDE.................................................................................27
Hình 3. 4: Tiện ích--> Selenium.......................................................................................28
Hình 3. 5: Giao diện khởi tạo Selenium...........................................................................28
Hình 3. 6: Jmeter tạo người dùng ảo lên máy chủ web....................................................30
Hình 3. 7: Giao diện web JMeter.....................................................................................32
Hình 3. 8: Folder bin của JMeter....................................................................................33
Hình 3. 9: Giao diện mặc định của JMeter......................................................................33
Y

Hình 4. 1: Giao diện đăng ký...........................................................................................34
Hình 4. 2: Giao diện đăng nhập......................................................................................37
Hình 4. 3: Kịch bản test chức năng đăng ký....................................................................46
Hình 4. 4: Kết quả test đăng ký thành cơng.....................................................................47

Hình 4. 5:Kết q test đăng kí Email khơng đúng định dạng:.........................................47
Hình 4. 6: Kết quả test đăng kí thiếu thơng tin................................................................49
Hình 4. 7:Kết quả test đăng ký Email đang tồn tại..........................................................49
Hình 4. 8: Kịch bản test đăng nhập.................................................................................50
Hình 4. 9: Kết quả test đăng nhập thành cơng.................................................................51
Hình 4. 10: Kết quả test đăng nhập bị sai thơng tin.........................................................51
Hình 4. 11: Kết quả test đăng nhập để rỗng thơng tin.....................................................52
Hình 4. 12: Kết quả test đăng nhập mật khẩu để rỗng thơng tin......................................52
Hình 4. 13: Kết quả test đang nhập mật khẩu sai............................................................53
Hình 4. 14: Kịch bản kiểm thử hiệu năng........................................................................54
Hình 4. 15: Aggregate Report..........................................................................................55

5


Học viện Kỹ thuật Mật Mã

DANH MỤC BẢNG
Bảng 2. 1: : Retesting và Regression Testing...................................................................12
Bảng 2. 2: Quy trình kiểm thử..........................................................................................14

Bảng 3.1: Quy trình kiểm thử tự động……………………………………………………..…..
Bảng 4. 1: Đặc tả chức năng đăng ký..............................................................................35
Bảng 4. 2: Đặc tả chức năng đăng nhập..........................................................................38
Bảng 4. 3: Testcase Đăng ký............................................................................................39
Bảng 4. 4: Testcase Đăng nhập........................................................................................44
Y

PHẦN 1: MỞ ĐẦU
1.1 Tầm quan trọng của việc kiểm thử

Kiểm thử phần mềm là hoạt động cần thiết vì khơng có bất cứ một sản phầm phần
mềm nào được tạo ra một cách hồn hảo, khơng có lỗi. Một số những lỗi sẽ khơng gây
ảnh hưởng nhiều đến sản phẩm tuy nhiên có một số lỗi rất lớn cần phải được sửa chữa kịp
thời. Chúng ta cần kiểm tra tỉ mỉ mọi thứ, bất cứ thứ gì chúng ta tạo ra bởi vì mọi thứ
ln khơng hoàn hảo 100%.
1.2 Lý do chọn đề tài
Website ra đời đã mở ra hướng mới cho việc phát triển các ứng dụng trên Internet.
Website kết hợp sử dụng nhiều công nghệ khác nhau, cho phép hai ứng dụng dùng chung
một ngôn ngữ, độc lập hệ điều hành trao đổi được với nhau thông qua môi trường mạng.
Điểm khác biệt lớn nhất và đặc trưng nhất của một trang Web là có thể liên kết được với
các trang Web khác, và các trang Web khác ấy lại liên kết với rất nhiều các trang Web
khác nữa tạo thành một mạng lưới liên kết khổng lồ trên toàn thế giới. Tuy nhiên, nó
mang đến cho các nhà kiểm thử và phát triển phần mềm nhiều thách thức.
Sự phức tạp, tính linh hoạt và phụ thuộc các ứng dụng vào một dịch vụ, thiếu thử
nghiệm là một trong những thách thức mà các nhà phát triển Website phải đối mặt. Vì
6


Học viện Kỹ thuật Mật Mã

vậy, nhu cầu kiểm thử Website ngày càng tăng lên và trở thành thiết yếu đối với dự án
phần mềm.
Các lỗi là nguyên nhân chính của năng suất thấp và là kết quả của những sai xót
trong suốt vịng đời phát triển của phần mềm. Những lỗi này bao gồm mội lỗi thực thi,
các lỗi bảo mật, thực hiện sai chức năng, lỗi sụp đổ hệ thống… càng sớm phát hiện vấn
đề thì càng dễ sửa lỗi và giảm thời gian, chi phí cho phần mềm.
Nói chung, các nhà phát triển, nhà nghiên cứu, những chuyên gia dựa vào thực
nghiệm kiểm tra tính đảm bảo các chức năng dịch vụ, độ tin cậy của Website, cung cấp
giải pháp kiểm thử tự động. Ngoài ra, khả năng tương tác, an ninh và các vấn đề liên
quan đều có ảnh hưởng đến cả nhà sản xuất và người sử dụng.

1.3 Mục đích đề tài
Mục đích lựa chọn đề tài của chúng em là tìm hiểu những kiến thức tổng quan về
phần mềm, có thể viết testcase và kiểm thử Website và tìm hiểu về các cơng cụ kiểm thử
tự động để giúp cho việc kiểm thử nhanh chóng và hiệu quả hơn. Hơn thế nữa, thực hiện
đề tài này sẽ giúp cho chúng em có những kiến thực bổ ích để phục vụ cho cơng việc
trong tương lai.

PHẦN 2: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM
2.1 Khái niệm kiểm thử phần mềm
2.1.1 Khái niệm kiểm thử phần mềm
Kiểm thử phần mềm là một cuộc kiểm tra được tiến hành để cung cấp cho cá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ử. Hiểu theo
cách đơn giản hơn, kiểm thử phần mềm là quá trình tìm thất bại hoặc chứng tỏ việc tiến
hành của phần mềm là đúng đắn

7


Học viện Kỹ thuật Mật Mã

2.1.2 Một số khái niệm liên quan
• Chất lượng phần mềm (Software quality): là mức độ mà một hệ thống, thành phần
hay quy trình đáp ứng các yêu cầu của đặc tả phần mềm, các nhu cầu mong đợi của khách
hàng hoặc người sử dụng.
• Đảm bảo chất lượng phần mềm (Software quality assurance): là một quy trình có
kế hoạch và hệ thống của tất cả các hành động cần thiết để cung cấp các thơng tin đầy đủ
để đảm bảo các sản phẩm có phù hợp với các yêu cầu về kỹ thuật hay khơng. Mục đích
cuối cùng là để đánh giá quy trình sản xuất sản phẩm phần mềm.
• Xác nhận (Validation): 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 u cầu quy định.

• Xác minh, kiểm chứng (Verification): là quá trình đánh giá một hệ thống hay thành
phần để xác định xem các sản phẩm của một giai đoạn phát triển nhất định đáp ứng các
điều kiện áp đặt tại lúc bắt đầu của giai đoạn đó. Xác minh thường là hoạt động có tính
kỹ thuật cao hơn, sử dụng những tri thức về các yêu cầu, đặc tả phần mềm. Xác nhận
thường phụ thuộc vào tri thức về lĩnh vực tương ứng. Cụ thể là, tri thức về ứng dụng của
phần mềm được viết. Ví dụ, xác nhận của phần mềm về máy bay yêu cầu tri thức từ kỹ sư
hàng không và phi cơng.
• Lỗi (Error): Lỗi là những vấn đề mà con người mắc phải trong quá trình phát triển
các sản phẩm phần mềm.
• Sai (Fault): Sai là kết quả của lỗi, hay nói khác đi, lỗi sẽ dẫn đến sai.
• Thất bại (Failure): Thất bại xuất hiện khi một lỗi được thực thi.
• Sự cố (Incident): Khi thất bại xuất hiện, nó có thể hiển thị hoặc khơng, tức là rõ
ràng hoặc không rõ ràng đối với người dùng hoặc người kiểm thử. 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.

8


Học viện Kỹ thuật Mật Mã

• Ca kiểm thử (Test case): Ca kiểm thử gồm một tập các dữ liệu đầu vào và một xâu
các giá trị đầu ra mong đợi đối với phần mềm, mục đích là dựa vào đó để kiểm tra xem
phần mềm có thỏa các yêu cầu đặt ra hay khơng.
• Kịch bản kiểm thử (Test script): Một kịch bản kiểm thử là một nhóm mã lệnh dạng
đặc tả kịch bản dùng để tự động hóa một quy trình hay một ca kiểm tra, giúp cho việc
kiểm tra nhanh hơn, hoặc cho những trường hợp mà kiểm tra bằng tay sẽ rất khó khăn
hoặc khơng khả thi.
2.2 Vai trò và mục tiêu kiểm thử phần mềm
2.2.1 Vai trò kiểm thử phần mềm

Kiêm thử phần mềm chiếm một vị trí quan trọng ưong việc nâng cao chất lượng
cũng như độ tin cậy của phần mềm trong quá trình phát triển. Hồn thành vịng quay
“đưa lỗi vào - tìm lỗi - khử lồi đi” của quy trình kiểm thử phần mềm sẽ thu lại được
những cải tiến đáng kè cho chất lượng sản phàm phần mềm. Việc biết được sản phàm
phần mềm tốt tới mức nào trước khi đưa vào sử dụng sẽ hạn chế tổi đa những rủi ro gặp
phải trong quá trình phát triển phần mềm.
2.2.2 Mục tiêu kiểm thử phần mềm





Phát hiện càng nhiều lỗi càng tốt trong thời gian kiểm thử xác định trước.
Chứng minh rằng sản phẩm phần mềm phù hợp với các đặc tả yêu cầu của nó.
Xác thực chất lượng kiểm thử phần mềm đã dùng chi phí và nỗ lực tối thiểu.
Tạo các testcase chất lượng cao, thực hiện kiểm thử hiệu quả và tạo ra các báo cáo
vấn đề đúng và hữu dụng.

2.3. Các mức độ kiểm thử
Một sản phẩm phần mềm từ khi bắt đầu phát triển đến khi hoàn thành và đưa đến
người dùng cuối phải trải qua bốn mức kiểm thử.

9


Học viện Kỹ thuật Mật Mã

Hình 2. 1: Các mức độ kiểm thử phần mềm
Kiểm thử đơn vị (Unit Test)
Một đơn vị là một thành phần phần mềm nhỏ nhất mà ta kiểm tra được. Nó bao gồm

các hàm (Function), thủ tục (Procedure), lớp (Class) hoặc các phương thức (Method).
Kiểm tra đơn vị được thực hiện để kiểm tra xem các module riêng lẻ của mã nguồn
có hoạt động đúng hay không. Tức là kiểm tra từng đơn vị của ứng dụng một cách riêng
biệt bởi lập trình viên trong môi trường phát triển. Đây là thử nghiệm module. Unit
testing là kiểu kiểm thử hộp trắng (White box testing).
Kiểm thử tích hợp (Intergration Test)
Là cấp độ kiểm thử phần mềm trong đó các đơn vị riêng lẻ được kết hợp và thử
nghiệm dưới dạng một nhóm. Một dự án phần mềm bao gồm nhiều module, được lập
trình bởi nhiều người khác nhau. Kiểm thử tích hợp tập trung vào kiểm tra truyền dữ liệu
giữa các module (Tích hợp các hàm, các màn hình với nhau theo từng chức năng). Mục
đích nhằm phát hiện lỗi giao tiếp xảy ra giữa các Unit cũng như lỗi của từng Unit.
Kiểm thử hệ thống (System Test)
Là một mức độ kiểm thử phần mềm khi các module và tích hợp module đã được
kiểm thử thành công.

10


Học viện Kỹ thuật Mật Mã

Điểm khác nhau 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 lỗi trên toà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 vị hoặc đối tượng khi chúng làm việc cùng nhau. Thông thường phải thực hiện
kiểm thử đơn vị và tích hợp để đảm bảo 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 kiểm thử hệ thống. Kiểm thử hệ thống bao gồm kiểm thử
chức năng và phi chức năng.
Kiểm thử hệ thống được thực hiện bởi một nhóm kiểm thử viên hồn tồn độc lập
với nhóm phát triển dự án với mục tiêu là đánh giá phần mềm có tuân thủ với đặc tả yêu
cầu.
Kiểm thử chấp nhận (Acceptance Test)

Mức kiểm thử này giống với kiểm thử hệ thống nhưng thường được khách hàng
thực hiện kiểm tra, mục đích là xem phần mềm có đáp ứng yêu cầu của khách hàng chưa
và có thể chấp nhận hay khơng chấp nhận bàn giao sản phẩm.
Trong kiểm thử chấp nhận chia ra 2 loại:
 Alpha: Là việc kiểm thử hoạt động chức năng thực tế hoặc giả lập do người
dùng/khách hàng tiềm năng hoặc một nhóm kiểm tra độc lập tại nơi sản xuất phần
mềm. Alpha testing thường được dùng cho phần mềm đóng gói sẵn để bán (Ví dụ:
MS office, window, chương trình diệt virus) là một hình thức kiểm thử nội bộ,
trước khi phần mềm được tiến hành kiểm thử beta.
 Beta: Được thực hiện sau Alpha testing. Các phiên bản của phần mềm được biết
như các phiên bản của beta, chúng được phát hành tới một số lượng người dùng
bên ngồi nhóm sản xuất phần mềm. Sản phầm được phát hành đến một số nhóm
người để kiểm tra nhiều hơn nữa có thể chắc chắn rằng sản phẩm có một số lỗi.

2.5 Phân biệt Retesting và Regression Testing
Bảng 2. 1: Retesting và Regression Testing
11


Học viện Kỹ thuật Mật Mã

Retesting

Regression Testing

Re-testing được thực hiện nhằm đảm bảo Regresstion Testing được thực hiện
các test case bị lỗi đã được pass trong

nhằm xác nhận một chương trình hoặc


bản build cuối cùng sau khi lỗi được fix

một thay đổi mã gần đây không làm ảnh

Re-testing được thực hiện trên cơ sở các

hưởng đến các chức năng hiện có
Mục đích của Regression Testing là

bản sửa lỗi

những sự thay đổi mã không làm ảnh

Xác minh lỗi là một phần của Re-testing

hưởng đến những chức năng đã tồn tại
Xác minh lỗi không phải là một phần của

Ưu tiên của Re-testing cao hơn

Regression Testing
Dựa trên dự án và nguồn lực sẵn có,

regression testing, vì nó được thực hiện

Regresstion Testing có thể thực hiện

trước khi kiểm thử hồi quy
Không thể thực hiện kiểm thử tự động


song song với Re-testing
Có thể thực hiện kiểm thử tự động trong

với Re-testing

Regression Testing, manual testing có

Re-testing là thử nghiệm có kế hoạch

thể tốn kém và tốn thời gian
Regression Testing là thử nghiệm chung

Re-testing thực hiện trên các test case

Regression Testing thực hiện trên các

failed
Re-testing đảm bảo rằng những lỗi ban

test case đã passed
Regression Testing kiểm tra những ảnh

đầu đã đúng
Re-testing thực thi một lỗi với dữ liệu và

hưởng không mong muốn
Regression Testing chỉ được thực hiện

môi trường giống nhau với những đầu


khi có bất kỳ sự sửa chữa hoặc thay đổi

vào khác nhau với một bản build mới
Test case của Re-testing không thể được

nào được thực hiện trong project hiện có
Test case của Regression Testing có thể

xác định trước khi bắt đầu test

thu được từ spec, hướng dẫn sử dụng, và
báo cáo lỗi liên quan đến những vấn đề
đã sửa

12


Học viện Kỹ thuật Mật Mã

2.6 Quy trình kiểm thử phần mềm
Kiểm thử phần mềm bao gồm nhiều giai đoạn với sự phối hợp của nhiều bên liên
quan chứ không chỉ là một hoạt động đơn lẻ. Chính vì thế, cần có quy trình kiểm thử
phân mêm để làm rõ các công đoạn, các bước kiểm thử, người chịu trách nhiệm và khi
nào việc kiểm thử được tiến hành trong tồn bộ quy trình phát triển phần mềm. Nói cách
khác, quy trình kiểm thử phần mềm chính là chuồi các hoạt động được tiến hành để thực
hiện việc kiểm thử. Các giai đoạn trong quy trình kiểm thử phần mềm được biểu diễn
tổng quát bằng sơ đồ sau:

Bảng 2. 2: Quy trình kiểm thử


13


Học viện Kỹ thuật Mật Mã

2.7 Các chiến lược kiểm thử
Trong lĩnh vực kiểm thử phần mềm có rất nhiều các chiến lược được áp dụng hiện
nay. Về cơ bản có 3 chiến lược chính được áp dụng một cách phổ biến và rộng rãi nhất
cùng với các ưu nhược điểm của nó. Ba chiến lược đó là:
Kiểm thử hộp trắng
Kỹ thuật kiểm thử hộp trắng hay còn gọi là “kiểm thử cấu trúc” là kỹ thuật kiểm thử
dựa vào thuật toán, cấu trúc mã nguồn bên trong của chương trình với mục đích đảm bảo
rằng tất cả các câu lệnh và điều kiện sẽ được thực hiện ít nhất một lần. Người kiểm thử
truy cập vào mã nguồn chương trình và kiểm thử nó, lấy đó làm cơ sở để thực hiện việc
kiểm thử. Kiểm thử hộp trắng bao gồm các công việc cơ bản: Kiểm thử đường dẫn, kiểm
thử luồng điều khiển, kiểm thử nội bộ (xác nhận các tham số, vịng lặp), kiểm thứ tính
năng (kiểm tra thời gian xứ lý, dữ liệu cụ thế). Tuy nhiên, việc kiểm thử hộp trắng tồn tại
khá nhiều hạn chế như: khơng thể đảm bảo rằng chương trình đã tn theo đặc tả, khó
phát hiện được các lỗi do dừ liệu, thiếu đường dẫn, v.v. Như vậy, không thể chỉ sử dụng
kiểm thứ hộp trắng để kiểm thử chương trình.
14


Học viện Kỹ thuật Mật Mã

Hình 2. 2: Kiểm thử hộp trắng
Kiểm thử hộp đen
Là kỹ thuật 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 mã nguồn bên trong được viết ra sao. Với kỳ thuật này, kiểm thử viên xem phần
mềm như là một hộp đen. Để thực hiện, kiểm thử viên sẽ xây dựng các nhóm giá trị đầu

vào sao cho chúng có thể thực hiện đầy đủ các chức năng cần có của chương trình. Kiểm
thử hộp đen sử dụng các phương pháp: phân tích giá trị biên, kiểm thử tính bền vừng,
kiểm thử trường hợp xấu nhất, kiếm thử phân lớp tương đương miền dữ liệu đầu vào, đầu
ra, kiểm thứ giá trị đặc biệt, kiểm thử dựa trên bảng quyểt định. Tất cảc ác phương pháp
trên đều dựa trên thông tin xác định về các thành phần đang được kiểm thử

Hình 2. 3: Kiểm thử hộp đen

15


Học viện Kỹ thuật Mật Mã

Kiểm thử hộp xám
Kiểm thử hộp xám là 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 trắng (White Box) và hộp đen (Black Box). Trong kiểm thử hộp xám,
cấu trúc bên trong sản phẩm chỉ được biết một phần người kiểm thử có thể truy cập vào
cấu trúc dữ liệu bên trong thuật tốn của chương trình với mục đích để thiết kế các test
case, nhưng khi kiểm thử thì thực hiện kiểm tra như người dùng cuối hoặc là ở mức hộp
đen.
Ví dụ khi code của 1 module nào đó được xem xét (Phương pháp White Box
Testing) để thiết kế test case và khi kiểm tra thực tế sẽ thực hiện kiểm tra trên giao diện
người dùng (Phương pháp Black Box Testing).

Hình 2. 4: Kiểm thử hộp xám

PHẦN 3: KIỂM THỬ WEBSITE
3.1 Kiểm thử tự động
Kiểm thử phần mềm tốn nhiều chi phí nhân cơng, thời gian. Trong một số dự án, chi
phí kiểm thử phần mềm chiếm 50% tổng giá trị của dự án. Nếu cần ứng dụng an tồn

hơn, chi phí kiểm thử cịn cao hơn nữa. Do đó một trong các mục tiêu của kiểm thử là tự
động hóa nhiều, nhờ đó mà giảm thiểu chi phí, giảm lỗi, đặc biệt giúp việc kiểm thử hồi
qui dễ dàng và nhanh chóng hơn. Tự động hóa việc kiểm thử là dùng phần mềm điều
khiển việc thi hành kiểm thử, so sánh kết quả có được với kết quả mong muốn, thiết lập
các điều kiện đầu vào, các kiểm soát kiểm thử và các chức năng báo cáo kết quả...
16


Học viện Kỹ thuật Mật Mã

3.1.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 bằng một công cụ nhằm rút ngắn thời gian kiểm thử.
3.1.2 Mục đích kiểm thử tự động
Kiểm thử phần mềm tự động với mục đích:
 Giảm bớt công sức và thời gian thực hiện quá trình kiểm thử - Tăng độ tin
cậy.
 Giảm sự nhàm chán cho con người
 Rèn luyện kỹ năng lập trình cho kiểm thử viên - Giảm chi phí cho tổng quá
trình kiểm thử. Khi nào cần kiểm thử tự động?
 Không đủ tài nguyên: Khi số lượng TestCase quá nhiều mà kiểm thử viên
khơng thể hồn tất trong thời gian cụ thể - Kiểm tra hồi quy: Nâng cấp phần
mềm, kiểm tra lại các tính năng đã chạy tốt và những tính năng đã sửa. Tuy
nhiên, việc này khó đảm bảo về mặt thời gian
 Kiểm tra khả năng vận hành phần mềm trong môi trường đặc biệt: Đo tốc độ
trung bình xử lý một yêu cầu của Web server. Xác định số yêu cầu tối đa
được xử lý bởi Web Server. Xác định cấu hình máy thấp nhất mà PM vẫn có
thể hoạt động tốt.
3.1.3 Ưu nhược điểm kiểm thử tự độ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 cases
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): Hãy cùng xem xet một ví dụ: Trong một ngày
thời tiết xấu chúng ta phải thực thi một test case với 50 bộ dữ liệu đầu vào
khác nhau. Nếu thực thi cách thủ cơng, ngồi 21 trước màn hình, nhập dữ
liệu, click click .., check check … trong 50 lần có lẽ bạn sẽ gục ngã sớm
trên bàn làm việc của mình. NHƯNG, nếu bạn thực thi bằng kiểm thử tự
17


Học viện Kỹ thuật Mật Mã

động, chỉ cần nhập dữ liệu vào file excel ( or csv, …) cho script chạy và
ngồi rung đùi cho tới khi nhận được báo cáo. Với độ ổn định cao, bạn hồn
tồn có thể tin tưởng vào kết quả thực thi của công cụ kiểm thử tự động.
Quả là một viễn cảnh lý tưởng hơn nhiều.
 Khả năng tái sử dụng (Reusability): Với một bộ kiểm thử tự động, chúng 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.
 Nhanh (Fast): Đây là điều không cần phải bàn cãi, nếu cần 5 phút để thực
thi một test case cách thủ cơng, có thể bạn cần chưa đầy 30s để thực thi
cách tự động.
 Chi phí thấp (Cost Reduction): Nếu áp dụng kiểm thử tự động đúng cách,
chúng ta có thể tiết kiệm được rất nhiều chi phí, thời gian và nhân lực. (Khi
nào nên áp dụng kiểm thử tự động sẽ được nói ở cuối bài.
 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 là khó hơn

nhiều so với kiểm thử cách 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, chúng 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): Chính vì việc khó ứng dụng, khó
mở rộng, cũng như địi hỏi q nhiều kỷ năng lập trình nên độ bao phủ của
kiểm thử tự động khá thấp (xét trên góc nhìn tồn dự án).
 Vấn đề cơng cụ và nhân lực (Technology vs. people issues): Cho đến nay
công cụ hỗ trợ kiểm thử tự động đã có những bước phát triển mạnh mẽ,
chúng ta có các cơng cụ rất tốt như QTP, Selenium, Test Complete,
LoadTest, Jmeter, Visual Studio, … Nhưng nhìn chung vẫn cịn rất nhiều
mặt hạn chế. Ngồi ra nguồn nhân lực đạt u cầu cũng khơng nhiều

18


Học viện Kỹ thuật Mật Mã

3.1.4 Quy trình kiểm thử tự động
Bảng sau mô tả rõ hơn các bước thực hiện kiểm thử tự động :
Bảng 3. 1: Quy trình kiểm thử tự động

3.2 Kiểm thử Website
3.2.1 Khái quát về kiểm thử Website
Kiểm thử Website là một phần cả kiểm thử phần mềm. Vì vậy, các cơng cụ kiểm
thử cho phần mềm cũng sẽ được ứng dụng để kiểm thử Website. Tuy nhiên, người kiểm
thử không được áp dụng cứng nhắc những phương pháp đó mà cần linh hoạt, biến nó
thành kiểm thử Website một cách thơng minh hơn.


19


Học viện Kỹ thuật Mật Mã

Hình 3. 1:
Kiểm thử là công việc quan trọng đánh giá chất lượng của một sản phẩm và Web
cũng không ngoại lệ. Các phương pháp kiểm thử tập trung vào đánh giá các chức năng
yêu cầu. Tuy nhiên, không thể nào tập trung vào được hết các chức năng yêu cầu. Bởi có
rất nhiều chức năng quan trọng cho người sử dụng như là: tính hiệu quả, tính dễ sử dụng,
độ tin cậy, tính bảo mật… Những yêu cầu và mong đợi của người sử dụng là những vấn
đề hay gặp phải và đòi hỏi cần phải thay đổi trong suốt quá trình ta xây dựng một trang
Web. Vì thế , cần thiết phải phát triển một chiến lược hiệu quả cho việc kiểm thử mà có
thể bao quát được giới hạn tổng thể rộng lớn của những yêu cầu, chức năng cho một
trang Web, qua đó có thể cài đặt ứng dụng và tránh các rủi ro.
3.2.2 Thành phần bên trong trang Web
Gồm 3 thành phần chính:
 Thành phần phía trình chủ: Ví dụ như các trình chủ Web, trình chủ cơ sở
dữ liệu, trình chủ ứng dụng, ngơn ngữ đánh dấu, kết nối Web đến cơ sở dữ
liệu và các chương trình mở rộng của trình chủ Web.

20


Học viện Kỹ thuật Mật Mã

 Thành phần trình khách: Trình duyệt Web và các thành phần Addon/Plugin.
 Kiến trúc hệ thống: Trong hệ thống trang Web, các thành phần được nhóm
lại thành các cụm dịch vụ liên quan, dưới đây ta tiến hành xem xét hệ

thống Web dưới hai dạng:
 Hệ thống khách chủ truyền thống: Một ứng dụng điển hình gồm có 4
phần: Mã nguồn giao diện người dùng, mã nguồn xử lý logic, mã
nguồn dịch vụ truy cập dữ liệu, lưu dữ liệu.
 Hệ thống khách chủ trên Web: Gồm: Máy khách (dịch vụ người
dùng), máy chủ (dịch vụ xử lý) và các thành phần dịch vụ dữ liệu
(máy chủ)
3.2.3 Tại sao cần kiểm thử Website
 Các trang Web cùng những ứng dụng của nó đưa ra nhiều thử thách đối với
các nhà phát triển khác nhau.
 Chất lượng của trang Web về cơ bản phụ thuộc vào các thành phần kể trên và
khả năng tương tác giữa chúng. Kiểm thử là một trong những công vệc quan
trọng của quá trình phát triển Web tạo ra các sản phẩm Web tốt nhất. Vì vậy
mà việc kiểm thử cũng cần phải có phương pháp, hệ thống riêng.
 Kiểm thử nhằm vào việc tìm ra các lỗi, thiếu xót trong ứng dụng. Vậy vấn đề
ở đây là chúng ta cần phải linh hoạt khi áp dụng làm cho những phương pháp
này phù hợp, thích ứng với việc kiểm thử các trang Web.
 Và ở đây chúng ta sẽ đề cập tới những giải pháp, phương thức và công cụ cho
kiểm thử Web.
3.3 Những phương pháp kỹ thuật khi kiểm thử Website
3.3.1 Kiểm thử chức năng (Functional testing)
Kiểm thử chức năng thường sử dụng kỹ thuật kiểm thử hộp đen nào đó, đặc tả dựa
theo trang Web.

21


Học viện Kỹ thuật Mật Mã

Mục đích kiểm thử là tìm ra các lỗi về mặt chức năng, bao gồm cả nhiều lỗi về chức

năng rất quan trọng, chứng minh chức năng của trang Web không đúng với đặc tả ban
đầu.
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. Ngồi ra cịn có kết nối cơ sở dữ liệu, kiểm tra cookies và xác minh
HTML/CSS.
3.3.1.1 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 ứ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 sc hiến thị ra sao. Đây cũng là tài liệu không thể thiếu cho kiểm
thử viên so sánh, đối chiếu giữa thiết kế và nội dung thực tế của ứng dụng hiển thị trên
trình duyệt.
Mục đích: Kiểm chi chỉ ra các lỗi, chứng minh giao diện của trang Web không đúng
với đặc tả yêu cầu.
Các giao diện chính bao gồm: Giao diện web server và server ứng dụng:





Lỗi chính tả, font chữ, font size…
Giá trị thể hiện.
Cách sắp xếp thông tin, hình ảnh…
Các thanh, các tabs, các mục chi tiết như thế nào?

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 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
22


Học viện Kỹ thuật Mật Mã

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…
3.3.1.2 Kiểm thử liên kết (Links)
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.
Liên kết bên trong một cấu trúc siêu văn mà điểm đến khơng tồn tại một nút (các
trang web, hình ảnh,vv) hoặc được gọi là liên kết hỏng và đại diện nổi tiếng và thường
xuyên xảy ra sai sót trong các ứng dụng Web.
Để kiểm tra cho chính xác của các trang liên kết (link kiểm tra), tất cả các liên kết
được hệ thống theo sau bắt đầu trên một trang bắt đầu, và sau đó được nhóm trong một
đồ thị liên kết ( bản đồ trang web).
Khi chạy một thói quen kiêm tra liên kết, người ta thường thấy các liên kết không
chỉ là điểm đến không tồn tại trang, nhưng cũng có các trang khơng được interlinked với
những người khác hoặc cái gọi là các trang mồ côi. Những trang mồ cơi có thể được đạt
đến thơng qua một liên kết, nhưng khơng có một liên kết đến cấu trúc siêu văn bản.
Để đơn giản cho người sử dụng nó khơng rõ ràng nơi để đi tới, để họ rời bỏ trang
web. Các trang là thiết kế lý tưởng để họ kết thúc bằng một đề nghị của nơi người đọc có
thể đi tiếp theo.
Ngồi ra, khi vượt qua các liên kết, người ta thường có thế tìm thấy dữ liệu bô sung
để cung cấp chi dẫn tiềm năng lồi, ví dụ, độ sâu và bề rộng của các cơ cấu chuyển hướng,
khoảng cách giữa hai tramg liên quan đến các trang, được đo bằng số lượng các liên kết,
hoặc lần tải của các trang.
3.3.1.3 Kiểm thử định dạng sử dụng trong trang Web

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 u cầu sau:
 Khơng nhập gì vào các trường bắt buộc thì sao?
23


Học viện Kỹ thuật Mật Mã






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 tồ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.3.1.4 Kiểm thử Database
Kiểm tra kết nối tới cơ sở dữ liệu và các lỗi truy vấn có thể gặp phải, đảm bảo dữ
liệu được cung cấp chính xác khi các chức năng xem thơng tin, thêm, sửa, xoá, v.v. hoạt
động.
3.3.2 Kiểm thử hiệu suất (Performance testing)
3.3.2.1 Kiêm thử khá năng tải (Load test):
Ở bước này cần xác định thời gian thực thi cho các hành động tương ứng với các
chức năng trên ứng dụng. Công việc này cần được thực hiện ở nhiều thời điềm khác nhau
(giờ cao điểm/thấp điểm) để có những đánh giá khách quan nhất về khả năng tải của ứng
dụng.
3.3.2.1 Kiểm thử độ chịu lỗi (Stress test):
Cơng việc này chính là kiểm tra sức chịu đựng của ứng dụng Web khi có lượng truy
cập cao từ phía người dùng. Trong thực tế đó có thể là nhu cầu sử dụng thực sự của người
24


Học viện Kỹ thuật Mật Mã

dùng đối với ứng dụng hoặc khi máy chủ bị tấn công dưới dạng DDoS. Nói cách khác,
người kiểm thử cần trả lời câu hỏi: số lượng người truy cập cùng lúc là bao nhiêu sẽ đánh
sập hệ thống? Hay đơn giản hơn là khi lượng người truy cập tăng lên ở các mức khác
nhau, ứng dụng cịn hoạt động ơn định hay khơng? Trả lời được các câu hỏi trên sẽ giúp
cho ứng dụng Web khi đưa vào hoạt động tránh được những rủi ro khơng đáng có và
lường trước những nguy cơ có the xảy ra.
3.3.3 Kiểm thử bảo mật
Ứng dụng Web là một trong những loại ứng dụng có nguy cơ bị tấn cơng cao nhất.
Vì vậy, ngồi việc đám bảo ứng dụng chạy đúng, ổn định cần phải kiểm tra nghiêm ngặt
khả năng báo mật của ứng dụng. Các công việc cần làm có thẻ kể đến như:
 Kiểm tra độ tin cậy của việc phân quyền sử dụng trên ứng dụng.
 Đưa lỗi vào bằng cách truyền các tham số không hợp lệ trên URL hay trong các

form nhập liệu. Lồ hống SQL Injection được khai thác mạnh nhất thông qua các
thành phần trên.
 Kiểm tra khả năng truy cập trái phép đối với những thư mục bị cấm trên máy chủ
của ứng dụng.
 Kiểm tra hoạt động các bộ lọc (validation) khi sử dụng chức năng upload tệp tin,
thư mục của ứng dụng (nếu có).
 Kiểm tra độ xác thực khi nhập CAPTCHA trong ứng dụng (nếu có).
3.4 Các cơng cụ kiểm thử tự động Website
Có rất nhiều các công cụ được dùng để kiểm thử Website: Auto Testing Web
Application, Selenium IDE, Qicktest professional(QTP), Functionaly testing, Weblink
Validator, Load runner, Jmeter… Sau đâu chúng em xin giới thiệu một số công cụ tiêu
biểu được dùng để kiểm thử Website:

25


×