Luận văn Nghiên cứu và ứng dụng giải pháp kiểm thử tự động phần mềm

ĐẠI HỌC QUỐC GIA HÀ NỘI  
VIỆN CÔNG NGHỆ THÔNG TIN  
NGUYỄN THỊ HÒA  
NGHIÊN CỨU VÀ ỨNG DỤNG GIẢI PHÁP  
KIỂM THỬ TỰ ĐỘNG PHẦN MỀM  
Ngành: Công nghệ thông tin  
Chuyên ngành: Quản lý Hệ thống thông tin  
Mã số: Chuyên nghành đào tạo thí điểm  
LUẬN VĂN THẠC SĨ  
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. ĐINH VĂN DŨNG  
HÀ NỘI - 2014  
LỜI CAM ĐOAN  
Tôi xin cam đoan rằng, đây là kết quả nghiên cứu của tôi trong đó có sự giúp  
đỡ rất lớn của thầy hướng dẫn và các đồng nghiệp ở cơ quan. Các nội dung nghiên  
cứu và kết quả trong đề tài này hoàn toàn trung thực.  
Trong luận văn, tôi có tham khảo đến một số tài liệu của một số tác giả đã  
được liệt kê tại phần “Tài liệu tham khảo” ở cuối luận văn.  
Tác giả luận văn  
Nguyễn Thị Hòa  
LỜI CẢM ƠN  
Em xin chân thành cảm ơn đến Viện Công Nghệ thông tin, Đại học công nghệ, Đại  
học Quốc gia Hà Nội đã tạo điều kiện cho em học tập và thực hiện luận văn này.  
Em xin gửi lời cảm ơn chân thành đến Tiến Sĩ Đinh Văn Dũng, người đã tận tình  
hướng dẫn em trong quá trình làm luận văn này.  
Em xin cảm ơn quý Thầy Cô đã nhiệt tình giảng dạy cho chúng em trong những năm  
học vừa qua.  
Cuối cùng, em xin được gửi lời cảm ơn chân thành đến gia đình cũng như bạn bè đã  
luôn ủng hộ, động viên em để em có thể có điều kiện tốt nhất để học tập và nghiên cứu.  
Hà Nội, tháng 12/2014  
Nguyễn Thị Hòa – Lớp CIO 03  
Viện Công nghệ thông tin – Đại học Quốc gia Hà Nội  
 
MỤC LỤC  
BẢNG CÁC TỪ VIẾT TẮT  
#
1
2
3
4
5
6
Thuật ngữ  
GUI  
Ý nghĩa  
Graphical user interface  
HTKTTĐ  
TSV  
Hệ thống kiểm thử tự động  
Tab-Separated Values  
CSV  
Comma-Separated Values  
HyperText Markup Language  
System Applications Products  
HTML  
SAP  
 
DANH MỤC HÌNH VẼ  
 
DANH MỤC BẢNG BIỂU  
 
MỞ ĐẦU  
Sự cần thiết của đề tài  
Chúng ta đã và đang chứng kiến sự tăng trưởng đáng kinh ngạc của nghành  
công nghiệp phần mềm trong vài thập kỉ qua. Nếu như trước đây, phần mềm máy  
tính chỉ được sử dụng để tính toán khoa học kỹ thuật và xử lý dữ liệu, thì ngày nay,  
nó đã được ứng dụng vào mọi mặt của đời sống hàng ngày của con người. Từ các  
ứng dụng nhỏ để điều khiển các thiệt bị gia dụng như điện thoại, máy giặt, ti vi, tủ  
lạnh đến các ứng dụng lớn hơn cho rất nhiều người dùng cùng sử dụng như hệ  
thống quản lý doanh nghiệp, các hệ thống hướng dẫn giao thông, hệ thống quản lý  
việc khám chữa bệnh. Có thể nói, công nghiệp phần mềm đã len lỏi đến từng ngóc  
nghách nhỏ nhất của đời sống con người, đỏi hỏi chất lượng phần mềm ngày một  
nâng cao hơn. Đồng nghĩa với việc cần phải kiểm thử phần mềm chặt chẽ để có thể  
đảm bảo chất lượng của phần mềm.  
Kiểm thử phần mềm là khâu sống còn của sản phẩm trước khi đưa vào sử  
dụng, góp phần quyết định sự thành công của dự án phần mềm. Tuy nhiên, kiểm thử  
là một công việc tiêu tốn rất nhiều thời gian, tiền bạc, công sức. Nhất là đối với các  
phần mềm lớn, chi phí này càng tăng lên gấp bội mỗi khi có sự thay đổi, nâng cấp  
các chức năng của phần mềm. Mà điều này thì không thể tránh khỏi, phần mềm  
luôn cần được thay đổi để đáp ứng yêu cầu ngày một cao hơn của người sử dụng.  
Khi có sự thay đổi của phần mềm, đồng nghĩa ngoài việc kiểm thử chức năng mới,  
các chức năng cũ cũng cần được kiểm tra kỹ càng để đảm bảo chúng vẫn hoạt động  
tốt . Đó chính là hoạt động kiểm thử hồi qui.  
Hiện tại, kiểm thử hồi qui tại các công ty nhỏ và vừa ở trong nước chủ yếu  
được thực hiện bởi kiểm thử thủ công. Nhiều khi chức năng thay đổi nhỏ nhưng  
phần cần thực hiện kiểm thử lại rất lớn, bên cạnh việc tốn kém chi phí, nhân lực,  
cũng có khả năng có thể chậm tiến độ, bị lọt lỗi khi bàn giao sản phẩm. Do đó, luận  
văn mong muốn đưa ra giải pháp tự động hóa kiểm thử nhằm giảm thiểu chi phí  
1
 
kiểm thử, cả về thời gian, tiền bạc, con người, và giảm sự nhàm chán cho kiểm thử  
viên mà vẫn đảm bảo được chất lượng của sản phẩm.  
Với sự phát triển mạnh mẽ của phát triển phần mềm cũng như là kiểm thử  
phần mềm hiện nay, có rất nhiều công cụ hỗ trợ cho kiểm thử tự động, mỗi công cụ  
có thế có một số phương pháp luận khác nhau. Nhưng điều đó không đồng nghĩa  
với việc lựa chọn công cụ bất kỳ nào cũng tốt, hoặc cứ áp dụng kiểm thử tự động là  
có thể tiết kiệm chi phí và đảm bảo dự án sẽ thành công. Vì vậy luận văn mong  
muốn đưa ra một cái nhìn tồng quan nhất trong việc nghiên cứu áp dụng tự động  
hóa trong kiểm thử phần mềm hiện nay, các thế hệ công cụ kiểm thử tự động cũng  
như nghiên cứu hai phương pháp luận tự động hóa kiểm thử hướng dữ liệu và  
hướng từ khóa. Cuối cùng, luận văn sẽ áp dụng kiểm thử tự động trong kiểm thử  
chức năng của phần mềm Ads Editor với công cụ Robot Framework.  
Nội dung của luận văn  
Với mục đích như trên, luận văn có những nội dung như sau:  
Luận văn tổng hợp lý thuyết về kiểm thử phần mềm và kiểm thử tự động -  
một giải pháp góp phần nâng cao năng suất, chất lượng hoạt động kiểm thử phần  
mềm.  
Luận văn mô tả phương pháp kiểm thử hướng dữ liệu và phương pháp kiểm  
thử hướng từ khóa. Nền tảng lý thuyết này sẽ được thử nghiệm trong luận văn này.  
Luận văn đã mô tả từng bước quá trình áp dụng kiểm thử hướng dữ liệu và  
hướng từ khóa vào kiểm thử một hệ thống trong thực tế, góp phần giảm chi phí việc  
kiểm thử một số sản phẩm phần mềm.  
Cấu trúc của luận văn  
Với mục tiêu xây dựng giải pháp tự động hóa cho kiểm thử hồi qui, luận văn  
được chia làm bốn chương:  
Chương I: Tổng quan kiểm thử tự động  
Chương này giới thiệu về khái niệm kiểm thử, kiểm thử tự động, vai trò và lợi  
ích khi ứng dụng kiểm thử tự động trong hoạt động kiểm thử phần mềm. Chương  
này cũng trình bày các bước để tiếp cận kiểm thử tự động cũng như các vấn đề có  
2
thể gặp phải trong quá trình áp dụng kiểm thử tự động.Ngoài ra cũng tổng hợp về  
tình hình thị trường của kiểm thử tự động, tình hình nghiên cứu áp dụng kiểm thử tự  
động hiện nay.  
Chương II: Giải pháp kiểm thử tự động hướng dữ liệu và hướng từ khóa  
Từ những nghiên cứu ở Chương I, chương này giới thiệu hai giải pháp kiểm  
thử tự động hướng dữ liệu và hướng từ khóa.  
Chương III: Thử nghiệm kiểm thử hướng dữ liệu và từ khóa  
Chương này giới thiệu sơ lược với bạn đọc về phần mềm quản lý quảng cáo  
trực tuyến Ads Editors. Lý do cần thiết phải xây dựng hệ thống kiểm thử tự động để  
kiểm thử cho hệ thống Ads Editors. Đưa ra các bước xây dựng kiểm thử hướng dữ  
liệu và hướng từ khóa trong việc áp dụng kiểm thử tự động chức năng “Post  
changes/ Get changes”.  
Chương IV: Kết luận và khuyến nghị  
Trong chương này, chúng tôi sẽ tổng kết lại các kết quả và đóng góp mà việc  
thực hiện đề tài đem lại. Ngoài ra, chúng tôi cũng đề xuất các phương hướng nghiên  
cứu tiếp theo, nhằm giúp cho đề tài trở nên hoàn thiện hơn.  
3
CHƯƠNG 1. TỔNG QUAN KIỂM THỬ TỰ ĐỘNG PHẦN MỀM  
1.1 Giới thiệu  
Khái niệm  
Kiểm thử phần mềm là qui trình thực hiện một chương trình hay hệ thống với  
mục đích tìm lỗi, như Myer định nghĩa [1]. Có kiểm thử, chúng ta có thể đánh giá  
được các yêu cầu về chức năng cũng như yêu cầu phi chức năng (tính tin cậy, tính  
khả dụng, tính hiệu quả, khả năng bảo trì, bảo mật, tính di động) của phần mềm. Lỗi  
phần mềm càng được tìm ra muộn, nhất là sau khi sản phẩm đã đến tay người dùng  
thì càng tốn nhiều thời gian và tiền bạc để sửa lỗi. Do đó, kiểm thử phần mềm được  
thực hiện ngay trong quá trình phát triển phần mềm.  
Hiện nay, các công cụ hỗ trợ lập trình đã giúp tăng cải thiện năng suất làm việc  
của các lập trình viên lên rất nhiều. Điều này dẫn đến tăng áp lực lên các kiểm thử  
viên, những người thường đứng ở vị trí nút cổ chai trong việc bàn giao sản phẩm  
phần mềm. Đòi hỏi kiểm thử viên phải kiểm thử nhiều hơn trong khoảng thời gian ít  
hơn. Nên việc cần làm với các kiểm thử viên đó là tìm ra cách để vừa đảm bảo chất  
lượng của phần mềm, đồng thời phải rút ngắn thời gian kiểm thử, đồng nghĩa với  
việc tăng năng suất kiểm thử. Cũng giống như rất nhiều nghành nghề khác, khi nghĩ  
đến việc tăng năng suất lao động, người ta nghĩ đến tự động hóa. Vậy kiểm thử tự  
động là gì?  
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ử. Mục đích của kiểm thử tự động là giảm thiểu thời gian, công sức  
và kinh phí, tăng độ tin cậy, tăng tính hiệu quả và giảm sự nhàm chán cho kiểm thử  
viên trong quá trình kiểm thử phần mềm. [2]  
Kiểm thử phần mềm hay kiểm thử kiểm thử phần mềm tự động có thể được  
phân chia thành kiểm thử tĩnh và kiểm thử động, trong đó kiểm thử động bao gồm  
kiểm thử chức năng và kiểm thử phi chức năng. Mỗi loại kiểm thử đều đóng vai trò  
quan trọng trong đảm bảo chất lượng phần mềm, như kiểm thử tĩnh là thực hiện  
kiểm thử ở giai đoạn sớm của quá trình phát triển phần mềm, phát hiện các lỗi trên  
4
   
các tài liệu thiết kế, mã nguồn... Kiểm thử động được thực hiện khi mã nguồn được  
thực thi, nhằm phát hiện ra các lỗi về chức năng như phần mềm có hoạt động như  
thiết kế không, hoặc các lỗi phi chức năng như phần mềm có hoạt động như mong  
muốn của người dùng không. Do có rất nhiều thuật ngữ liên quan đến kiểm thử và  
kiểm thử tự động không thể giới thiệu hết trong phạm vi của luận văn. Nên luận văn  
chỉ đề cập đến các khái niệm kiểm thử chức năng và kiểm thử hồi qui, tập trung vào  
áp dụng kiểm thử tự động các chức năng ở trong giai đoạn kiểm thử hồi qui.  
Kiểm thử chức năng  
Giống như tên gọi của nó, kiểm thử chức năng đảm bảo rằng các chức năng  
của phần mềm sẽ hoạt động đúng như yêu cầu trong đặc tả phần mềm, Chức năng  
của phần mềm là những gì mà nó được xây dựng để có thể làm được. Vậy kiểm thử  
chức năng sẽ là kiểm tra xem phần mềm có thể làm được các yêu cầu có trong đặc  
tả hay ca sử dụng (use cases). Có thể có một số chức năng mà cũng được giả sử sẽ  
thỏa mãn mặc dù không được nhắc đến trong tài liệu nhưng được ngầm hiểu bởi  
kiểm thử viên. Kiểm thử chức năng có thể được thực hiện ở tất cả các mức kiểm  
thử: kiểm thử đơn vị, kiểm thử tích hợp, kiểm thử hệ thống, kiểm thử chấp nhận…  
Dựa theo tiêu chuẩn ISO 9126, kiểm thử chức năng có thể tập trung vào tính  
phù hợp (suitability), tính tương tác (interoperability), tính bảo mật (security), tính  
chính xác (accuracy) và tính tuân thủ (compliance).  
Trong đó tính phù hợp đó là khả năng phần mềm có thể cung cấp các tập hợp  
các chức năng phù hợp cho một tác vụ cụ thể và mục tiêu người dùng. Tính tương  
tác đó là khả năng phần mềm có thể tương tác với một hoặc nhiều thành phần cụ thể  
hoặc hệ thống. Tính bảo mật là khả năng phần mềm có thể ngăn chặn truy cập trái  
phép, dù vô tình hay cố ý các chương trình và dữ liệu. Tính chính xác là khả năng  
của phần mềm có thể cung cấp các quyền hay những đồng thuận về kết quả hoặc  
ảnh hưởng với mức độ cần thiết của độ chính xác.  
Kiểm thử chức năng có thể thực hiện theo hai xu hướng: Dựa trên yêu cầu  
hoặc dựa trên qui trình nghiệp vụ.  
5
Kiểm thử chức năng dựa trên yêu cầu sử dụng đặc tả của hệ thống là tài liệu cơ  
bản để thiết kế các bài kiểm thử. Một cách bắt đầu tốt đó là sử dụng bảng mục lục  
của tài liệu đặc tả để liệt kê ra danh sách các đầu mục cần thực hiện kiểm thử (hoặc  
không kiểm thử). Chúng ta cần đánh độ ưu tiên cho các bài kiểm thử để đảm bảo  
rằng những phần yêu cầu quan trọng nhất chắc chắn được thực hiện kiểm thử.  
Kiểm thử dựa trên qui trình nghiệp vụ sử dụng kiến thức liên quan đến qui  
trình nghiệp vụ. Qui trình nghiệp vụ miêu tả kịch bản sử dụng chức năng hàng ngày  
của hệ thống. Sử dụng tài liệu ca sử dụng rất phù hợp cho việc tạo các bài kiểm thử  
theo hướng nghiệp vụ. [3]  
Một cách tổng quát, kiểm thử chức năng có thể được hoàn thành trong hai  
bước như minh họa ở Hình 1. Đầu tiên hệ thống cần kiểm thử được nhập giá trị đầu  
vào. Sau đó kết quả đầu ra của phần mềm và sự thay đổi trong trạng thái của phần  
mềm được so sánh với kết quả mong muốn mà đã được định nghĩa từ trước. Trong  
hầu hết trường hợp, các bước này đều có thể được tự động hóa.[4]  
Hình 1: Kiểm thử chức năng ở góc nhìn tổng quan (High level view)  
Kiểm thử hồi qui  
Như đã nói ở trên, khi xây dựng một phiên bản mới của hệ thống như sửa lỗi,  
thêm chức năng, chúng ta có thể vô tình gây ra các lỗi mới. Nhiều khi có thay đổi  
rất nhỏ nhưng cũng gây ra vấn đề rất lớn ngoài sức tưởng tượng của đội phát triển.  
6
 
Để tránh những sự việc đáng tiếc này xảy ra, chúng ta cần kiểm thử lại phần mềm  
để đảm bảo chức năng đã chạy tốt vẫn tiếp tục chạy tốt.  
Khi phiên bản mới của phần mềm không còn hoạt động như trước chúng ta nói  
là phiên bản mới hồi qui với bản trước đó. Phiên bản mới không hồi qui tức là nó  
vẫn giữ được các tính năng là một yêu cầu chất lượng cơ bản. Các hoạt động kiểm  
thử tập trung vào vấn đề hồi qui được gọi là kiểm thử hồi qui. Đúng ra chúng ta cần  
kiểm tra phiên bản mới không hồi qui về phiên bản cũ, nhưng thuật ngữ kiểm thử  
hồi quy đã phổ biến nên chúng ta dùng thuật ngữ này. Kiểm thử hồi qui được minh  
họa như hình dưới đây.  
Hình 2: Kiểm thử hồi qui  
Phương pháp đơn giản để kiểm thử hồi quy là chạy lại tất cả các ca kiểm thử  
của phiên bản trước. Tuy nhiên việc kiểm lại toàn bộ này rất tốn kém và không tầm  
thường. Các bài kiểm thử trước đó có thể không chạy lại được với phiên bản mới  
của phần mềm mà không sửa đổi gì. Chạy lại toàn bộ các bài kiểm thử là rất tốn  
kém và nhiều phần trong đó là không cần thiết. Một bộ kiểm thửu chất lượng tốt  
phải được duy trì xuyên suốt các phiên bản của hệ thống.  
Thay đổi trong phiên bản phần mềm mới có thể tác động tới khuôn dạng của  
đầu vào và đầu ra, và các bài kiểm thử có thể cần các thay đổi tương ứng để chạy  
được. Ngay cả việc sửa đổi một cách đơn giản của cấu trúc dữ liệu, chẳng hạn như  
bổ xung các trường có thể làm cho các bài kiểm thử trước đây không chạy được  
7
nữa. Hơn nữa một số bài kiểm thử có bị lỗi thời, khi các tính năng của phần mềm đã  
thay đổi hoặc bị loại bỏ khỏi phiên bản mới. Các khung hỗ trợ để dịch đặc tả kiểm  
thử thành bài kiểm thử sẽ giúp giảm ảnh hưởng của thay đổi định dạng của đầu vào  
và đầu ra. Các đặc tả bài kiểm thử và các mệnh đề về kết quả mong đợi mà phản  
ánh tính đúng của bài kiểm thử và tránh các chi tiết cụ thể sẽ giảm một phần lớn  
công sức kiểm thử khi có thay đổi nhỏ. Các bộ kiểm thử chất lượng cao có thể được  
duy trì qua các phiên bản của phần mềm bằng việc xác định và loại bỏ các bài kiểm  
thử lỗi thời và phát hiện và đánh dấu thích hợp các bài kiểm thử dư thừa. Ca kiểm  
thử đi cùng một đường đi trong chương trình là dư thừa với tiêu chuẩn kiểm thử cấu  
trúc, nhưng bài kiểm thử cùng một phân hoạch lại là dư thừa với kiểm thử dựa trên  
lớp tương đương. Việc dư thừa là do nhiều người cùng làm hoặc do chương trình bị  
thay đổi gây ra. Các bài kiểm thử dư thừa không ảnh hưởng đến tính đúng, sai, mà  
chỉ ảnh hưởng đến chi phí kiểm thử. Các bài kiểm thử lỗi thời cần phải loại bỏ, vì  
chúng ta không còn cần chúng còn những ca kiểm thử dư thừa chúng ta có thể giữ, vì  
chúng giúp phần mềm phát triển trong tương lai đảm bảo chất lượng hơn, tuy nhiên  
nếu chúng gây ra chi phí kiểm thử lớn quá mức cần thiết thì có thể loại bỏ. Một cách  
tiếp cận khác đó là thực hiện loại bỏ cả những bài kiểm thử mà không gặp lỗi trong  
một thời gian dài, mặc dù cần phải xem xét cẩn trọng hướng tiếp cận này. [5]  
Để góp phần nâng cao hiệu quả kiểm thử hồi qui có thể vừa kết hợp kỹ thuật  
lựa chọn các bài kiểm thử như đã nói ở đây, cùng với việc thực hiện các bài kiểm  
thử một cách tự động. Tuy nhiên, trong phạm vi của luận văn này, sẽ chỉ tập trung  
vào việc thực thực thi các bài kiểm thử trong kiểm thử hồi qui một cách tự động.  
1.2 Qui trình kiểm thử tự động  
Kiểm thử tự động sẽ được sử dụng khi dự án không đủ tài nguyên (thời gian,  
nhân lực và chi phí), như sau khi sản phẩm được sửa đổi, nâng cấp cần phải thực  
hiện kiểm thử hồi qui để chắc chắn rằng việc sửa đổi nâng cấp không làm ảnh  
hưởng đến các chức năng đã có của sản phẩm. Ngoài ra, kiểm thử tự động cũng  
được lựa chọn khi phải kiểm tra khả năng vận hành của sản phẩm trong các môi  
trường đặc biệt mà nếu dùng kiểm thử thủ công sẽ rất khó khăn để thực hiện như là  
8
 
đo tốc độ xử lý, xác định khả năng chịu tải tối đa, kiểm tra cơ chế an ninh, an toàn,  
lặp đi lặp lại một số thao tác trong thời gian dài…  
Việc kiểm thử tự động thì tốn kém hơn kiểm thử thủ công rất nhiều nếu chỉ  
thực hiện một lần. Để đạt được lợi ích, kiểm thử tự động cần phải được lựa chọn và  
thực thi một cách cẩn thận theo một tiến trình cụ thể.  
Trước khi thực hiện kiểm thử tự động, kỹ sư kiểm thử và người quản lý phải  
có hiểu biết rõ ràng về kiểm thử tự động, bao gồm nhu cầu, mục tiêu, lợi ích, các  
vấn đề và thách thức.  
Theo Douglas Hoffman, một tiến trình hiệu quả để thực hiện tự động hóa kiểm  
thử bao gồm các bước như ở hình dưới đây [6]  
Lập kế hoạch tự  
động hóa  
Thiết kế hệ thống  
tự động  
Phát triển hệ  
thống  
Lựa chọn và đánh giá  
các công cụ tự động  
Giới thiệu và triển  
khai hệ thống  
Rà soát lại và  
đánh giá  
Hình 3 Tiến trình tự động hóa  
Bước 1: Lập kế hoạch tự động hóa. Đây là bước khởi tạo. Mục đích chính  
của bước này là lập kế hoạch xác định các đối tượng cần phải tự động, mục đích,  
chiến lược, yêu cầu, lịch trình, kinh phí. Trong thực tế, kế hoạch tự động hóa  
thường được tạo cho một sản phẩm, hoặc một dòng sản phẩm ngay ở giai đoạn đầu  
của tiến trình phát triển phầm mềm.  
Bước 2: Thiết kế kiểm thử tự động. Mục tiêu chính của bước này là tạo ra  
một giải pháp tự động hóa chi tiết, phù hợp với yêu cầu và mục tiêu trong kế hoạch  
đã vạch ra. Bao gồm 2 nhiệm vụ chính. Thứ nhất là xác định và lựa chọn các công  
cụ có sẵn (các sản phẩm thương mại hoặc tự làm) để hỗ trợ tiến trình tự động hóa.  
9
 
Để thực hiện nhiệm vụ này, người tự động hóa cần phải có thông tin hướng dẫn và  
đánh giá về công cụ được lựa chọn. Thứ hai là thiết kế giải pháp tự động hóa.  
Bước 3: Phát triển công cụ kiểm thử tự động. Ở bước này, sẽ thực hiện  
phát triển công cụ dựa theo giải pháp tự động hóa đã đưa ra. Điểm mấu chốt ở bước  
này là phải chắc chắn rằng công cụ đã được phát triển là đáng tin cậy và dễ sử dụng,  
có tài liệu hướng dẫn tốt. Rất nhiều dự án tự động kiểm thử đã thất bại bởi vì chất  
lượng kém và tài liệu không tốt.  
Bước 4: Triển khai công cụ tự động. Giống như một sản phẩm thương  
mại, công cụ tự động và các lợi ích của nó cần phải được giới thiệu và triển khai sử  
dụng cho một sản phẩm nào đó. Ở bước này, việc đào tạo cho người dùng và hỗ trợ  
họ là thiết yếu.  
Bước 5: Rà soát lại (review) và đánh giá. Bất cứ khi nào một công cụ mới  
được triển khai, thì đều phải tiến hành rà soát lại để xác định các vấn đề và hạn chế  
của công cụ, đánh giá các tính năng mà nó cung cấp. Kết quả của việc rà soát này là  
bài học cho các lần triển khai về sau.  
1.3 Lợi ích và thách thức của kiểm thử tự động  
1.3.1 Lợi ích  
Dưới đây là một số lợi ích của kiểm thử tự động 69[7]:  
Kiểm thử hồi qui cho một phiên bản mới của chương trình. Điều này là  
hiển nhiên, đặc biệt là trong điều kiện các chương trình thường xuyên bị thay đổi.  
Giả thiết rằng các bài kiểm thử đã tồn tại và đã được chạy tự động ở một phiên bản  
trước đó, thì ở các phiên bản tiếp theo, chỉ cần lựa chọn các bài kiểm thử phù hợp  
và một chút chi phí cho việc hướng dẫn sử dụng công cụ là có thể thực hiện được  
việc kiểm thử.  
Chạy được nhiều bài kiểm thử và thường xuyên hơn. Với việc kiểm thử  
tự động, sẽ có nhiều bài kiểm thử được thực hiện trong khoảng thời gian ít hơn, và  
do đó các bài kiểm thử cũng được thực hiện thường xuyên hơn. Điều này sẽ làm  
tăng cường tính tin cậy của hệ thống.  
10  
 
Cho phép hoàn thành kiểm thử đối với các bài kiểm thử mà rất khó hoặc  
không thể khi thực hiện bằng tay. Ví dụ: việc cố gắng hoàn thành đúng như thực tế  
một bài kiểm thử của hệ thống với 200 người dùng cùng trực tuyến (Online) có thể  
không thực hiện được nếu thực hiện kiểm thử bằng tay. Nhưng 200 người dùng này  
có thể được giả lập bằng các công cụ kiểm thử tự động. Khi kiểm thử bằng tay, kết  
quả mong muốn thường là những nội dung rõ ràng mà người kiểm thử có thể quan  
sát. Tuy nhiên, có những thuộc tính rất khó để có thể xác nhận theo cách bình  
thường. Ví dụ đối tượng GUI (Graphical User Interface) có thể gây ra một sự kiện  
nào đó, mà ảnh hưởng của nó không được thể hiện ra ngay lập tức. Nhưng nếu sử  
dụng công cụ kiểm thử thì ta có thể kiểm tra được sự kiện như vậy.  
Sử dụng tài nguyên (Resources) tốt hơn. Tự động hóa giúp nâng cao độ  
chính sác và giải tỏa tinh thần cho người thực hiện kiểm thử. Giúp kiểm thử viên có  
có nhiều thời gian hơn cho việc lập kế hoạch, thiết kế bài kiểm thử…Mặt khác, với  
kiểm thử tự động thì máy kiểm thử có thể được sử dụng để chạy kiểm thử vào  
những lúc rảnh rỗi.  
Đảm bảo tính nhất quán của kiểm thử. Kiểm thử tự động sẽ được thực  
hiện lặp đi lặp lại một cách chính xác ở tất cả các lần kiểm thử (ít nhất là dữ liệu đầu  
vào sẽ không bị thay đổi, kết quả đầu ra thì có thể khác nhau do thời gian thực hiện).  
Điều này tạo ra sự nhất quán giữa các lần kiểm thử, điều rất khó đạt được nếu thực hiện  
bằng tay. Các bài kiểm thử giống nhau có thể được thực hiện trên các phần cứng, hệ  
điều hành hoặc cơ sở dữ liệu khác nhau. Điều này tạo nên sự nhất quán về chất lượng  
trên các nền tảng khác nhau của sản phẩm. Điều rất khó đạt được nếu thực hiện kiểm  
thử bằng tay (kiểm thử thủ công). Việc áp dụng chế độ kiểm thử tốt có thể đảm bảo các  
tiêu chuẩn phù hợp cho kiểm thử và phát triển. Ví dụ, công cụ kiểm thử có thể được sử  
dụng để kiểm tra cùng một loại tính năng đã được thực hiện theo cùng một cách ở tất  
cả các ứng dụng hoặc chương trình khác nhau.  
Tái sử dụng các bài kiểm thử. Có thể thực hiện kiểm thử nhiều lần mà  
không mất chi phí để quyết định cái gì sẽ được kiểm thử, thiết kế bài kiểm thử, xây  
dựng các bài kiểm thử hay đảm bảo tính chính xác của kiểm thử.  
11  
Rút ngắn thời gian phát triển sản phẩm. Khi mà các bài kiểm thử được  
kiểm thử tự động, nó có thể được thực hiện lặp đi lặp lại một cách nhanh chóng, vì  
vậy sẽ rút ngắn được thời gian kiểm thử. Và qua đó cũng có thể rút ngắn được thời  
gian phát triển sản phẩm và đưa sản phẩm ra thị trường (điều này còn tùy thuộc vào  
việc khắc phục lỗi, tính khả dụng của chương trình)  
Tăng tính tin cậy. Khi một số lượng lớn các bài kiểm thử tự động được  
thực hiện thành công, nó sẽ tăng cường mức độ đảm bảo rằng hệ thống sẽ được phát  
hành mà không có vấn đề gì.  
Tóm lại, với kiểm thử tự động, chúng ta có thể thực hiện kiểm thử với chi phí  
ít hơn, và chất lượng, năng suất cao hơn.  
1.3.2Thách thức của kiểm thử tự động  
Bên cạnh những lợi ích của kiểm thử tự động, cũng có rất nhiều thách thức và  
điểm yếu. Hầu hết các dự án tự động bị thất bại do các mong muốn thiếu thực tế,  
thiếu thực hành, các giả thiết đặt ra không chuẩn hoặc các vấn đề về kỹ thuật.  
Một vấn đề về kỹ thuật đối với một kỹ sư kiểm thử đó là phải xác định nên tự  
động hóa cái gì. Các thất bại phổ biến nhất thường là cố gắng thực hiện tự động hóa  
quá nhiều. Không thể thực hiện tự động hết tất cả các hoạt động kiểm thử hay các  
bài kiểm thử. Luôn luôn có một số hoạt động kiểm thử mà thực hiện thủ công dễ  
hơn rất nhiều so với kiểm thử tự động, hoặc hoạt động đó rất khó để có thể tự động  
hóa. Các kiểm thử mà được tiến hành rất ít, hoặc các kiểm thử mà kết quả của nó rất  
dễ được xác nhận khi kiểm thử thủ công, nhưng lại rất khó khi tự động, hoặc phần  
mềm được kiểm thử không ổn định, hay khi thực hiện kiểm thử tính khả dụng.  
Thực hiện tự động hóa kiểm thử quá sớm không phải là một ý kiến hay, bởi vì  
đặc tả của phần mềm thường có xu hướng thay đổi nhiều lần trong giai đoạn phát  
triển. Trong trường hợp xấu nhất, kết quả sẽ là có rất nhiều các kiểm thử tự động mà  
rất khó để bảo trì.  
Chỉ đơn giản mua một công cụ tự động không đảm bảo đạt được các lợi ích,  
giống như chỉ mua một máy tập thể hình sẽ không đảm bảo rằng bạn sẽ giảm cân và  
12  
có thân hình như ý muốn. Mỗi tổ chức cần đầu tư công sức và thời gian để có thể  
đạt được các lợi ích từ kiểm thử tự động.  
Có rất nhiều rủi ro khi các công cụ hỗ trợ kiểm thử được sử dụng, không kể đó  
là công cụ nào, các rủi ro bao gồm:  
Đặt ra mong muốn sử dụng công cụ không thực tế  
Đánh giá quá thấp thời gian, giá thành và công sức phải bỏ ra khi bắt đầu  
áp dụng công cụ tự động  
Đánh giá thấp các công sức cần thiết để bảo trì các tài sản kiểm thử mà  
được sinh tự động từ công cụ  
Phụ thuộc quá mức vào công cụ.  
Kỳ vọng không thực tế có lẽ là một trong những rủi ro lớn nhất khi sử dụng  
công cụ tự động. Các công cụ cũng chỉ là phần mềm và chúng ta đều biết rằng bất  
kỳ phần mềm nào cũng có rất nhiều vấn đề. Định hướng rõ ràng về mục tiêu sử  
dụng của công cụ và các mục tiêu đó phải thực tế là vô cùng quan trọng để đạt được  
thành công khi tự động hóa kiểm thử.  
Rõ ràng, công cụ không phải là phép màu. Chúng có thể hoàn thành tốt công  
việc mà chúng được thiết kế để làm, hoặc ít nhất là có thể hoàn thành, nhưng chúng  
không làm được tất cả. Một công cụ có thể giúp đỡ, nhưng không thể thay thế được  
sự thông minh cần thiết để biết cách sử dụng công cụ một cách tốt nhất, và làm sao  
để đánh giá việc sử dụng hiện tại cũng như trong tương lai của công cụ. Ví dụ, công  
cụ thực thi kiểm thử (Test excecution tool) không thể thay thế được công việc thiết  
kế kịch bản kiểm thử và không thể thay thế được toàn bộ các hoạt động kiểm thử -  
Một số hoạt động mà kiểm thử thủ công sẽ tốt hơn kiểm thử tự động, như là những  
bài kiểm thử mà mất rất nhiều thời gian để tự động nhưng lại không phải tiến hành  
thường xuyên.[3]  
1.4 Thị trường kiểm thử tự động  
Trên thế giới  
Một nghiên cứu thị trường được thực hiện trong tháng 11 & tháng 12 năm  
2012 ở một số nước ở Bắc Mỹ và châu Âu về xu hướng kiểm thử tự động cho hệ  
13  
 
Tải về để xem bản đầy đủ
pdf 94 trang yennguyen 22360 Free
Bạn đang xem 20 trang mẫu của tài liệu "Luận văn Nghiên cứu và ứng dụng giải pháp kiểm thử tự động phần mềm", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfluan_van_nghien_cuu_va_ung_dung_giai_phap_kiem_thu_tu_dong_p.pdf