1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu và ứng dụng Tool kiểm thử tự động trong kiểm thử phần mềm

122 26 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 122
Dung lượng 1,99 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nghiên cứu và ứng dụng Tool kiểm thử tự động trong kiểm thử phần mềm Nghiên cứu và ứng dụng Tool kiểm thử tự động trong kiểm thử phần mềm Nghiên cứu và ứng dụng Tool kiểm thử tự động trong kiểm thử phần mềm luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

Trang 2

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

-

TRẦN MAI LIÊN

NGHIÊN CỨU VÀ ỨNG DỤNG TOOL KIỂM THỬ TỰ ĐỘNG TRONG KIỂM

THỬ PHẦN MỀM

Chuyên ngành : Điện tử - Viễn thông

LUẬN VĂN THẠC SĨ KỸ THUẬT ĐIỆN TỬ VIỄN THÔNG

NGƯỜI HƯỚNG DẪN KHOA HỌC :

PGS.TS Phạm Minh Việt

Trang 3

MỤC LỤC

MỤC LỤC 1

DANH MỤC HÌNH 5

DANH MỤC THUẬT NGỮ VÀ VIẾT TẮT 7

I MỞ ĐẦU 8

1.1 Bối cảnh nghiên cứu 8

1.2 Nội dung nghiên cứu 9

1.3 Cấu trúc luận văn 9

II GIỚI THIỆU CHUNG VỀ PHẦN MỀM VÀ KIỂM THỬ PHẦN MỀM 11

2.1 Giới thiệu chung vê phần mềm 11

2.1.1 Phần mềm là gì? 11

2.1.2 Tại sao phần mềm lại có lỗi 11

2.2 Giới thiệu chung về kiểm thử phần mềm 12

2.2.1 Kiểm thử phần mềm là gì? 12

2.2.2 Vai trò của kiểm thử 13

2.2.3 Tại sao phải kiểm thử tự động và sử dụng tool kiểm thử? 14

III NGHIÊN CỨU TOOL KIỂM THỬ TỰ ĐỘNG 16

3.1 Giới thiệu chung về tool kiểm thử tự động 16

3.1.1 Khái niệm tool kiểm thử phần mềm 16

3.1.2 Những lợi ích khi sử dụng tool kiểm thử tự động 16

3.1.3 Khi nào nên sử dụng tool test? 18

3.1.4 Những hạn chế khi sử dụng tool tự động 20

3.2 Quy trình kiểm thử sử dụng tool tự động 22

3.2.1 Phân tích và thiết kế mô hình phát triển kiểm thử tự động 23

3.2.2 Tạo test script (kịch bản kiểm thử) 24

3.2.3 Chỉnh sửa test script 25

3.2.4 Chạy test script để kiểm thử tự động 25

3.2.5 Đánh giá kết quả 26

3.3 Phân loại 26

3.3.1 Tool đo tải và hiệu năng 26

Trang 4

3.3.2 Tool kiểm thử các ứng dụng Java 27

3.3.3 Tool kiểm tra đường dẫn liên kết 27

3.3.4 Tool kiểm thử tính hợp lệ 27

3.3.5 Tool kiểm thử chức năng Web/test hồi quy 27

3.3.6 Tool test bảo mật cho ứngd dụng Web 28

3.3.7 Tool test các ứng dụng cho Mobile 28

3.4 Giới thiệu chi tiết về một số tool đang sử dụng phổ biến ở Việt Nam 28

3.4.1 QuickTestPro (QuickTest Professional) 29

3.4.1.1 Giới thiệu 29

3.4.1.2 Đặc điểm 31

3.4.1.3 Các thành phần quan trọng trong QuickTestPro 31

3.4.2 Selenium 33

3.4.2.1 Giới thiệu 33

3.4.2.2 Cấu trúc Selenium 33

a, Selenium IDE 34

b, Selenium RC 35

c, Selenium Core 37

d, Selenium Grid 38

e, Selenium WebDriver 38

3.4.3 Jmeter 39

3.4.3.1 Giới thiệu 39

3.4.3.2 Một số sample thông dụng của Jmeter 40

a, HTTP sampler 40

b, JDBC request 41

c, BeanShell sampler 46

d, WebService (SOAP) request 48

3.4.3.3 Các phần tử của 1 Testplan 50

a, ThreadGroup 51

b, Controller 51

c, Listener 54

d, Timer 55

e, Configuration Element 56

Trang 5

f, Pre-Processor Element 57

g, Post-Processor Element 57

h, Thứ tự thực hiện các phần tử của 1 Testplan: 58

3.4.4 Load Runner 58

3.4.4.1 Giới thiệu 58

3.4.4.2 Các thành phần cơ bản của Load Runner 59

a, Virtual User Generator 59

b, Controller 60

c, Load Generator 61

d, Analyze 62

e, Launcher 63

IV ỨNG DỤNG TOOL JMETER VÀO KIỂM THỬ HIỆU NĂNG HỆ THỐNG 64

4.1 Các bước thực hiện một bài test hiệu năng với tool Jmeter 64

4.1.1 Planning the test 64

4.1.2 Creating Vuser Scripts 65

4.1.3 Creating the Scenario 65

4.1.4 Running the Scenario 65

4.1.5 Monitoring the Scenario 65

4.1.6 Analyzing test results 65

4.2 Quy trình thực hiện để tạo một Testplan 65

4.2.1 Các bước tạo testplan 65

4.2.2 Các điều khiển hỗ trợ khi tạo 1 Testplan 68

a, Response Assertion 68

b, Regular Expression Extractor 69

c, Truyền tham số qua biến 71

d, CSV Data Set Config 71

e, User Defined Variables 72

4.3 Ứng dụng tool Jmeter vào đo hiệu năng hệ thống chăm sóc khách hàng 74

4.3.1 Phát biểu bài toán 74

4.3.2 Thực hiện bài toán 74

4.3.2.1 Planning the test 74

4.3.2.2 Creating Vuser Script 76

Trang 6

4.3.2.3 Creating the Scenario 82

4.3.2.4 Running the Scenario + Monitoring the Scenario 83

4.3.2.5 Analyzing the Scenario 84

V ỨNG DỤNG TOOL sELENIUM webdriver VÀO KIỂM THỬ HỆ THỐNG 87

5.1 Phạm vi áp dụng tool Selenium Webdriver 87

5.2 Các công cụ hỗ trợ khi viết script với Selenium Webdriver 87

5.2.1 Công cụ soạn thảo Eclipse 87

5.2.2 TestNG 88

5.3 Ứng dụng Selenium Webdriver vào kiểm thử hồi quy cho hệ thống ECMS 90

5.3.1 Phát biểu bài toán 91

5.3.2 Thực hiện bài toán 91

5.3.2.1 Phân tích 91

5.3.2.2 Tạo test script + chỉnh sửa test script 93

5.3.2.3 Chạy test script 116

5.3.2.4 Đánh giá kết quả 117

VI KẾT LUẬN VÀ HƯỚNG NGHIÊN CỨU TIẾP THEO 119

TÀI LIỆU THAM KHẢO 120

Trang 7

DANH MỤC HÌNH

Hình 1:Script test viết bằng Selenium IDE 34

Hình 2: Cửa sổ Selenium Core Framework 37

Hình 3:File chứa kết quả result.html 37

Hình 4:Màn hình của sample HTTP Proxy Server 41

Hình 5:Màn hình của JDBC Connection Configuration 41

Hình 6:Ví dụ cấu hình một JDBC Connection Configuration 42

Hình 7:Màn hình JDBC Request 43

Hình 8:JDBC request với Query Type = “Prepared Update Statement” 45

Hình 9:JDBC request với Query Type = “Update Statement” 46

Hình 10:Màn hình của BeanShell Sample 47

Hình 11:Màn hình của sample WebService (SOAP) 49

Hình 12: Màn hình cấu hình của Constant Timer 56

Hình 13:Màn hình làm việc của Virtual User Generator 60

Hình 14: Màn hình làm việc của Controller 61

Hình 15:Màn hình làm việc của Load Generator 62

Hình 16:Màn hình của Analyze 63

Hình 17:Màn hình làm việc khởi tạo của Jmeter 66

Hình 18:Màn hình thêm 1 Simple Controller 67

Hình 19:Màn hình cấu hình 1 Response Assertion 69

Hình 20:Màn hình cấu hình của Regular Expression Extractor 70

Hình 21:Một ví dụ của Regular Expression Extractor 71

Hình 22:Màn hình cấu hình của CSV Data Set Config 72

Hình 23:Màn hình cấu hình User Defined Variables 73

Hình 24:Đặt các biến được định nghĩa vào các request 73

Hình 25:Màn hình sau khi login thành công 75

Hình 26:Vào màn hình tra cứu thông tin trả trước 75

Hình 27:Màn hình trả về kết quả tra cứu 76

Hình 28:Màn hình khởi tạo các control và đặt các bước cho srcipt 77

Hình 29:Màn hình thiết lập Proxy cho trình duyệt 78

Trang 8

Hình 30:Script của bước CCPRE_TCTTTB_1 79

Hình 31:Script sau khi record 79

Hình 32:Màn hình Add Regular Expression Extractor vào request để lấy giá trị lt 80

Hình 33:Màn hình Add Regular Expression Extractor vào request để lấy giá trị lt 80

Hình 34:Màn hình đặt biến lt vào các request sử dụng 80

Hình 35:Màn hình đặt biến ticket vào các request sử dụng 80

Hình 36:Khai báo file CSV 81

Hình 37:File CSV chứa dữ liệu test 81

Hình 38:Add thêm 2 Listener để xem kết quả khi run test 82

Hình 39:Cấu hình số lượng user cho máy client 1 83

Hình 40:Màn hình start script trên tất cả các máy 84

Hình 41:Màn hình làm việc của Eclipse 88

Hình 42:Ví dụ một đoạn code sử dụng Annotation của TestNG 89

Hình 43:Ví dụ file XML của TestNG 90

Hình 44:Báo cáo của TestNG 90

Hình 45:Trang chủ hệ thống ACME 91

Hình 46:Add thư viện vào Eclipse 94

Hình 47 Cửa sổ run configurations 116

Hình 48 File kết quả kiểm thử 117

Trang 9

DANH MỤC THUẬT NGỮ VÀ VIẾT TẮT

Testcase Trường hợp kiểm thử

Unit test Kiểm thử đơn vị

Intergration test Kiểm thử tích hơp

System test Kiểm thử hệ thống

Performance test Kiểm thử hiệu năng

Load test Kiểm thử tải

Stress test Kiểm thử áp lực

Regression test Kiểm thử hồi quy

Test script Kịch bản (tập lệnh) được viết bằng tool kiểm thử

URL Uniform Resource Locator

HTML HyperText Markup Language

XML eXtensible Markup Language

Selenium IDE Selenium Integrated Development Environment

Selenium RC Selenium Remote control

API Application Programming Interface

FTP File Transfer Protocol

SOAP Simple Object Access Protocol

JDBC Java Database Connectivity

HTTP Hypertext Transfer Protocol

IEEE Institute of Electrical and Electronics Engineers

Trang 10

I MỞ ĐẦU

1.1 Bối cảnh nghiên cứu

Ngày nay khái niệm phần mềm đã trở nên rất phổ biến Không ai có thể phủ nhận vai trò to lớn của phần mềm trong xã hội hiện đại Ứng dụng của phần mềm có mặt trong hầu hết các lĩnh vực của cuộc sống như: Truyền thông, khoa học công nghệ, ngân hàng, sản xuất chế tạo, quản trị doanh nghiệp, dịch vụ… và trở thành đối tượng phục vụ quan trọng cho mọi nhu cầu của con người

Công nghiệp phần mềm trên thế giới hiện là một ngành công nghiệp phát triển và đóng góp quan trọng vào sự phát triển và tiến bộ của công nghệ hiện đại Ở Việt Nam, công nghiệp phần mềm mới chỉ phát triển tập trung trong 10 năm gần đây Là một lĩnh vực khá mới đi sau sự phát triển của thế giới, tận dụng và thừa hưởng được những thành tựu trước đó, công nghệ thông tin nói chung và công nghệ phần mềm nói riêng ở nước ta đang có những phát triển nhanh chóng, được xem là một trong những ngành mũi nhọn đóng góp ngày càng nhiều vào nền kinh tế quốc dân

Công nghệ phần mềm phát triển kéo theo các thành phần bên trong nó cũng không ngừng được hoàn thiện và nâng cao, kiểm thử phần mềm nằm trong số đó

Là khâu cuối cùng trong vòng đời phát triển phần mềm nhưng đóng một vai trò vô cùng quan trọng, là khâu đảm bảo chất lượng cho phần mềm đến tay người sử dụng cuối thỏa mãn được mọi yêu cầu cơ bản cũng như khắt khe nhất Kiểm thử phần mềm cần phải được xem xét ở góc độ tương xứng với tầm quan trọng của nó trong quy trình phát triển phần mềm

Như chúng ta biết, để tạo ra một sản phẩm phần mềm có chất lượng thì hoạt động kiểm thử phần mềm đóng vai trò quan trọng, trong khi đó 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 hóa quy trình kiểm thử phần mềm cũng được đặt ra Qua thực tế cho thấy việc áp dụng kiểm thử tự động hợp lý sẽ mang lại thành công cho hoạt

Trang 11

động kiểm thử phần mềm Kiểm thử tự động giúp giảm bớt công sức thực hiện, tăng

độ tin cậy, giảm sự nhàm chán và rèn luyện kỹ năng lập trình cho kỹ sư kiểm thử

1.2 Nội dung nghiên cứu

Kiểm thử là một khâu vô cùng quan trọng trong chu trình phát triển phần mềm, để nâng cao chất lượng, giảm tải sức lực tham gia của con người đồng thời tăng tính hiệu quả, chuyên nghiệp của nó thì việc ứng dụng các công cụ kiểm thử tự động đang ngày càng được chú trọng

Luận văn sẽ giới thiệu những nét chung nhất về kiểm thử phần mềm và sự cần thiết sử dụng tool kiểm thử tự động trong hoạt động kiểm thử phần mềm Tiếp

đó luận văn tập chung nghiên cứu tool kiểm thử tự động, tính hữu ích và ứng dụng vào kiểm thử phần mềm của một số tool phổ biến trên thế giới

Phần cuối cùng là thực tế hóa những nghiên cứu ở trên thông qua việc áp dụng trong thực tế 2 tool của tác giả vào các hệ thống tại tổ chức: áp dụng tool jmeter vào kiểm thử và giám sát hiệu năng hệ thống chăm sóc khách hàng, áp dụng tool Selenium WebDriver vào kiểm thử chức năng hệ thống ECMS

1.3 Cấu trúc luận văn

Luận văn gồm được phân chia làm 5 phần như sau:

Phần 1: Mở đầu

Giới thiệu về bối cảnh nghiên cứu, nội dung nghiên cứu và cấu trúc luận văn Phần 2: Giới thiệu chung kiểm thử phần mềm

Cung cấp một cái nhìn chung nhất về phần mềm, về kiểm thử phần mềm, khi

nào nên sử dụng tool kiểm thử

Phần 3: Nghiên cứu các tool kiểm thử tự động

Đây là phần trọng tâm của luận văn, tập chung nghiên cứu khái niệm, vai trò, tác dụng của tool tự động trong kiểm thử phần mềm Những hạn chế cần xem xét khi muốn áp dụng vào thực tế Phân loại tool theo phạm vi ứng dụng Giới thiệu

một số tool đang được dùng phổ biến tại Việt Nam

Trang 12

Phần 4: Ứng dụng tool Jmeter vào kiểm thử hiệu năng

Phần này mô phỏng cách thức thực hiện và tiến hành cài đặt một tool kiểm

thử hiệu năng – tool Jmeter vào kiểm thử hiệu năng hệ thống chăm sóc khách hàng Phần 5: Ứng dụng tool Selenium WebDriver vào kiểm thử hồi qui

Phàn này mô phỏng cách thức thực hiện và viết script tự động sử dụng tool

Selenium WebDriver để kiểm thử hồi quy chức năng của hệ thống ECMS

Phần 6: Kết luận và hướng nghiên cứu tiếp theo

Đánh giá tầm quan trọng của các kết quả đã nghiên cứu được, mở ra các hướng nghiên cứu nâng cao tiếp theo

Trong quá trình thực hiện luận văn, em xin gửi lời cảm ơn chân thành đến thầy giáo hướng dẫn PGS.TS Phạm Minh Việt Trong luận văn chắc chắn không thể không có thiếu sót, rất mong được ý kiến đóng ghóp và phản hồi của các thầy cô

Trang 13

II GIỚI THIỆU CHUNG VỀ PHẦN MỀM VÀ KIỂM THỬ PHẦN MỀM

2.1 Giới thiệu chung vê phần mềm

2.1.1 Phần mềm là gì?

Phần mềm là một (bộ) chương trình được cài đặt trên máy tính nhằm thực hiện một nhiệm vụ tương đối độc lập nhằm phục vụ cho một ứng dụng cụ thể trong việc quản lý hoạt động của máy tính hoặc áp dụng máy tính trong các hoạt động kinh tế, quốc phòng, văn hóa, giáo dục, giải trí …

Phần mềm có thể được coi như là một phần thay đổi của máy tính và phần cứng là phần cố định Phần mềm thường được chia thành phần mềm ứng dụng (chương trình mà người dùng làm việc trực tiếp đến) và phần mềm hệ thống (bao gồm hệ điều hành và bất cứ chương trình nào hỗ trợ phần mềm ứng dụng

Việc tạo ra một 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

2.1.2 Tại sao phần mềm lại có lỗi

Các nghiên cứu từ trước đến nay đã chỉ ra rằng không thể có 1 hệ thống phần mềm nào hoạt động đúng theo mọi yêu cầu của người dùng đặt ra, không một phần mềm nào là không có lỗi Lỗi trên hóa đơn thanh toán, lỗi trễ xẩy ra trong quá trình

xử lý 1 giao dịch thanh toán thẻ và một trang website không load được dữ liệu là những ví dụ về những vấn đề có thể xảy ra bới 1 phần mềm có lỗi Không phải tất

cả các phần mềm đều có chung một mức độ lỗi và không phải tất cả các lỗi khi xẩy

ra có cùng một mức độ tác động đến hệ thống

Lỗi phần mềm có thể đến từ tất cả các giai đoạn trong vòng đời phát triển của phần mềm: từ lúc tìm hiểu phân tích yêu cầu của khách hàng đến khi phần mềm được triển khai Trong đó một số nguyên nhân phổ biển sau thường gây ra lỗi cho phần mềm đó là:

Thứ nhất là lỗi từ giai đoạn tìm hiểu và phân tích yêu cầu của khách hàng Người tìm hiểu có thể tìm hiểu không hết hoặc hiểu sai yêu cầu của khách hàng, khi phân

Trang 14

tích không đánh giá hết được ảnh hưởng của yêu cầu đến toàn bộ hệ thống và không nhìn ra được tác động tương tác của hệ thống hiện tại với các hệ thống khác Lỗi xảy ra trong giai đoạn này thường là những lỗi nghiêm trọng và chi phí sửa lỗi là lớn nhất so với lỗi xảy ra trong các giai đoạn sau này, bởi lỗi từ yêu cầu khi sửa sẽ kéo theo toàn bộ các giai đoạn sau này cũng phải sửa theo Do đó, việc tìm lỗi trong giai đoạn này là rất quan trọng, góp phần quan trọng làm giảm chi phí sản xuất do tránh được các lỗi nghiêm trọng

Thứ hai, lỗi đến từ người phát triển Lỗi này thường là lỗi chủ quan của người thực hiện yêu cầu, trong quá trình khai báo, viết hàm, thủ tục, sử dụng thuật toán, tổ chức

dữ liệu Các lỗi này thường được phát hiện trong quá trình kiểm thử Ngoài ra, lỗi cũng có thể xẩy ra trong chính giai đoạn kiểm thử Khi người thực hiện kiểm thử xác định chiến lược và phương pháp kiểm thử không rõ ràng, đầy đủ cũng sẽ để lọt các lỗi của hệ thống

Ngoài ra cũng có những lỗi khách quan xảy ra, lỗi đến từ môi trường bên ngoài đội

dự án như bản thân khách hàng không rõ ràng về yêu cầu đưa ra, yêu cầu thay đổi liên tục, môi trường triển khai hệ thống không hoàn toàn giống như môi trường đã xác định ban đầu, công cụ phát triển bản thân cũng có lỗi …

Nhiều nghiên cứu đã được thực hiện trên các dự án từ qui mô rất nhỏ đến các dự án rất lơn và kết quả luôn giống nhau Số lỗi do đặc tả yêu cầu xẩy ra là nhiều nhất, chiếm đến 80% tổng số lỗi của tất cả các giai đoạn

Để nâng cao chất lượng phần mềm đến tay người sử dụng, cố gắng loại bỏ được tối

đa có thể các lỗi của phần mềm không có cách nào khác là phải kiểm thử phần mềm trước khi đưa sản phầm ra thị trường

2.2 Giới thiệu chung về kiểm thử phần mềm

2.2.1 Kiểm thử phần mềm là gì?

Kiểm thử phần mềm là quá trình khảo sát một hệ thống hay một thành phần dưới những điều kiện xác định, quan sát và ghi lại các kết quả, đánh giá một khía cạnh nào đó của hệ thống hay thành phần đó (Theo bảng chú giải thuật ngữ chuẩn

Trang 15

IEEE của Thuật ngữ kỹ nghệ phần mềm- IEEE Standard Glossary of Software Engineering Terminology)

Kiểm thử phần mềm là quá trình thực thi một chương trình với mục đích tìm lỗi (Theo “The Art of Software Testing” – Nghệ thuật kiểm thử phần mềm)

Kiểm thử phần mềm là hoạt động khảo sát 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 (Theo Bách khoa toàn thư mở Wikipedia)

2.2.2 Vai trò của kiểm thử

Như đã thảo luận ở trên, để loại bỏ lỗi trên sản phầm trên phần mềm (tất nhiên là không thể loại bỏ được hoàn toàn lỗi) và nâng cao chất lượng phần mềm thì kiểm thử là rất cần thiết trong suốt giai đoạn phát triển và bảo trì hệ thống Nó bao gồm quá trình tìm kiếm, kiểm tra những điểm trên giao diện người dùng, nơi mà người dùng có thể làm xuất hiện lỗi của dữ liệu đầu vào hoặc trong việc hiển thị dữ liệu đầu ra, và tìm kiếm những điểm yếu tiềm ẩn có thể gây ra lỗi Thực hiện kiểm thử giúp chúng ta làm tăng chất lượng của sản phẩm và dịch vụ, và nó chính là một dạng của các phương thức Verification và Validation áp dụng cho sản phẩm Có rất nhiều phương thức có thể sử dụng trong kiểm thử, một vài trong số đó được thực hiện bởi người tạo ra sản phẩm, một số khác được thực hiện nởi những nhóm độc lập

Kiểm thử giúp chúng ta đo được chất lượng của phầm mềm thông qua số lượng lỗi được tìm ra, số lượng bài test đã thực hiện và độ bao phủ hệ thống khi thực hiện kiểm thử Chúng ta có thể đánh giá được chất lượng trong cả 2 mặt về các thuộc tính chức năng và phi chức năng của phần mềm Kiểm thử cung cấp sự tin cậy về chất lượng phần mềm nếu nó tìm ra ít hoặc không tìm ra lỗi Đương nhiên, một bài test ngèo nàn sẽ chỉ bao phủ được một phần rất nhỏ các khiếm quyết của hệ thống

và sẽ không còn đủ độ tin cậy để đưa ra đánh giá về phần mềm

Trang 16

Kiểm thử giúp giảm thiểu rủi ro về chất lượng của phần mềm, về chi phí của phần mềm cho việc sửa lỗi Việc kiểm thử phát hiện càng sớm các lỗi sẽ ghóp phần quan trọng vào việc giảm rủi ro trong việc phát sinh chi phí sửa lỗi

Tuy nhiên, kiểm thử cũng không phải là tuyệt đối Các nghiên cứu chỉ ra rằng quá trình kiểm thử chỉ có thể tìm ra được 70% số lượng lỗi trong 1 phần mềm Vì vậy, việc thiết kế kiểm thử, chiến lược và cách thức thực hiện kiểm thử là rất quan trọng trong việc tìm ra tối đa số lỗi có thể Điều này phụ thuộc nhiều vào công cụ và khả năng của người thực hiện kiểm thử

2.2.3 Tại sao phải kiểm thử tự động và sử dụng tool kiểm thử?

Mỗi nhóm phát triển phần mềm tự kiểm thử chính sản phẩm của mình thì sản phẩm cung cấp sẽ luôn luôn có sai sót Kỹ sư kiểm thử phấn đấu để ngăn chặn các sai sót này trước khi sản phẩm được phát hành nhưng chúng thường xuất hiện trở lại, ngay cả với các quá trình kiểm thử bằng tay tốt nhất Kiểm thử phần mềm tự động là cách tốt nhất để tăng tính khách quan, hiệu quả, hiệu suất và bao phủ phần mềm cần kiểm thử của bạn

Kiểm thử phần mềm bằng tay được thực hiện bởi người sử dụng máy tính một cách cẩn thận thông qua màn hình ứng dụng, cố gắng sử dụng các cách khác khác nhau

và kết hợp các đầu vào, so sánh các kết quả mong muốn với các kết quả ghi lại những quan sát của họ Kiểm thử bằng tay được lặp đi lặp lại thường xuyên trong chu kỳ phát triển mỗi khi có thay đổi mã nguồn và những thay đổi khác về môi trường hoạt động và cấu hình phần cứng Một công cụ phần mềm kiểm thử tự động

có thể lặp lại hành động đã được ghi lại và được xác định trước, so sánh kết quả với hành vi mong đợi và đưa ra báo cáo thành công hay thất bại của những bài test này tới kỹ sư kiểm tra Những bài test tự động được tạo ra một lần và có thể dễ dàng được lặp lại cũng như có thể được mở rộng để thực hiện các nhiệm vụ không thể kiểm tra thủ công bằng tay Bởi vì điều này, các nhà quản lý có tầm nhìn đã nhận ra rằng kiểm thử phần mềm tự động là một thành phần thiết yếu của các dự án muốn phát triển thành công

Trang 17

Kiểm thử phần mềm tự động từ lâu đã được xem xét ở một vị trí quan trọng trong các công ty phần mềm lớn nhưng đối với các công ty nhỏ hơn thì nó lại được cho là quá đắt tiền và khó khắn để thực hiện

Trang 18

III NGHIÊN CỨU TOOL KIỂM THỬ TỰ ĐỘNG

3.1 Giới thiệu chung về tool kiểm thử tự động

3.1.1 Khái niệm tool kiểm thử phần mềm

Tool kiểm thử nói chung là công cụ sử dụng để xác thực và kiểm tra các chương trình phần mềm, các ứng dụng hoặc các sản phẩm

Tool kiểm thử phần mềm thực chất là các chương trình phần mềm sử dụng với mục đích chính là để xác thực và kiểm tra các chương trình phần mềm cần kiểm thử có hoạt động đúng với yêu cầu đã được đặt ra từ trước trong những điều kiện môi trường hoạt động nhất định

Ở Việt Nam, trong những năm gần đây việc áp dụng tool kiểm thử tự động trong kiểm thử phần mềm đang ngày càng được coi trọng tại các tổ chức, các đơn vị sản xuất phần mềm Tùy quy mô của tổ chức mà mức độ áp dụng tool có khác nhau Nhưng tất cả đều đang hướng đến mục tiêu tự động hóa và chuyên nghiệp quy trình kiểm thử

3.1.2 Những lợi ích khi sử dụng tool kiểm thử tự động

Tool kiểm thử tự động mang đến rất nhiều lợi ích cho công việc kiểm thử

phần mềm Ta sẽ xem xét ở một số lợi ích sau:

Kiểm thử phần mềm tự động tiết kiệm thời gian và chi phí

Kiểm thử phần mềm thường phải lặp đi lặp lại thường xuyên trong chu kỳ phát triển để đảm bảo chất lượng Mỗi khi source code chương trình có sự thay đổi thì cần phải tiến hành kiểm thử lại phần mềm Trước khi phần mềm được đưa đến khách hàng, nó cần phải được kiểm thử trên tất cả các hệ điều hành hỗ trợ và các cấu hình phần cứng Nếu sử dụng kiểm thử thủ công sẽ rất tốn kém và mất thời gian Với kiểm thử tự động thì chỉ với 1 lần tạo ra có thể sử dụng cho nhiều lần mà không phải thêm bất kỳ chi phí phát sinh thêm nào và những bài test sẽ được thực hiện nhanh hơn rất nhiều kiểm thử thủ công Kiểm thử phần mềm tự động có thể

Trang 19

làm giảm thời gian kiểm thử lặp đi lặp lại đến ngày, giờ Tiết kiệm thời gian đóng

ghóp trực tiếp vào việc tiết kiệm chi phí

Kiểm thử phần mềm tự động nâng cao độ chính xác

Ngay cả những nhân viên kiểm thử cẩn thận nhất cũng sẽ mắc lỗi trong quá trình kiểm thử thủ công đơn lẻ Kiểm thử tự động thực hiện tương tự các bước một cách chính xác mỗi khi thực hiện bài test và không bao giờ quên ghi lại các kết quả

một cách chi tiết

Kiểm thử phần mềm tự động tăng độ bao phủ kiểm thử

Kiểm thử phần mềm tự động có thể tăng độ sâu và phạm vi của các bài test

để cải thiện chất lượng phần mềm Các bài test dài thường bị tránh trong quá trình kiểm thử thủ công thì có thể được chạy mà không cần giám sát Thậm chí chúng có thể chạy trên nhiều máy tính với các cấu hình khác nhau Kiểm thử phần mềm tự động có thể kiểm tra sâu bên trong ứng dụng và lấy được các thông tin về bộ nhớ, bảng dữ liệu, nội dung file và trạng thái bên trong chương trình để xác định khi sản phẩm hoạt động như mong đợi Kiểm thử phần mềm tự động có thể dễ dàng thực hiện hàng ngàn trường hợp kiểm thử phức tạp khác nhau trong tất cả các bài test mà chúng có thể khó có thể thực hiện được với kiểm thử thủ công Nhân viên kiểm thử được giải phóng khỏi các bài test thủ công lặp đi lặp lại để tạo các bài test tự động

mới cho các chức năng phức tạp khác

Kiểm thử tự động có thể thực hiện những việc mà kiểm thử thủ công không thể làm được

Ngay cả các đơn vị phần mềm lớn nhất cũng không thể thực hiện điều kiển một bài test ứng dụng web với hàng ngàn user Kiểm thử tự động có thể mô phỏng hàng chục, hàng trăm hoặc hàng ngàn người dùng ảo tương tác với mạng hoặc phần

mềm web và các ứng dụng

Kiểm thử phần mềm tự động giúp ích cho nhân viên phát triển và nhân viên kiểm thử

Trang 20

Các bài test kiểm thử tự động có thể được sử dụng cho các nhân viên phát triển để

họ phát hiện ra sớm các vấn đề trước khi bàn giao chương trình cho QA Các bài test có thể chạy tự động bất cứ khi nào có thay đổi về source code và thông báo cho đội ngũ phát triển khi có lỗi Các tính năng này tiết kiệm được thời gian cho đội

phát triển và tăng độ tự tin của

Kiểm thử phần mềm tự động nâng cao trình độ chuyên môn cho các thành viên nhóm

Điều này khó đo đếm được, nhưng vẫn có thể nói kiểm thử phần mềm tự động nâng cao trình độ chuyên môn cho các thành viên Tự động hóa đơn các công việc lặp đi lặp lại với tool kiểm thử tự động cho phép nhóm của bạn dành nhiều thời gian hơn cho các vấn đề của dự án nhiều mang tính thách thức và phức tạp hơn Các thành viên trong nhóm nâng cao được kỹ năng và sự tự tin, đóng ghóp được nhiều hơn cho tổ chức của họ Ngoài ra, việc sử dụng tool giúp nâng cao trình độ của nhân viên kiểm thử Việc record, viết các script phức tạp cũng giúp cho kiểm thử viên hiểu hơn về chương trình, nâng cao các kỹ năng về phần mềm

3.1.3 Khi nào nên sử dụng tool test?

Tool kiểm thử là công cụ giúp thực hiện việc kiểm tra phần mềm một cách tự động Tuy nhiên không phải mọi việc kiểm tra đều có thể tự động hóa, câu hỏi đặt

ra là trong điều kiện hoặc tình huống nào dùng tool kiểm thử là thích hợp? Việc

dùng tool kiểm thử thường được xem xét trong một số tình huống sau:

Không đủ tài nguyên

Khi số lượng tình huống kiểm tra (test case) quá nhiều mà nhân viên kiểm thử không thể hoàn tất bằng tay trong thời gian cụ thể nào đó.Có thể lấy một dẫn chứng

là khi thực hiện kiểm tra chức năng của một website Website này sẽ được kiểm tra với 6 môi trường gồm 3 trình duyệt (IE, Nétcape, Opera) và 2 hệ điều hành

(WinXP, Linux)

Tình huống này đòi hỏi số lần kiểm tra tăng lên và lặp lại 6 lần so với việc kiểm tra cho một môi trường cụ thể

Trang 21

Như vậy chỉ với một chương trình mà phải kiểm thử 6 lần, số case sẽ tăng

lên 6 lần Lúc này chi phí và thời gian dành cho kiểm thử sẽ tăng nhiều lần

Kiểm thử hồi quy (regression test)

Trong quá trình phát triển phần mềm, nhóm lập trình thường đưa ra nhiều phiên bản phần mềm liên tiếp để kiểm tra Thực tế cho thấy việc đưa ra các phiên bản phần mềm có thể là hàng ngày, mỗi phiên bản bao gồm những tính năng mới, hoặc tính năng cũ được sửa lỗi hay nâng cấp Việc bổ sung hoặc sửa lỗi code cho những tính năng ở phiên bản mới có thể làm cho những tính năng khác đã kiểm tra tốt chạy sai mặc dù phần code của nó không hề chỉnh sửa Để khắc phục điều này, đối với từng phiên bản, nhân viên kiểm thử không chỉ kiểm tra chức năng mới hoặc được sửa, mà phải kiểm tra lại tất cả những tính năng đã kiểm tra tốt trước đó Điều này khó khả thi về mặt thời gian cũng như tốn nhiều nỗ lực nếu tiến hành kiểm thử thủ công Trong những trường hợp này tool kiểm thử là một lựa chọn phù hợp nhất

Phải thường xuyên kiểm thử một số lượng lớn trường hợp kiểm thử

Một lợi ích rõ ràng của kiểm thử tự động đó chính là khả năng chạy một số lượng lớn case trong một khoảng thời gian giới hạn, vì thế nó khả thi trong trường hợp phải test thường xuyên Đây cũng là lý do cho phép chúng ta tăng số lượng các

case và tần suất kiểm thử Từ đó nâng cao độ bao phủ kiểm thử

Kiểm tra khả năng vận hành phần mềm trong môi trường đặc biệt

Đây là kiểm tra nhằm đánh giá xem khả năng vận hành của phần mềm trong những điều kiện đặc biệt có thỏa mãn yêu cầu đặt ra hay không Thông qua đó nhân viên kiểm thử có thể xác định được các yếu tố về phần cứng, phần mềm ảnh hưởng

Trang 22

đến khả năng vận hành của phần mềm Có thể liệt kê một số tình huống kiểm tra tiêu biểu thuộc loại này như sau:

• Đo tốc độ trung bình xử lý một yêu cầu của web server

• Thiết lập 10000 yêu cầu, đồng thời gửi đến web server, kiểm tra tình huống 10000 người dùng truy xuất web cùng lúc

• Xác định số yêu cầu tối đa được xử lý bởi web server hoặc xác định cấu hình máy thấp nhất mà tốc độ xử lý của phần mềm vẫn có thể hoạt động ở mức cho phép Việc kiểm thử thủ công cho những tình huống trên là cực khó và nhiều khi không thể thực hiện được, ví dụ tạo ra 10000 người cùng log vào hệ thống 1 lúc việc chuẩn

bị 10000 người dùng thực cùng sử dụng hệ thống và ghi lại tất cả những tác động này là điều không thể Nhưng với việc sử dụng tool kiểm thử tự động, thì việc tạo ra cho bạn 10000 người dùng ảo không phải là việc khó trong khi không cần tiêu tốn lượng tài nguyên lớn như kiểm thử thủ công

Nói tóm lại ứng với các giai đoạn kiểm thử trong quy trình kiểm thử, thì tool kiểm thử thường được áp dụng trong các giai đoạn: kiểm thử hồi quy (regression test), kiểm thử tải hệ thống (performance test, load test, stress test)

Kiểm thử tự động không thể thay thế hoàn toàn kiểm thử thủ công

Kiểm thử tự động không thể thay thế được hoàn toàn kiểm thử thủ công, cũng không thể tự động hóa toàn bộ các hoạt động và các trường hợp cần kiểm thử Trong nhiều trường hợp, kiểm thử thủ công sẽ được thực hiện dễ dàng hơn nhiều

Trang 23

kiểm thử tự động hoặc quá khó để tự động hóa, không khả thi về mặt kinh tế nếu tiến hành kiểm thử tự động

Những trường hợp không nên sử dụng kiểm thử tự động như là:

- Khi có những trường hợp kiểm thử rất ít khi phải thực hiện Ví dụ như một yêu cầu kiểm thử chỉ thực hiện 1 lần trong 1 năm, do đó không nên tự động hóa những case test này

- Khi phần mềm thường xuyên thay đổi Ví dụ, nếu giao diên người dùng và các chức năng thay đổi quá nhiều từ phiên bản này sang phiên bản khác, khi

đó nỗ lực bỏ ra để tự động hóa case kiểm thử sẽ làm tăng chi phí rất nhiều

- Những case kiểm thử mà kiểm tra kết quả dễ dàng nếu thực hiện thủ công nhưng quá khó để kiểm tra tự động Ví dụ, khi cần kiểm tra sự sắp xếp mầu sắc, các yếu tố thuộc về mỹ thuật của màn hình hoặc kiểm tra audio có được bật đúng hay không?

- Những case có sự tương tác với phần cứng, như là tương tác với card thông qua card reader, ngắt kết nối với một vài thiết bị, bật tắt nguồn…

Không phải tất cả các case kiểm thử thủ công đều nên tự động hóa, chỉ những case khả thi hoặc thường xuyên phải thực hiện Khi phần mềm thường xuyên thay đổi thì kiểm thử thủ công sẽ tìm ra được lỗi rất nhanh

Kiểm thử thủ công tìm được nhiều lỗi hơn kiểm thử tự động

Một bài test rất có thể tìm ra được lỗi ngay trong lần đầu tiên mà nó được chạy Nếu một testcase được thực hiện tự động, nó cần được test thủ công trước để đảm bảo tính chính xác James Bach đã đưa ra kết luận dựa trên kinh nghiệm rằng kiểm thử tự động chỉ tìm ra được 15% khuyến quyết trong khi kiểm thử thủ công là 85% (Nguồn: Bach, 1997) Khi một test-suite tự động được xây dựng, nó thường

sử dụng khi re-test Thông thường, các bài test này đã được thực hiện thủ công trước đó và do đó chúng sẽ tìm ra ngay được các lỗi trong khoảng thời gian này Khi thực hiện chạy với tool thực chất là thực hiện kiểm thử lại, ví dụ như tool kiểm thử hồi quy

Phụ thuộc nhiều hơn vào chất lượng của các bài test

Trang 24

Một tool kiểm thử chỉ có thể xác định được sự khác nhau giữa kết quả thực

tế với đầu ra mong muốn Do đó, có một sự đòi hỏi khắt khe trong viêc kiểm tra tính chính xác của các đầu ra mong muốn trong kiểm thử tự động Khi tool thông báo cho chúng ta kết quả kiểm thử là pass nhưng thực ra là chúng chỉ trả về kết quả sau khi so sánh đúng đầu ra mong muốn

Vì vậy, việc xác định chất lượng của những bài test cần tự động hóa là rất quan trong Những testware cần phải được xem xét và kiểm tra để đảm bảo tính chính xác của chúng

Kiểm thử tự động không nâng cao hiệu quả kiểm thử

Tự động các bài test không làm chúng hiệu quả hơn trong việc tìm lỗi so với khi thực hiện chúng thủ công Tự động hóa là khâu cuối cùng trong việc nâng cao hiệu quả của các bài test, đó là chi phí và thời gian thực hiện

Tool không có sự tưởng tượng

Tool chỉ là phần mềm và do đó nó cũng chỉ hoạt động theo một cấu trúc cho trước

Cả tool và nhân viên kiểm thử đều có thể test theo một chỉ dẫn những với một nhân viên kiểm thử, cùng một yêu cầu có thể thực hiện theo một cách khác Ví dụ, khi một nhân viên kiểm thử được giao thực hiện chuẩn bị và chạy test một thủ tục, khi

so sánh kết quả thực tế với đầu ra mong muốn và cả 2 đều sai, nhân viên kiểm thử

có thể nhận biết và điều đưa vấn đề này ra giải quyết để nâng cao chất lượng của phần mềm Trong khi nếu tool kiểm thử thực hiện những trường hợp này, nó chỉ đơn giản đưa ra kết quả false cho testcase

3.2 Quy trình kiểm thử sử dụng tool tự động

Kiểm thử tự động cũng tuân theo các bước phát triển phần mềm, chúng ta phải xem việc phát triển kiểm thử tự động giống như phát triển một dự án

Mặc dù tool kiểm thử hiện nay rất phong phú và có nhiều đặc điểm khác nhau, tuy nhiên khi áp dụng tool vào kiểm thử tự động thì cơ bản điều phải tuân theo các bước

cơ bản sau:

Trang 25

• Thu thập các đặc tả yêu cầu hoặc test case; lựa chọn những phần cần thực hiện kiểm thử tự động

• Phân tích và thiết kế mô hình phát triển kiểm thử tự động

• Phát triển lệnh đặc tả (script) cho kiểm thử tự động

• Kiểm tra và theo dõi lỗi trong script của kiểm thử tự động

Chi tiết các bước sẽ được xem xét sau đây:

3.2.1 Phân tích và thiết kế mô hình phát triển kiểm thử tự động

Từ việc xác định yêu cầu và mục đích của công đoạn kiểm thử cần tiến hành áp dụng tool, kiểm thử viên sẽ phân tích và thiết kế mô hình sẽ triển khai để áp dụng

tool Để thực hiện thì thường ta sẽ trả lời các câu hỏi thường gặp sau:

1 Chức năng nào sẽ tiến hành kiểm thử tự động và yêu cầu đặt ra cho từng chức năng?

Đây là câu hỏi rất quan trọng mà kiểm thử viên trước khi đặt vấn đề kiểm thử tự động cần trả lời Như đã nói ở trên, không phải bất cứ một bài test nào cũng có thể và cũng nên kiểm thử tự động Cần phải xem xét tính khả thi khi áp dụng như: testcase có thể chuyển sang tự động hóa được không?, tự động hóa có đem lại lợi ích hơn kiểm thử thử công không?, khả năng của tổ chức hiện tại có đáp ứng được không?

Khi đã trả lời được các câu hỏi này và quyết định áp dụng kiểm thử tự động thì cần xác định chi tiết về các chức năng sẽ thực hiện

Thường sẽ có 2 loại kiểm thử tự động:

- Nếu là kiểm thử chức năng: xác định các chức năng, tính năng, các case chi tiết sẽ kiểm thử bằng tool Các yêu cầu đặt ra với các case chi tiết là gì? (VD: chức năng phải cập nhật dữ liệu trong các bảng dữ liệu, dữ liệu phân trang 10 bản ghi/trang …)

Trang 26

- Nếu là kiểm thử hiệu năng (performance test): xác định các chức năng cần kiểm thử, tiêu chí pass/fail hiệu năng (VD: 100 user cùng thực hiện tìm kiếm,

thời gian truy vấn trung bình là 5s, tỷ lệ fail là 10% )

2 Môi trường sẽ thực hiện kiểm thử và dữ liệu cần chuẩn bị kiểm thử

Môi trường thường được xem xét ở các điểm sau:

- Cấu hình và địa chỉ server ứng dụng và server database

- Hệ điều hành, trình duyệt sử dụng, version …

- Đường dẫn chương trình, phiên bản ứng dụng

- Cấu hình, địa chỉ, số lượng các mày client để triển khai

3 Lựa chọn tool kiểm thử

Việc lựa chọn tool kiểm thử nào để áp dụng thì căn cứ vào nhiều tiêu chí:

- Từ tài nguyên sẵn có của tổ thức Ví dụ như các ứng dụng của tổ chức đang

sử dụng tool Load Runner để kiểm thử hiệu năng thì sẽ lựa chọn luôn tool này để kiểm thử hiệu năng

- Từ mục đích kiểm thử và môi trường kiểm thử ở các bước trên để xác định tool nào cho phù hợp vì có rất nhiều tool trong đó mỗi tool có 1 thế mạnh và phạm vi khác nhau khi áp dụng (VD có tool chỉ chạy trên trình duyệt IE, tool chỉ làm việc với hệ điều hành windown, tool chỉ hỗ trợ ứng dụng HTTP, Net, các thông số kết quả mà tool sẽ lấy được …) Kiểm thử viên phải có sự tham khảo và nắm được các điểm này để lựa chọn cho phù hợp với ứng dụng của mình

- Nếu tổ chức của bạn chưa có một tool chính thống nào để sử dụng và cũng không có điều kiện sử dụng các tool có licence thì tool open source là lựa chọn của bạn Hiện nay cúng có rất nhiều tool miến phí mà bạn có thể sự dùng được

3.2.2 Tạo test script (kịch bản kiểm thử)

Đây là giai đoạn quan trọng của quy trình kiểm thử bằng tool Đòi hỏi nhân viên kiểm thử phải có kiến thức về tool đang sử dụng để record Mỗi tool kiểm thử

Trang 27

đều có cơ chế cho phép record lại các thao tác khi người dùng thao tác trên ứng dụng Các thao tác này sẽ được lưu lại thành các script, script này được viết dưới dạng các ngôn ngữ lập trình khác khau tùy theo tool sử dụng Mỗi kịch bản test sẽ gồm nhiều các script bên trong, các script này chính là cơ sở để thực hiện các bài test của bạn Tuy nhiên chỉ dựa vào các script này thì thường bạn sẽ chưa thể thực hiện được bài test ngay mà sẽ phải trải qua công đoạn chỉnh sửa chuẩn hóa lại script

theo mục đích của bài test

3.2.3 Chỉnh sửa test script

Nếu như ở bước tạo test script, nhân viên kiểm thử chỉ cần có kiến thức sử dụng tool thì ở phần chỉnh sửa test script ngoài phải hiểu biến chi tiết hơn về tool

mà còn đòi hỏi phải có kiến thức về chương trình đang cần đo và kiến thức về ngôn ngữ lập trình Nếu như ở bước tạo test script chỉ yêu cầu 1 tester có trình độ chuyên môn trung bình về tool thì ở công đoạn chỉnh sửa test script thì cần 1 tester phải có trình độ khá về tool sử dụng

Thực tế cho thấy sau khi record thì script chưa thể chạy được ngay mà có rất nhiều ràng buộc từ phía ứng dụng cần đo khiến ta phải chỉnh sửa cho phù hợp Chính vì lý

do đó mà đây là công đoạn có thể cho là quan trọng nhất và khó nhất khi sử dụng tool tự động

Các công việc thường thực hiện trong giai đoạn này là:

- Chạy script, tìm và gỡ lỗi

- Add thêm các control cần thiết

- Add thêm các function cần thiết

- Add thêm danh sách dữ liệu cần thiết

Chỉ khi kịch bản của bạn chạy ổn định, không còn bất kỳ một lỗi nào thì script này

mới sẵn sằng để đưa vào kiểm thử

3.2.4 Chạy test script để kiểm thử tự động

Đây là bước thực thi những script mà bạn đã tạo được từ bước 2 trên môi trường đã chuẩn bị từ bước 1 Nhân viên kiểm thử sẽ thực hiện cài đặt các script

Trang 28

trên các may client và sử dụng tool để Run và control các script này theo các bước tùy thuộc vào tool sử dụng Những lưu ý trong qua trình chạy này cũng phải chú ý

để thu được kết quả chính xác nhất Ví dụ như sau mỗi lần đo phải restart ứng dụng,

restart database, cache …

3.2.5 Đánh giá kết quả

Tương ứng với mỗi lần chạy test script thì nhân viên kiểm thử sẽ thực hiện lưu lại kết quả này vào thư mục của dự án Tùy theo yêu cầu mã sẽ đánh giá sau mỗi lần chạy hay đánh giá ở giai đoạn khi kết thúc tất cả các lần đo

Việc đánh giá sẽ dựa trên các report trả về của tool kiểm thử và so sánh với với các tiêu chí đặt ra từ đầu giai đoạn kiểm thử Nhân viên kiểm thử sẽ quyết định chức năng đạt hay không đạt yêu cầu Có thể kèm theo phân tích lý do và các điểm dẫn đến quyết định đó Các kết luận này sẽ được nằm trong một báo cáo kiểm thử, tài liệu này sẽ được gửi đến các bộ phân liên quan trong dự án bao gồm quản trị dự án, nhân viên giải pháp, nhân viên phát triển và quản lý chất lượng để nắm được kết quả và xử lý khi có lỗi

Kết thúc giai đoạn kiểm thử thì các test script cũng được coi như tài nguyên của dự

án, cần được lưu trữ lại để tái sử dụng cho những lần kiểm thử sau

3.3 Phân loại

Hiện nay, tool có thể hỗ trợ cho tất cả các giai đoạn trong vòng đời phát triển của phần mềm Theo cách này thì ta có các nhóm tool như là: test design tool, test management tool, static analysis tool, coverage tool, debugging tool, dynamic tool, simulator

Tuy nhiên ta sẽ thao luận sâu hơn với cách phân loại theo chức năng và

phạm vi ứng dụng của tool như sau đây

3.3.1 Tool đo tải và hiệu năng

Các tool được sử dụng với mục đích test tải và hiệu năng cho các hệ thống Nguyên tắc chung là tạo ra nhiều người dùng ảo, nhiều request, nhiều secssion để

Trang 29

gây áp lực đến hệ thống đồng thời hoặc trong 1 khoảng thời gian từ đó đánh giá khả năng chịu tải, khả năng phục hồi, điểm ngưỡng tải của ứng dụng …

Một số tool thuộc loại này đó là: Tsung, PerformanceXpert, LoadUI, AppViewWeb,

LoadRunner, Jmeter …

3.3.2 Tool kiểm thử các ứng dụng Java

Là các tool phục vụ cho automation test với các ứng dụng viết bằng Java Một số tool thuộc loại này đó là: Arquillian, RTI, Yourkit Java Profiler, VisualVM,

Lapse, Checkmart, TestNG, LinkScan …

3.3.3 Tool kiểm tra đường dẫn liên kết

Là các tool phục vụ cho việc kiểm tra các link trên hệ thống: kiểm tra hosted link, URL, xác định các tập tin không được khai báo, Link bị hỏng, Link lỗi cú pháp

Một số tool thuộc loại này đó là: LinkTiger, HiSoftware, Link Validation

Utinlity, ChangeAgent, Link Checker Pro, WebLink Validator, LinkScan

3.3.4 Tool kiểm thử tính hợp lệ

Là các tool hỗ trợ cho việc kiểm tra tính hợp lệ của Page linh, chính tả, cú pháp HTML…

Một số tool thuộc loại này đó là: Total Validator, RealValidator, HTML

Validator, CSE 3310 HTML Validator

3.3.5 Tool kiểm thử chức năng Web/test hồi quy

Là các tool phục vụ cho việc automation test chức năng các ứng dụng Web thường sử dụng trong quá trình Regression test Nguyên tắc chung là record lại các đối tượng và hành động thành các script tự động để sử dụng cho các lần test sau

Số lượng các tool ở loại này là rất phong phú và được sử dụng thường xuyên trong việc kiểm thử, có thể kể ra đây 1 số tool thuộc loại này như: QuickTestPro, Rational Robot, Selenium, Fabasoft app.test, Janova, FuncUnit, qUnit, Twist, QF-Test,

WebDriver, QEngine, Test Complete Enterprise, SimpleTest…

Trang 30

3.3.6 Tool test bảo mật cho ứngd dụng Web

Là các tool quét các lỗ hổng về bảo mật cho các ứng dụng Web như các lỗ hổng SQL injection, XSS, CFRS, các vấn đề bảo mật về File,

Một số tool thuộc loại này đó là: Vega, Aribisec Web Analyzer, Golem, Skipfish, Seeker, WebSecurity, Arachni, Tarantula, RATS, beSTORM, Proxy Zed, SPIKE

Proxy, AppScan…

3.3.7 Tool test các ứng dụng cho Mobile

Là các tool hỗ trợ giả lập để test các ứng dụng phát triển cho Mobile trên nền Ipad, Iphone, Android

Một số tool thuộc loại này đó là: SeeTestMobile, ZAP-fiX for Mobile, Mobiltest, M-eux, Android APK for Selenium, Instruments for Xcode 4, Perfecto Mobile, Robotium, FoneMonkey, TestQuest CountDown, Intent Fuzzer, MITE…

3.4 Giới thiệu chi tiết về một số tool đang sử dụng phổ biến ở Việt Nam

Về lĩnh vực kiểm thử phần mềm, ở Việt Nam hiện nay có rất nhiều tool test đang được sử dụng Tùy vào mục đích sử dụng và khả năng của doanh nghiệp và tool test có thể là tool kiểm thử hiệu năng hoặc chức năng, miễn phí mã nguồn mở hoặc các tool thương mại

Các tool thường được các công ty phần mềm của Việt Nam sử dụng vì độ phù hợp với các sản phẩm phần mềm đang phát triển tại Việt Nam như là:

- Các tool thương mại: QuickTestPro, Rational Robot, TestComplete, Load Runner…

- Các tool mã nguồn mở miễn phí: Jmeter, Selenium, Ruby…

Dưới đây xin giới thiệu chi tiết hơn về đặc điểm, tính năng của một số tool đang được sử dụng

Trang 31

3.4.1 QuickTestPro (QuickTest Professional)

3.4.1.1 Giới thiệu

Trong lĩnh vực kiểm thử tự động hiện có khá nhiều tool test thương mại nổi tiếng, phổ biến như QuickTest Professional, WinRunner, Rational Robot, SilkTest, JTest,… Trong số đó, QuickTest Professional của hãng Mercury 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 tra tự động

QuickTestPro là tool test dùng để kiểm thử chức năng (functional test) và cho phép thực hiện kiểm thử hồi quy (regression test) một cách tự động Đây cũng là công cụ

áp dụng phương pháp Keyword-Driven, một kỹ thuật scripting (lập trình trong kiểm thử tự động) hiện đại, cho phép nhân viên kiểm thử bổ sung testcase bằng cách tạo file mô tả cho nó mà không cần phải chỉnh sửa hay bổ sung bất cứ script nào cả Nó cũng phù hợp trong tình huống chuyển giao công việc mà người mới tiếp nhận chưa

có thời gian hoặc không hiểu script vẫn có thể thực hiện kiểm thử phần mềm theo

đúng yêu cầu

Loại phần mềm hỗ trợ

QuickTestPro giúp chúng ta kiểm thử phần mềm theo hướng chức năng trên rất nhiều loại chương trình phần mềm khác nhau Tuy nhiên Mercury chỉ hỗ trợ sẵn một số loại chương trình thông dụng như:

Trang 32

Một số loại chương trình khác đòi hỏi chúng ta phải cài đặt thêm thành phần

bổ sung của QuickTestPro thì mới thực hiện kiểm tra được Các loại chương trình

đó là:

.NET

• NET Framework 1.0, 1.1, 2.0 beta

• Các đối tượng chuẩn của NET và các đối tượng khác thừa kế từ các đối tượng

Trang 33

• IBM Personal Communications

Repository (OR – được giải thích ở phần sau) để QuickTestPro nhận ra sự thay đổi

đó mà không cần thay đổi bất cứ test script nào

• Hỗ trợ làm việc theo nhóm thông qua sự chia sẻ thư viện, thống nhất quản lý Object Repository

• Thực tế cho thấy, QuickTestPro thực hiện kiểm thử tự động trên nhiều trình duyệt cùng lúc tốt hơn những tool test khác

• Với chức năng Recovery Scenarios, QuickTestPro cho phép xử lý những sự kiện hoặc lỗi không thể đoán trước có thể làm script bị dừng trong khi đang chạy

• QuickTestPro có khả năng hiểu test script của Mercury Winrunner (một công cụ kiểm tra khác của Mercury)

3.4.1.3 Các thành phần quan trọng trong QuickTestPro

Trang 34

Object Repository (OR):

Cấu trúc theo dạng cây, mô tả các đối tượng trong phần mềm được kiểm tra Đây được xem là cầu nối để test script tương tác với phần mềm được kiểm tra

Khi ra lệnh cho QuickTestPro ghi lại thao tác người dùng lên phần mềm thì trong OR sẽ tự động phát sinh thành phần đại diện cho những đối tượng trên phần mềm vừa được thao tác

OR có thể tổ chức thành 2 loại, một loại dùng chung trong nhiều test script, loại khác dùng theo từng Action

Để xem OR, chọn menu Tools -> Object Repository

Checkpoint:

Có thể hiểu là nơi kiểm tra trong test script, khi chạy nó sẽ thực hiện so sánh kết quả thực tế khi kiểm tra phần mềm với kết quả mong đợi Sau khi tiến hành so sánh QuickTestPro sẽ tự động ghi lại kết quả vào Test Results (nơi lưu kết quả khi

chạy test script)

Ngôn ngữ sử dụng viết script

QuickTestPro sử dụng ngôn ngữ VBScript để viết test script Đây là ngôn ngữ dễ học; rất giống ngôn ngữ VBA Chế độ Expert View của QuickTestPro là chế

độ soạn thảo dành cho VBScript Ngoài việc dùng VBScript để tương tác với phần mềm được kiểm tra, QuickTestPro còn có khả năng cấu hình hệ thống bằng ngôn ngữ Windows Script

Với nhiều chức năng ưu việt như đã đề cập bên trên, QuickTestPro là một Test Tool mạnh mẽ có khả năng hỗ trợ đắc lực cho kiểm thử Việc ứng dụng nó hợp

lý chắc chắn sẽ giúp giảm công sức của nhân viên kiểm thử đồng thời làm tăng chất lượng phần mềm Trong điều kiện Việt Nam hiện nay, với tỷ trọng gia công phần mềm ngày càng lớn tại các công ty phần mềm, người viết cho rằng kiểm tra phần mềm tự động với những công cụ như QuickTestPro rất đáng để các doanh nghiệp

phần mềm quan tâm nghiên cứu, đầu tư và ứng dụng

Trang 35

3.4.2 Selenium

3.4.2.1 Giới thiệu

Selenium là tool kiểm thử đang được áp dụng rộng rãi cho các hệ thống Web Với nhiều ưu điểm sau:

o Là tool open source => dễ cài đặt và không tốn chi phí sử dụng Quá trình

sử dụng có thể dễ dàng customize theo nhu cầu

o Dễ sử dụng hơn so với các tool khác cùng loại trên thị trường (QuickTest Pro, rational Robot…) => Nhân viên kiểm thử dễ dàng tiếp cận

o Là tool hỗ trợ mạnh cho các ứng dụng Web (đặc biệt trình duyệt FireFox)

=> phù hợp cho nhiều hệ thống đang phát triển tại trung tâm phần mềm Ngoài ra có thể hỗ trợ bất kỳ 1 trình duyệt nào trong khi chỉ cần tạo script trên 1 trình duyệt

Hỗ trợ nhiều loại ngôn ngữ lập trình: HTML, Java, C#, C … cho phép người sử dụng ngôn ngữ sở trường của mình để tạo Scipt

Mỗi module có một chức năng và nhiệm vụ riêng, có vai trò hỗ trợ khác nhau trong quá trình kiểm thử

Trang 37

- Selenium IDE là 1 add-on của FireFox, cho phép nhân viên kiểm thử và nhân viên phát triển ghi lại các luồng chức năng trên màn hình chương trình Do

đó Selenium IDE phù hợp cho việc kiểm thử GUI và các chức năng cần kiểm tra chủ yếu về luồng chức năng theo màn hình của các hệ thống sử dụng trình duyệt FireFox

- Selenium IDE cung cấp sẵn 1 thư viện các lệnh tương tác màn hình, đáp ứng được hầu hết các sự kiện màn hình khi người dùng cần Cách gọi lệnh rất trực quan dễ dùng, không đòi hỏi người dùng phải có kiến thức nhiều về ngôn ngữ lập trình

- Selenium cung cấp cơ chế mở rộng linh hoạt, cho phép người dùng dễ dàng

mở rộng thư viện lệnh theo nhu cầu Sử dụng JavaScript – ngôn ngữ lập trình

khá đơn giản hiện nay

Command trong Selenium IDE

Một dòng lệnh trong Selenium IDE được cấu thành từ 3 tham số: command, target, value

Selenimu RC cho phép chúng ra test trên nhiều trình duyệt khác nhau mà không cần phải cài đặt Selenium core trên web server cũng không cần thay đổi gì trên script

Trang 38

Sự thay đổi này cho phép developer và tester có thể sử dụng các ngôn ngữ lập trình

để gửi command tới browser cho phép thực hiện các testcase phức tạp mà Selenium IDE không làm được như database testing Không đơn giản như Selenium IDE, để

sử dụng được Selenium RC đòi hỏi người sử dụng cần có kiến thức về ngôn ngữ lập trình, biết cách tự tạo ra script test

Selenium RC hỗ trợ chạy trực tiếp các script được tạo từ Selenium IDE với nhiều

trình duyệt khác ngoài FireFox

Run Script từ Selenium IDE với Selenium RC

Trên màn hình command Prompt chạy câu lệnh sau:

Java –jar selenium-server-standalone.jar –htmlsuite *trình_duyệt

Kết quả: Xuất hiện 2 cửa sổ

1 cửa sổ hiển thị thông tin của testsuite được chạy trên Selenium Core Framework như hình vẽ

Trang 39

Hình 2: Cửa sổ Selenium Core Framework

1 cửa sổ khác mở ra trình duyệt tương ứng và load đường dẫn URL tương ứng trong command Sau đó sẽ thực thi testsuite trên cửa sổ này Kết thúc sẽ ghi kết quả test ra file result.html tương ứng

Hình 3: File chứa kết quả result.html

c, Selenium Core

Selenium Core yêu cầu máy client chạy là 1 web server cho ứng dụng cần đo

và cần file Selenium Core zip Selenium Core giúp thực thi các script test đã được

Trang 40

tạo ra bằng Selenium IDE với bất kỳ một trình duyệt nào trong đó máy chạy script đóng luôn vai trò là server của ứng dụng

d, Selenium Grid

Selenium Grid là một sự mở rộng cho Selenium RC cho phép run với số lượng lớn test suite và trên nhiều môi trường Selenium Grid cho phép bạn chạy nhiều bài test song song và nhiều bài test khác nhau có thể chạy cùng lúc trên nhiều máy từ xa

Điều này có 2 ưu điểm Thứ nhất, nếu bạn có 1 số lượng lớn test suite và 1 test suite chạy chậm bạn có thể tăng hiệu suất bằng cách sử dụng Selenium Grid, cho phép điều khiển test suite để chạy nhiều bài test khác nhau tại cùng lúc trên nhiều máy Thứ hai, nếu bạn cần phải chạy test suite trên nhiều môi trường khác nhau Seleneum Grid sẽ giúp bạn chạy test trên nhiều máy cùng lúc Selenium Grid ghóp phần giảm một phần rất lớn thời gian chạy test suite bằng cách xử lý song song

e, Selenium WebDriver

Tính năng mới quan trọng nhất trong Selenium 2 là sự tích hợp của WebDriver API WebDriver được thiết kế để cung cấp 1 giao diện chương trình đơn giản hơn, more concise ghóp phần giải quyết một số hạn chế trong Selenium RC API Selenium WebDriver được phát triển để hỗ trợ tốt hơn những trang web động nơi có những element có thể thay đổi kể cả khi trang tự động load lại Mục đích của WebDriver là đưa ra một API hướng đối tượng được thiết kế tốt để cung cấp sự hỗ

trợ tốt hơn cho những vấn đề trong quá trình kiểm thử ứng dụng web nâng cao Điểm khác của WebDriver so với Selenium RC

Selenium WebDriver sử dùng lệnh gọi trực tiếp đến trình duyệt vốn có sẵn một cách tự động Vì sử dụng trực tiếp những trình duyệt có sãn nên những tính năng được hỗ trợ sẽ phụ thuộc vào trình duyệt được sử dụng Trong khi Selenium

RC làm việc như nhau trên các trình duyệt được hỗ trợ

Ngày đăng: 14/02/2021, 18:49

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm