Tải bản đầy đủ (.pdf) (28 trang)

Nghiên cứu kĩ thuật kiểm thử Domain, Recovery và Concurrency

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 (792.61 KB, 28 trang )

Báo cáo bài tập lớn

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
MÔN KIỂM THỬ PHẦN MỀM

Đề tài: Nghiên cứu kĩ thuật kiểm thử Domain,
Recovery và Concurrency
Giảng viên: Hồng Quang Huy
Nhóm số: 6
Khóa: K14
Sinh viên thực hiện: Hoàng Hữu Kim
Nguyễn Văn Lâm
Nguyễn Thị Thùy Linh

Hà Nội, 2022

Nhóm 6


Báo cáo bài tập lớn
LỜI NĨI ĐẦU
Hiện nay, cơng nghệ thông tin càng ngày càng phát triển đi cùng với đó là sự
phát triển của phần mền. Có rất nhiều loại phần mềm, chủ yếu là dành cho các thiết
bị như máy tính, điện thoại, máy tính bản. Chúng phục vụ cho nhiều mục đích khác
nhau của đời sống, ví dụ: Phần mềm kế toán, phần mềm vẽ kỹ thuật, phần mềm quản
lý công việc, phần mềm quản lý hàng hóa,…. Nhưng cũng từ đó nảy sinh ra nhiều
vấn đề về lỗi hỏng hóc phần mềm khơng đáng có gây ra các ảnh hưởng nghiêm trọng
đến xã hội, kinh tế,…Để đảm bảo chất lượng phần mềm trước khi đưa ra sử dụng,


tránh các rủi ro cho khách hàng khi đưa phần mềm vào sử dụng, giảm thời gian và
chi phí phát sinh do bảo trì (fix lỗi) cho người viết phần mềm thì kiểm thử là một tiến
trình khơng thể thiếu trong quy trình phát triển phần mềm.
Thật vậy, ngày nay càng ngày các chương trình (các phần mềm) càng trở lên
phức tạp và đồ sộ. Việc tạo ra một sản phẩm có thể bán được trên thị trường địi hỏi
sự nổ lực của hàng chục, hàng trăm thậm chí hàng ngàn nhân viên. Số lượng dòng
mã lên đến hàng triệu. Và để tạo ra một sản phẩm thì không phải chỉ do một tổ chức
đứng ra làm từ đầu đến cuối, mà địi hỏi sự liên kết, tích hợp của rất nhiều sản phẩm,
thư viện lập trình, … của nhiều tổ chức khác nhau… Từ đó địi hỏi việc kiểm nghiệm
phần mềm càng ngày càng trở nên rất quan trọng và rất phức tạp.
Nhằm củng cố kiến thức môn Kiểm thử phần mềm, nhóm chúng em đã nghiên
cứu các kĩ thuật kiểm thử phần mềm cụ thể là Domain Testing, Recovery Testing và
Concurrency Testing.

2
Nhóm 6


Báo cáo bài tập lớn
LỜI CẢM ƠN
Chúng em xin trân thành cảm ơn sự hướng dẫn và chỉ bảo tận tình của thầy
Hồng Quang Huy - giảng viên bộ mơn Kiểm thử phần mềm, trường Đại Học Công
Nghiệp Hà Nội. Thầy đã cho chúng em nhiều kiến thức quan trọng và nhiều ý kiến
đóng góp q giá.
Tuy nhiên, do trình lượng kiến thức còn khá hạn chế, chúng em đã cố gắng
nhưng sẽ khơng thể tránh khỏi những thiếu sót do vậy chúng em rất mong nhận được
ý kiến đóng góp của thầy, cơ giáo và những người quan tâm đến đề tài này để đề tài
này của chúng em được hoàn thiện hơn nữa.
Lời cuối cùng, chúng em xin kính chúc thầy cơ lời chúc sức khỏe, thành cơng
trong cuộc sống.


Nhóm sinh viên thực hiện
Nguyễn Văn Lâm
Hồng Hữu Kim
Nguyễn Thị Thùy Linh

3
Nhóm 6


Báo cáo bài tập lớn
TÓM TẮT NỘI DUNG
Đề tài “Nghiên cứu kĩ thuật kiểm thử Recovery, Domain và Concurrency”
giúp kiểm tra khả năng khôi phục của phần mềm sau sự cố, kiểm tra xem hệ thống
có chấp nhận đầu vào trong phạm vi có thể chấp nhận được hay khơng và cung cấp
đầu ra theo yêu cầu và kiểm tra khả năng hệ thống chịu được các user thực hiện cùng
một hành động.
Nội dung bài tập lớn được trình bày trong 4 chương:
Chương 1: Tổng quan về kiểm thử phần mềm
Chương 2: Recovery testing
Chương 3: Domain testing
Chương 4: Concurrency testing

4
Nhóm 6


Báo cáo bài tập lớn
MỤC LỤC
LỜI NÓI ĐẦU ............................................................................................................ 2

LỜI CẢM ƠN ............................................................................................................. 3
TÓM TẮT NỘI DUNG .............................................................................................. 4
MỤC LỤC .................................................................................................................. 5
DANH MỤC HÌNH ẢNH .......................................................................................... 7
DANH MỤC BẢNG .................................................................................................. 8
CHƯƠNG 1. TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM..................................... 9
1.1 Khái niệm .......................................................................................................... 9
1.2 Vai trò của kiểm thử phần mềm........................................................................ 9
1.3 Một số loại hình kiểm thử phổ biến ................................................................ 10
CHƯƠNG 2. RECOVERY TESTING..................................................................... 11
2.1 Khái niệm ........................................................................................................ 11
2.2 Vịng đời của q trình khơi phục - Life cycle of recovery process............... 11
2.3 Chiến lược khôi phục – Restoration strategy.................................................. 13
2.4 Cách thực hiện kiểm thử khôi phục ................................................................ 13
2.5 Quy trình kiểm tra sau khi khôi phục ............................................................. 14
2.6

Ưu điểm / Nhược điểm của kiểm thử khôi phục......................................... 15

2.7 Ví dụ thực hiện kiểm thử khơi phục ............................................................... 15
2.8 Tóm lại ............................................................................................................ 16
CHƯƠNG 3. DOMAIN TESTING .......................................................................... 17
3.1 Giới thiệu về Domain Testing......................................................................... 17
3.2. Thực hành đơn giản về Domain testing (Simpler Practice of Domain Testing)
............................................................................................................................... 17
Kiểm tra đẳng thức tương đương ..................................................................... 17
Giải thích: ......................................................................................................... 18
Xây dựng bảng như thế này (trong thực tế)...................................................... 18
3.3. Chiến lược kiểm thử tên miền (Domain Testing Strategy) ........................... 18
Chúng ta đang thử nghiệm miền nào? .............................................................. 19

3.4. Ví dụ kiểm thử miền (Domain Testing Example) ......................................... 19
Làm thế nào để nhóm các giá trị vào các lớp? ................................................. 19
Phân vùng tương đương ................................................................................... 20
Phân tích giá trị ranh giới ................................................................................. 20
Giá trị của các lớp cần kiểm tra? ...................................................................... 20
Giá trị ranh giới: ............................................................................................... 20
5
Nhóm 6


Báo cáo bài tập lớn
3.5 Tóm lại ............................................................................................................ 20
CHƯƠNG 4. CONCURRENCY TESTING ............................................................ 21
4.1 Khái niệm ........................................................................................................ 21
4.2 Tại sao nên kiểm thử đồng thời ...................................................................... 22
4.3 Ưu điểm của kiểm thử đồng thời .................................................................... 22
4.4 Nhược điểm của kiểm thử đồng thời .............................................................. 22
4.5 Ví dụ thực hiện kiểm thử đồng thời ................................................................ 22
Thực hiện test 100 user đồng thời .................................................................... 24
Thực hiện test với lượng user lớn hơn là 1000 user ......................................... 25
4.6 Tóm lại ............................................................................................................ 25
ĐÁNH GIÁ VÀ KẾT LUẬN ................................................................................... 26
PHỤ LỤC ................................................................................................................. 27
TÀI LIỆU THAM KHẢO ........................................................................................ 28

6
Nhóm 6


Báo cáo bài tập lớn

DANH MỤC HÌNH ẢNH
Hình 1 Vịng đời của q trình khơi phục ................................................................ 12
Hình 2 Testcase kiểm thử khơi phục ........................................................................ 15
Hình 3 Minh họa đầu vào và đầu ra của biến trong kiểm thử miền ......................... 19
Hình 4 Quá trình kiểm thử đồng thời ....................................................................... 21
Hình 5 Request khi thực hiện tìm kiếm .................................................................... 23
Hình 6 Tham số truy vấn khi thực hiện tìm kiếm..................................................... 23
Hình 7 Thiết lập trên phần mềm Jmeter ................................................................... 24
Hình 8 Kết quả test tổng quan 100 user đồng thời ................................................... 24
Hình 9 Kết quả test chi tiết từng user với trường hợp 100 user đồng thời ............... 25
Hình 10 Kết quả test tổng quan với 1000 user đồng thời ......................................... 25
Hình 11 Kết quả test chi tiết 1000 user đồng thời .................................................... 25

7
Nhóm 6


Báo cáo bài tập lớn
DANH MỤC BẢNG
Bảng 1 Tỉ lệ công việc của các giai đoạn phát triển phần mềm ................................. 9
Bảng 2 Ví dụ bảng phân vùng tương đương ............................................................ 18

8
Nhóm 6


Chương 1.Tổng quan về kiểm thử phần mềm

Báo cáo bài tập lớn


CHƯƠNG 1. TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM
1.1 Khái niệm
Kiểm thử phần mềm là hoạt động thực tiễn sản phẩm hay dịch vụ phần mềm
trong đúng môi trường chúng dự định sẽ được triển khai nhằm cung cấp cho người
có lợi ích liên quan những thơng tin về chất lượng của sản phẩm hay dịch vụ phần
mềm ấy. Mục đích của kiểm thử phần mềm là tìm ra các lỗi hay khiếm khuyết phần
mềm nhằm đảm bảo hiệu quả hoạt động tối ưu của phần mềm trong nhiều ngành khác
nhau.
Nội dung của hoạt động kiểm thử bao gồm:
-

Kế hoạch kiểm thử
Phương pháp kiểm thử
Chiến lược kiểm thử và kỹ thuật sử dụng

1.2 Vai trò của kiểm thử phần mềm
Việc tạo ra một sản phẩm phần mềm phải trải qua nhiều giai đoạn, người ta gọi
là quy trình phát triển phần mềm, bắt đầu từ khi có ý tưởng cho đến khi đưa ra sản
phảm phần mềm thực thi. Khối lượng công việc trong từng giai đoạn của quá trình
sản xuất phần mềm cũng thay đổi theo thời gian
Giai
đoạn

Phân
tích u
cầu

Hai thập
kỉ 19601970


Thiết kế
sơ bộ

Thiết kế
chi tiết

10%

Lập

Tích hợp

Kiểm

trình và
kiểm thử
đơn vị

và kiểm
thử tích
hợp

thử hệ
thống

80%

10%

Thập kỉ

1980

20%

60%

20%

Thập kỉ
1990

40%

30%

30%

Bảng 1 Tỉ lệ cơng việc của các giai đoạn phát triển phần mềm

Như vậy, một sản phẩm phần mềm không chỉ đơn giản là các đoạn mã chương
trình mà còn rất nhiều trong khi lập trình mà còn xảy ra cao hơn trong các cơng đoạn
9
Nhóm 6


Chương 1.Tổng quan về kiểm thử phần mềm

Báo cáo bài tập lớn

khách của quy trình phát triển một sản phẩm phần mềm. Việc kiểm thử cũng vì thế

phải được tiến hành trong tất cả các sản phần tạo nên một sản phẩm phần mềm
1.3 Một số loại hình kiểm thử phổ biến
Hiện nay, do sự phát triển mạnh mã của cơng nghệ phần mềm nên có một số
loại hình kiểm thử tiêu biểu như:
-

Kiểm thử phần mềm trên Desktop: đây là các ứng dụng được cải đặt trực
tiếp trên máy tính các nhân. Đây vẫn đang là những ứng dụng phổ biến
nhất.

-

-

Kiểm thử Web hay kiểm thử trên đám mây: với sự lớn mạnh của Internet
thì các ứng dụng web cũng ngày càng phát triển và đang dần thay thế các
ứng dụng trên Desktop truyền thống như Google Document, Microsoft
web apps,…
Kiểm thử trên Mobile: ngày nay xã hội với sự phát triển nhanh chóng, các
thiết bị di động (điện thoại thơng minh, máy tính bảng,…) có số lượng
người dùng cũng tăng lên chóng mặt, cùng với đó là số lượng phần mềm
phục vụ cho nhu cầu cũng tăng cao vì vậy đây là một lĩnh vực đầy tiềm
năng và thách thức trong cơng nghệ phần mềm.

10
Nhóm 6


Chương 2. Recovery testing


Báo cáo bài tập lớn

CHƯƠNG 2. RECOVERY TESTING
2.1 Khái niệm
Kiểm thử khôi phục (recovery testing) là kỹ thuật kiểm thử phần mềm để xác
minh khả năng khôi phục của phần mềm từ các lỗi như: lỗi phần mềm, lỗi phần cứng,
lỗi mạng, v.v. Mục đích của kiểm thử khơi phục là xác định xem phần mềm có thể
tiếp tục hoạt động sau sự cố hay không. Kiểm thử khơi phục liên quan đến việc phần
mềm có thể trở lại điểm trước khi xảy ra sự cố và xử lý lại các giao dịch đến điểm sự
cố. Nói một cách dễ hiểu, kiểm thử khôi phục là khi bạn buộc phần mềm của mình bị
lỗi để xác minh rằng việc khơi phục sau lỗi có thể được thực hiện đúng cách hay
không.
Các lỗi thường gặp cần được kiểm tra để phục hồi:
-

Vấn đề mạng
Mất điện

-

Máy chủ bên ngoài không thể truy cập được
Máy chủ không phản hồi
Thiếu file DLL
Quá tải cơ sở dữ liệu
Dịch vụ bị dừng

-

Điều kiện vật chất
Thiết bị bên ngồi khơng phản hồi

Mất tín hiệu mạng khơng dây

2.2 Vịng đời của q trình khơi phục - Life cycle of recovery process
Vòng đời của quá trình khơi phục được chia thành năm bước:

11
Nhóm 6


Chương 2. Recovery testing

Báo cáo bài tập lớn

Hoạt động bình
thường

Normal Operation

Sự cố xảy ra

Disaster Occurence

Sự gián đoạn và thất
bại của hoạt động

Disruption and failure
of operation

Quá trình phục hồi


Recovery Process

Xây dựng lại – Hoạt
động bình thường

Reconstruction –
Normal Process

Hình 1 Vịng đời của q trình khơi phục

Bước 1: Một hệ thống bao gồm phần cứng, phần mềm và phần sụn được tích
hợp với nhau để đạt được một mục tiêu chung được đưa vào hoạt động để thực hiện
một mục tiêu được xác định và nêu rõ. Hệ thống được gọi là hoạt động bình thường
khi thực hiện công việc đã thiết kế mà không bị gián đoạn trong một khoảng thời gian
quy định.
Bước 2: Sự gián đoạn có thể xảy ra do sự cố của phần mềm, do nhiều nguyên
nhân khác nhau như sự cố do đầu vào bắt đầu, phần mềm bị treo do lỗi phần cứng,
lỗi phần mềm hoặc lỗi mạng.
Bước 3: Giai đoạn gián đoạn là giai đoạn phần mềm ngừng hoạt động dẫn đến
tổn thất kinh doanh, đổ vỡ quan hệ, mất cơ hội, mất giờ làm và ln ln có tổn thất
về tài chính và lợi thế thương mại. Mọi cơ quan hữu quan nên có kế hoạch khắc phục
hậu quả khi phần mềm gặp sự cố để có thể giảm thiểu giai đoạn gián đoạn.
Bước 4: Nếu một kế hoạch dự phòng và các quy trình giảm thiểu rủi ro được
đặt đúng chỗ trước khi gặp sự cố và gián đoạn, thì việc khôi phục có thể được thực
hiện mà khơng mất nhiều thời gian, công sức và sức lực. Một cá nhân được chỉ định,
cùng với nhóm của cá nhân đó với vai trị được giao của từng người nên được xác
định để khắc phục trách nhiệm và giúp tổ chức thoát khỏi thời gian gián đoạn kéo
dài.

12

Nhóm 6


Chương 2. Recovery testing

Báo cáo bài tập lớn

Bước 5: Việc xây dựng lại có thể bao gồm nhiều phiên hoạt động để xây dựng
lại tất cả các thư mục cùng với các tệp cấu hình. Cần có tài liệu và quy trình phục hồi
thích hợp để phục hồi chính xác.
2.3 Chiến lược khôi phục – Restoration strategy
Đội khôi phục phải có chiến lược riêng để truy xuất mã nguồn và dữ liệu quan
trọng để đưa hoạt động của phần mềm trở lại trạng thái bình thường.
Chiến lược có thể là duy nhất cho mỗi đội khôi phục dựa trên mức độ quan trọng
của hệ thống mà họ đang xử lý.
Chiến lược khả thi cho các hệ thống quan trọng có thể được hình dung như sau:
-

Sao lưu dữ liệu một hoặc nhiều lần.
Vị trí của bản sao lưu tại một hoặc nhiều nơi khác nhau.
Sao lưu trực tuyến hoặc sao lưu ngoại tuyến.
Sao lưu có thể được thực hiện tự động.
Có một nhóm riêng để thực hiện và theo dõi các bản sao lưu.

Mỗi chiến lược này đều có yếu tố chi phí gắn liền với nó và nhiều tài nguyên
cần thiết cho nhiều lần sao lưu có thể tiêu tốn nhiều tài nguyên vật chất hơn hoặc có
thể cần một nhóm độc lập.
Nhiều cơng ty có thể bị ảnh hưởng do dữ liệu và mã của họ phụ thuộc vào cơ
quan nhà phát triển liên quan. Ví dụ: nếu Amazon AWS ngừng hoạt động sẽ đóng 25
mạng Internet. Khơi phục độc lập là rất quan trọng trong những trường hợp như vậy.

2.4 Cách thực hiện kiểm thử khôi phục
Trong khi thực hiện kiểm tra khôi phục, những điều sau đây cần được xem xét.
Chúng ta phải tạo ra một môi trường thử nghiệm càng giống với thực tế càng
tốt. Giao diện, phần cứng, phần mềm, mã, phần sụn phải là một bản sao hoàn chỉnh
của hệ thống. Kết quả chất lượng có thể đạt được nếu thiết lập mơi trường thử nghiệm
gần với môi trường thực tế.
Thông qua kiểm tra tồn diện có thể tốn thời gian và tốn kém, nên thực hiện cấu
hình giống hệt nhau và kiểm tra tồn bộ.
Phần cứng được cấp phát cho mơi trường sản xuất để khôi phục phải được sử
dụng trong khi thực hiện kiểm thử khôi phục.
Một số hệ thống sao lưu mong muốn ổ cứng có cùng kích thước với kích thước
mà bản sao lưu được lấy từ đó.
Nên quản lý sự lỗi thời vì công nghệ ổ đĩa đang phát triển với tốc độ nhanh và
ổ đĩa cũ có thể khơng tương thích với ổ đĩa mới. Một cách để xử lý vấn đề là khôi
phục lại máy ảo. Các nhà cung cấp phần mềm ảo hóa như VMware Inc. có thể định
13
Nhóm 6


Chương 2. Recovery testing

Báo cáo bài tập lớn

cấu hình máy ảo để bắt chước phần cứng hiện có, bao gồm kích thước đĩa và các cấu
hình khác.
Hệ thống sao lưu trực tuyến không phải là một ngoại lệ để thử nghiệm. Hầu hết
các nhà cung cấp dịch vụ sao lưu trực tuyến đều bảo vệ chúng ta khỏi bị tiếp xúc trực
tiếp với các sự cố phương tiện bằng cách họ sử dụng hệ thống lưu trữ có khả năng
chịu lỗi.
Trong khi các hệ thống sao lưu trực tuyến cực kỳ đáng tin cậy, chúng tôi phải

kiểm tra mặt khôi phục của hệ thống để đảm bảo khơng có vấn đề gì với chức năng
truy xuất, bảo mật hoặc mã hóa.
2.5 Quy trình kiểm tra sau khi khơi phục
Hầu hết các tập đồn lớn đều có các kiểm tốn viên độc lập để thực hiện các bài
tập kiểm tra phục hồi theo định kỳ.
Chi phí duy trì và thử nghiệm một kế hoạch khắc phục hậu quả thiên tai toàn
diện có thể rất lớn và nó có thể bị cấm đối với các doanh nghiệp nhỏ hơn.
Các rủi ro nhỏ hơn có thể dựa vào các bản sao lưu dữ liệu và kế hoạch lưu trữ
bên ngoài của họ để cứu chúng trong trường hợp thảm họa
Sau khi các thư mục và tệp được khơi phục, có thể thực hiện các kiểm tra sau
để đảm bảo rằng các tệp được khôi phục đúng cách:
Đổi tên thư mục tài liệu bị hỏng.
-

Đếm các tệp trong các thư mục được khôi phục và khớp với nó với một
thư mục hiện có.

-

Mở một vài tệp và đảm bảo rằng chúng có thể truy cập được. Đảm bảo
mở chúng bằng ứng dụng thường sử dụng chúng. Và đảm bảo rằng bạn
có thể duyệt dữ liệu, cập nhật dữ liệu hoặc bất cứ điều gì bạn thường
làm.

-

Tốt nhất là mở một số tệp thuộc nhiều loại khác nhau, hình ảnh, mp3,
tài liệu và một số tệp lớn và một số tệp nhỏ.

-


Hầu hết các hệ điều hành đều có các tiện ích mà bạn có thể sử dụng để
so sánh các tệp và thư mục.

14
Nhóm 6


Chương 2. Recovery testing

Báo cáo bài tập lớn

2.6 Ưu điểm / Nhược điểm của kiểm thử khơi phục
Ưu điểm
• Nó giúp làm cho hệ thống ổn định hơn, khơng có lỗi và cải thiện chất lượng
của sản phẩm.
• Hệ thống trở nên đáng tin cậy hơn khi các lỗi được xóa trước khi chúng đi
vào hoạt động và cải thiện hiệu suất của hệ thống.
• Sao lưu ln được duy trì để khơi phục dữ liệu trong trường hợp có bất kỳ
sự cố nào.

Nhược điểm:
• Cần có tài ngun được đào tạo để thực hiện thử nghiệm này. Tester thực
hiện tương tự phải có tất cả dữ liệu để kiểm tra, tức là dữ liệu và tệp sao
lưu.
• Kiểm thử khôi phục yêu cầu một số bước phải được thực hiện trước khi
kiểm thử và nhiều bước trong khi thực hiện, điều này làm cho nó trở thành
một quá trình mất thời gian.
• Kiểm thử phục hồi là một quá trình tốn kém.
• Khơng phải tất cả các lỗi tiềm ẩn đều có thể được tìm thấy trong một vài

trường hợp.
2.7 Ví dụ thực hiện kiểm thử khơi phục
Mở trình duyệt Chorme trên máy tính thực hiện các bước kiểm thử khơi phục
như trên hình:

Hình 2 Testcase kiểm thử khơi phục

➢ Có 1 kết quả được như mong muốn 4 sản phẩm vẫn còn ở giỏ hàng, tuy
nhiên kết quả cịn lại thơng tin đặt hàng khơng được lưu khi đóng tab.
➢ Cần xem xét lại code

15
Nhóm 6


Chương 2. Recovery testing

Báo cáo bài tập lớn

2.8 Tóm lại
Những thất bại có thể xảy ra bất cứ lúc nào vì nhiều nguyên nhân không thể
tránh khỏi; kiểm tra phục hồi loại bỏ các lỗi nghiêm trọng. Nó làm cho hệ thống sẵn
sàng phục hồi sau những lỗi đó. Tần suất thực hiện kiểm tra khôi phục tỷ lệ nghịch
với tác động của sự cố đối với hệ thống. Do đó, kiểm tra thường xun đóng một
vai trị quan trọng để giảm thiểu tác động.

16
Nhóm 6



Chương 3. Domain testing

Báo cáo bài tập lớn

CHƯƠNG 3. DOMAIN TESTING
3.1 Giới thiệu về Domain Testing
Domain Testing hay còn gọi là kiểm thử miền là một loại của kiểm thử chức
năng (Functional Testing). Nó thực hiện bằng cách đưa ra các đầu vào và đánh giá các
đầu ra. Nó là một kỹ thuật kiểm thử phần mềm trong đó đầu ra của hệ thống phải được
kiểm tra với số lượng đầu vào tối thiểu, trong trường hợp này để đảm bảo rằng hệ
thống không chấp nhận giá trị đầu vào không hợp lệ.
Một trong những phương pháp quan trọng nhất của White Box Testing là
Domain Testing. Mục tiêu chính của Domain Testing là kiểm tra xem hệ thống có
chấp nhận đầu vào trong phạm vi có thể chấp nhận được hay khơng và cung cấp đầu
ra theo u cầu.Ngồi ra, nó xác minh hệ thống khơng nên chấp nhận các yếu tố đầu
vào, điều kiện và chỉ số bên ngoài phạm vi được chỉ định hoặc hợp lệ.
3.2. Thực hành đơn giản về Domain testing (Simpler Practice of Domain Testing)
Trong kiểm thử miền, chúng ta chia miền thành các tên miền phụ (các lớp tương
đương) và sau đó thử nghiệm sử dụng các giá trị từ mỗi tên miền phụ. Ví dụ, nếu một
trang web (tên miền) được đưa ra để thử nghiệm, chúng ta sẽ chia trang web thành
các phần nhỏ ( tên miền phụ) để dễ kiểm tra. Miền có thể liên quan đến việc thử
nghiệm bất kỳ biến đầu vào nào hoặc kết hợp các biến đầu vào. Các học viên thường
nghiên cứu các trường hợp thử nghiệm miền đơn giản ít hơn hai tên khác, "kiểm tra
ranh giới" và "phân tích lớp tương đương".
Thử nghiệm ranh giới - Phân tích giá trị ranh giới (BVA) dựa trên việc kiểm tra
lý thuyết và giá trị đầu vào không hợp lệ trong phân vùng / lớp.
Kiểm tra đẳng thức tương đương
Ý tưởng đằng sau kỹ thuật này là phân chia bằng nhau (tức là phân vùng), do đó
'phân vùng tương đương'.
Biểu mẫu đơn giản đó được áp dụng cho kiểm tra miền

• Chỉ để kiểm tra các biến đầu vào
• Chỉ khi được kiểm tra ở cấp hệ thống
• Chỉ khi thử nghiệm một lần
• Chỉ khi được thử nghiệm một cách rất hời hợt
• Nó có thể được đơn giản hóa như sau:

17
Nhóm 6


Chương 3. Domain testing

Báo cáo bài tập lớn

Variable

Valid
Class Invalid Class Boundaries & Notes
Equivalence
Equivalence
Special cases
Class
Class

X

0-100

0
100

<0

-1

>100

101

Bảng 2 Ví dụ bảng phân vùng tương đương

Giải thích:
1. Nếu một trường chấp nhận phạm vi từ 0-100, trường sẽ không chấp nhận -1
và 101 vì chúng là mục nhập không hợp lệ và vượt ra ngoài ranh giới.
2. Trường phải chấp nhận các giá trị như 0, 100 và bất kỳ số nào giữa chúng.
Xây dựng bảng như thế này (trong thực tế)
1. Bắt đầu bằng cách liệt kê các biến, thêm thông tin về chúng khi bạn nhận được.
2. Điều này có nghĩa là tất cả các biến đầu vào, tất cả các biến đầu ra và bất kỳ
biến trung gian nào mà bạn có thể quan sát.
3. Trong thực tế, hầu hết các bảng mà tôi đã nhìn thấy là không đầy đủ.Những
cái tốt nhất nhìn thấy danh sách tất cả các biến và thêm chi tiết cho các biến
quan trọng.
3.3. Chiến lược kiểm thử tên miền (Domain Testing Strategy)
Trong khi kiểm thử miền, bạn cần cân nhắc những điều sau đây,
• Chúng ta đang thử nghiệm miền nào?
• Làm thế nào để nhóm các giá trị vào các lớp?
• Giá trị của các lớp cần kiểm tra?
• Làm thế nào để xác định kết quả?

18
Nhóm 6



Chương 3. Domain testing

Báo cáo bài tập lớn

Chúng ta đang thử nghiệm miền nào?
Sẽ có một số biến đầu vào được nhập vào và đầu ra thích hợp phải được xác minh

Input functionality
(Input Variables)

Output functionality
(Output Variables)
Hình 3 Minh họa đầu vào và đầu ra của biến trong kiểm thử miền

3.4. Ví dụ kiểm thử miền (Domain Testing Example)


Xem xét một kịch bản thử nghiệm đầu vào đơn lẻ:



C = a + b,

Trong đó a và b là các biến đầu vào và C là biến đầu ra. Ở ví dụ trên, không cần
phân loại hoặc kết hợp các biến được yêu cầu.


Xem xét nhiều đầu vào sau và kịch bản đầu ra thích hợp: Vé là một trong

những mơ-đun được kiểm tra trong toàn bộ chức năng của Triển lãm trị chơi.

Theo kịch bản, chúng tơi có sáu kịch bản dựa trên độ tuổi và các cuộc thi:
-

Tuổi > 5 và <10, cậu bé nên tham gia Kể chuyện.
Tuổi > 5 và <10, cô gái nên tham gia Cuộc thi vẽ.
Tuổi > 10 và <15, cậu bé nên tham gia Quiz.
Tuổi > 10 và <15, cô gái nên tham gia viết bài luận.
Tuổi <5, cả nam và nữ nên tham gia Cuộc thi Rhymes.
Tuổi > 15, cả nam và nữ nên tham gia cuộc thi Thơ.

Phân vùng trường hợp đầu vào này hoặc chỉ đơn giản là nhóm các giá trị đi vào hình
ảnh.
Làm thế nào để nhóm các giá trị vào các lớp?
Phân vùng một số giá trị có nghĩa là tách nó thành các tập con khơng chồng chéo.
Như chúng ta đã có, có hai kiểu phân vùng:

19
Nhóm 6


Chương 3. Domain testing

Báo cáo bài tập lớn

Phân vùng tương đương


Phân vùng tương đương là một đơn vị dữ liệu từ các phân vùng dữ liệu tương

đương mà từ đó trường hợp thử nghiệm được bắt nguồn.

Phân tích giá trị ranh giới


Phân tích giá trị biên là một kỹ thuật kiểm thử phần mềm trong đó các phép
thử được bao gồm các đại diện của các giá trị biên trong một phạm vi.

Chúng tôi đang phân vùng các phân đoạn weare các giá trị thành một tập hợp con hoặc
tập hợp con.
Lớp 1: Trẻ em có nhóm tuổi từ 5 đến 10
Lớp 2: Trẻ em có nhóm tuổi dưới 5
Lớp 3: Trẻ em có độ tuổi từ 10 đến 15
Lớp 4: Trẻ em có nhóm tuổi lớn hơn 15.
Giá trị của các lớp cần kiểm tra?
Các giá trị được chọn để thử nghiệm phải là các giá trị Ranh giới: Ranh giới là
đại diện là đại diện của các lớp tương đương mà chúng tơi lấy mẫu. Họ có nhiều khả
năng phơi bày lỗi hơn các thành viên khác trong lớp, vì vậy họ là đại diện tốt hơn. Đại
diện tốt nhất của một lớp tương đương là một giá trị ở giữa phạm vi.
Đối với ví dụ trên, chúng tơi có các lớp sau để được kiểm tra:
Ví dụ cho kịch bản # 1: Lớp 1: Trẻ em từ 5 đến 10 tuổi (Tuổi> 5 và <= 10)
Giá trị ranh giới:


Các giá trị phải bằng hoặc nhỏ hơn 10. Do đó, tuổi 10 nên được bao gồm trong
lớp này.



Giá trị phải lớn hơn 5. Do đó, 5 tuổi khơng nên được đưa vào lớp này.




Giá trị phải bằng hoặc nhỏ hơn 10. Do đó, tuổi 11 khơng nên được đưa vào
lớp này.



Giá trị phải lớn hơn 5. Do đó, tuổi 6 nên được bao gồm trong lớp này.

3.5 Tóm lại
Kiểm thử miền đòi hỏi kiến thức về việc cung cấp đầu vào phù hợp để đạt
được đầu ra mong muốn. Vì vậy, chỉ có thể sử dụng nó cho các đoạn mã nhỏ.

20
Nhóm 6


Chương 4. Concurrency testing

Báo cáo bài tập lớn

CHƯƠNG 4. CONCURRENCY TESTING
4.1 Khái niệm
Kiểm thử đồng thời (Concurrency Testing) là một kỹ thuật kiểm thử nhằm phát
hiện các khuyến khuyết trong ứng dụng khi nhiều người dùng đăng nhập. Nói cách
khác theo dõi ảnh hưởng khi nhiều người dùng thực hiện cùng một hành động cùng
lúc.Ví dụ như kiểm tra phần mềm hoạt động trong tình huống nhiều người đăng nhập
cùng một lúc, cùng ấn nút tìm kiếm,…
Kiểm thử đồng thời còn được gọi là kiểm thử đa người dùng. Kiểm thử chương

trình đồng thời (concurrent program) thời khó khăn hơn hơn so với chương trình tuần
tự do tính khơng xác định và các vấn đề về đồng bộ hoá.
Hình ảnh dưới đây cho biết quá trình kiểm thử đồng thời:

Nhiều người dùng thực hiện một hành
động cùng lúc

Xác định mức độ deadlocking, locking
và sử dụng code đơn luồng

Phân tích kết quả test
Hình 4 Q trình kiểm thử đồng thời

21
Nhóm 6


Chương 4. Concurrency testing

Báo cáo bài tập lớn

4.2 Tại sao nên kiểm thử đồng thời
• Xác định tác động của việc truy cập cùng một bản ghi cơ sở dữ liệu, mơ-đun
hoặc đoạn code ứng dụng cùng một lúc.
• Xác định và đo lường mức độ deadlocking, locking và sử dụng code đơn luồng
và hạn chế quyền truy cập vào các tài nguyên được chia sẻ.
4.3 Ưu điểm của kiểm thử đồng thời
• Nó tương đối làm giảm lượng nỗ lực cần thiết để kiểm tra một ứng dụng bằng
cách hạn chế phạm vi của các tương tác cùng lúc đối với một số thành phần
đã được kiểm thử tốt được sử dụng rộng rãi.

• Giá trị đóng gói cho phép phân tích hành vi của một chương trình mà khơng
cần xem xét tồn bộ code hoặc chương trình.
• Giúp cải thiện độ tin cậy và tính mạnh mẽ của các chương trình đồng thời.
4.4 Nhược điểm của kiểm thử đồng thời
• Cần thử nghiệm trên nhiều nền tảng
• Yêu cầu các bài kiểm tra chuyên sâu hơn
• Các hàm không trả lại kết quả cho người gọi ngay lập tức mà thay vào đó, nó
có thể được gửi sau qua thông báo, blocks, hàm callback hoặc các cơ chế tương
tự, điều này khiến việc kiểm thử khó khăn hơn.
• Luồng thông tin hoặc chương trình không được phản ánh trong call stack
• Số lượng các đường dẫn thực thi trong hệ thống có thể rất lớn vì vậy các quá
trình trong một hệ thống đồng thời có thể tương tác với nhau trong khi chúng
đang thực thi.
• Các chương trình đồng thời có nhiều tỷ lệ thất bại hơn các chương trình tuần
tự.
• Gỡ lỗi các chương trình đồng thời.

4.5 Ví dụ thực hiện kiểm thử đồng thời
Sử dụng phần mềm Jmeter - Jmeter là công cụ giúp ta giả lập thao tác của người
dùng trên web. Bằng việc giả lập các thao tác của một số lượng người dùng nhất định.
Trang web được sử dụng để kiểm thử:
chạy trên nền Nodejs
Tiến hành kiểm thử khi nhiều người dùng thực hiện tìm kiếm cùng lúc

❖ Khi thực hiện tìm kiếm thì request như sau:

22
Nhóm 6



Chương 4. Concurrency testing

Báo cáo bài tập lớn

Hình 5 Request khi thực hiện tìm kiếm

➢ Phương thức: GET
❖ Tham số (param) thực hiện truy vấn

Hình 6 Tham số truy vấn khi thực hiện tìm kiếm

➢ Param: searchText
➢ Tiến hành kiểm thử trên phần mềm Jmeter
➢ Thời gian test 13h
❖ Các thiết lập chính trên phần mềm Jmeter

Thời gian thực
hiện, chạy đồng
thời để = 0

Số user

Hình 4.5 Thiết lập trên phần mềm
Jmeter(tiếp)

Số lần lặp

Hình 4.5 Thiết lập trên phần mềm
Jmeter(tiếp)
Hình 4.5 Thiết lập trên phần mềm

Jmeter(tiếp)
Hình 4.5 Thiết lập trên phần mềm
Jmeter(tiếp)
Hình 4.5 Thiết lập trên
23 phần mềm
Jmeter(tiếp)
Hình 4.5 Thiết lập trên phần mềm

Nhóm 6


Chương 4. Concurrency testing

Báo cáo bài tập lớn

Hình 7 Thiết lập trên phần mềm Jmeter

❖ Thực hiện test 100 user đồng thời

Hình 8 Kết quả test tổng quan 100 user đồng thời

• Thời gian phản hồi nhanh nhất là 2620ms (2,6s) (Phản hồi chưa được nhanh,
< 1s là tốt nhất)
• Thời gian phản hồi chậm nhất là 4994ms (5s)
• Thời gian phản hồi trung bình là 3577ms (3,6s)
• Khơng có resquest nào bị lỗi
• Server có thể xử lý 20 request 1s (Chưa được tốt)

24
Nhóm 6



Chương 4. Concurrency testing

Báo cáo bài tập lớn

Hình 9 Kết quả test chi tiết từng user với trường hợp 100 user đồng thời

➢ Thời gian phản hồi và độ trễ tăng dần
❖ Thực hiện test với lượng user lớn hơn là 1000 user

Hình 10 Kết quả test tổng quan với 1000 user đồng thời

➢ Bắt đầu xuất hiện lỗi, tỉ lệ lỗi là 6.5%

Hình 11 Kết quả test chi tiết 1000 user đồng thời

➢ Tuy xuất hiện lỗi nhưng những user phía sau đã được khắc phục lại
4.6 Tóm lại
Thơng qua kiểm thử đồng thời, chúng ta đã biết lượng user đồng thời tối đa
mà server có thể xử lý. Từ đó mà lựa chọn server thích hợp để phát triển trang web
cũng như các ứng dụng mobile, desktop.
25
Nhóm 6


×