Tóm tắt 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ố: 11110034  
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  
1
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í 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  
2
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ó 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  
4
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 Error! Reference source not found.. 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.  
Error! Reference source not found.  
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 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ó  
5
đượ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…  
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. Để 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.  
Để 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  
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 Error! Reference source not found.  
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 1 Tiến trình tự động hóa  
1.3 Lợi ích và thách thức của kiểm thử tự động  
1.3.1 Lợi ích  
1.3.2 Thách thức của kiểm thử tự động  
1.4 Thị trường kiểm thử tự động  
Trên thế giới  
6
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ệ thống doanh nghiệp trong năm  
2013 đã chỉ ra rằng kiểm thử tự động ngày càng nhận được sự quan tâm và đầu tư của doanh  
nghiệp. Có 204 doanh nghiệp trên tổng số 594 doanh nghiệp xác nhận lên kế hoạch tăng cường đầu  
tư vào kiểm thử tự động và đảm bảo chất lượng phần mềm trong 12 tháng tới. Chỉ có 24.6% nhận  
định là không lên kế hoạch trong lĩnh vực này.  
Tại Việt Nam  
Theo báo cáo dịch vụ phần mềm toàn cầu hàng năm từ Gartner, Việt Nam đứng trong tốp 30  
của các nước gia công phần mềm hàng đầu thế giới cho gia công phần mềm và đứng trong tốp 10  
của khu vực Châu Á – Thái Bình Dương. Kiểm thử phần mềm là một nghành công nghiệp mới và  
nắm giữ rất nhiều tiềm năng cho Việt Nam, đặc biệt là trong lĩnh vực gia công phần mềm, nơi mà  
kiểm thử phần mềm đang thu hút được sự quan tâm của giới trẻ Error! Reference source not  
found.. Tuy nhiên nguồn nhân lực về kiểm thử phần mềm và đặc biệt là kiểm thử tự động ở Việt  
Nam đang không đáp ứng được nhu cầu của các nhà tuyển dụng.  
1.5 Tình hình nghiên cứu kiểm thử tự động  
Khung kiểm thử tự động được xuất hiện từ rất lâu, và được tổng quát hóa như sau:  
1. Thế hệ đầu tiên của khung là phi cấu trúc, có dữ liệu kiểm thử được nhúng vào trong đoạn  
mã (Script) và thường có một đoạn mã cho mỗi bài kiểm thử. Các đoạn mã chủ yếu được sinh ra  
bởi sử dụng công cụ “chụp và chạy lại” (Capture and replay) nhưng cũng có thể được viết thủ  
công. Kiểu đoạn mã như thế này thường không có khả năng bảo trì và khi mà hệ thống được kiểm  
thử có thay đổi thì đoạn mã liên quan sẽ phải thực hiện lại công việc chụp và chạy lại.  
2. Thế hệ khung thứ hai có mã nguồn được thiết kế tốt, mô-đun hóa, mạnh, có tài liệu và do  
đó có khả năng bảo trì. Đoạn mã không chỉ thực thi kiểm thử mà ví dụ cũng có thể cài đặt, làm  
sạch, phát hiện lỗi và phục hồi. Dữ liệu kiểm thử vẫn được nhúng trực tiếp vào trong đoạn mã nên  
vẫn có một mã nguồn điều khiển (Driver scripts) cho một bài kiểm thử. Mã nguồn hầu hết được  
viết bằng tay và khả năng bảo trì thì yêu cầu cần có kỹ năng lập trình mà có thể kiểm thử viên  
không có.  
3. Thế hệ khung thứ ba có tất cả các đặc tính tốt được tìm thấy ở thế hệ thứ hai, ngoài ra thì  
việc dữ liệu kiểm thử được tách ra khỏi mã nguồn cũng có thêm nhiều lợi ích đáng kể. Lợi ích đầu  
tiên là một đoạn mã có thể dùng cho rất nhiều bài kiểm thử bằng cách chỉ cần điều chỉnh dữ liệu  
kiểm thử và thêm một số bài kiểm thử một cách bình thường. Lợi ích thứ hai đó là thực hiện thiết  
kế kiểm thử và việc thực hiện viết mã nguồn để thực thi kiểm thử là hai công việc riêng rẽ, việc đầu  
tiên có thể thực hiện bởi người có kiến thức về lĩnh vực kiểm thử, biết cách xây dựng những bài  
kiểm thử có chất lượng tốt và việc thứ hai được thực hiện bởi người có kĩ năng lập trình mà có thể  
7
không có kĩ năng thiết kế bài kiểm thử. Khái niệm này được gọi là kiểm thử hướng dữ liệu (Data-  
driven testing). Kiểm thử hướng từ khóa (Keyword-driven testing) đó là thêm các từ khóa điều  
khiển việc thực thi kiểm thử vào dữ liệu kiểm thử. Error! Reference source not found.  
Việc áp dụng khung thế hệ thứ ba trong kiểm thử tự động chính là mục tiêu của khóa luận  
này. Chi tiết về kiểm thử hướng dữ liệu và kiểm thử hướng từ khóa sẽ được giới thiệu cụ thể hơn ở  
chương 2.  
1.6 Tình hình ứng dụng kiểm thử tự động  
Bảng 1. Phân loại các công cụ kiểm thử phần mềm tự động  
#
Loại công cụ  
Miêu tả chức năng  
1
Quản lý thông tin kiểm thử  
Công cụ và các giải pháp hỗ trợ các kỹ thuật kiểm thử và  
(Test information management đảm bảo chất lượng, giúp tạo, cập nhật và bảo trì các thông  
)
tin kiểm thử đa dạng, bao gồm bài kiểm thử, kịch bản, dữ  
liệu, kết quả kiểm thử và các vấn đề được phát hiện.  
Công cụ và giải pháp hỗ trợ thiết lập và thực hiện kiểm thử,  
tập hợp và đánh giá kết quả kiểm thử.  
2
Điều khiển và thực thi kiểm  
thử (Test execution and  
control)  
3
4
5
6
Tạo kiểm thử tự động (Test  
generation)  
Giải pháp và công cụ tạo ra các chương trình kiểm thử một  
cách tự động.  
Phân tích độ phủ của kiểm thử Công cụ và giải pháp thực hiện phân tích mật độ phủ của  
(Test coverage analysis)  
Đo hiệu năng (Performance  
testing and measurement)  
Giả lập phần mềm (Software  
simulators )  
bài kiểm thử dự trên các tiêu chí được lựa chọn.  
Công cụ và giải pháp hỗ trợ việc đo và kiểm tra hiệu năng  
của hệ thống.  
Chương trình được phát triển để giả lập chức năng hoặc  
hành động của hệ thống bên ngoài hoặc các thành phần/hệ  
thống con cần thiết cho việc kiểm thử.  
7
Kiểm thử hồi qui (Regression  
Công cụ hỗ trợ kiểm thử hồi qui và các hoạt động “Ghi” và  
“Chụp và chạy lại” (recording, capturing and replaying)  
testing)  
8
CHƯƠNG 2. GIẢI PHÁP KIỂM THỬ TỰ ĐỘNG HƯỚNG DỮ LIỆU VÀ TỪ KHÓA  
Chương 1 đã giới thiệu những khái niệm chung về kiểm thử tự động phần mềm, trong đó  
nhấn mạnh luân văn tập trung vào những khung kiểm thử tự động trên qui mô lớn. Khung kiểm thử  
tự động là một tập hợp các giả định, các khái niệm và công cụ được cung cấp để hỗ trợ cho quy  
trình kiểm thử tự động. Nó là một hệ thống tích hợp thiết lập các qui tắc tự động hóa một sản phẩm  
cụ thể như là chức năng, nguồn dữ liệu kiểm thử chi tiết các đối tượng và mô-đun có thể tái sử  
dụng khác nhau Error! Reference source not found. . Với mục tiêu áp dụng khung kiểm thử tự  
động hướng dữ liệu và từ khóa, trong Chương 2 sẽ trình bày về yêu cầu của khung kiểm thử tự  
động, nghiên cứu giải pháp kiểm thử hướng dữ liệu (Data –driven testing) và hướng từ khóa  
(Keyword-driven testing).  
2.1. Yêu cầu chức năng của khung tự động hóa kiểm thử  
Những yêu cầu mức cao của khung kiểm thử tự động được liệt kê ngắn gọn trong Bảng 2.  
Error! Reference source not found.  
Bảng 2: Yêu cầu mức cao cho khung kiểm thử tự động  
Tự động thực thi Là yêu cầu số một của kiểm thử tự động, nhưng nếu chỉ thực thi kiểm thử thôi  
kiểm thử  
thì chưa đủ, khung kiểm thử tự động còn phải có khả năng phân tích kết quả  
kiểm thử, kiểm soát lỗi và xuất ra báo cáo.  
Dễ sử dụng  
Cho phép người dùng có thể thiết kế và chỉnh sửa kịch bản kiểm thử, sau đó  
chạy và giám sát trạng thái của quá trình kiểm thử mà không cần phải có kỹ  
năng lập trình.  
Khả năng bảo trì Khả năng bảo trì dữ liệu kiểm thử và mã nguồn của khung kiểm thử tự động  
phải có thể sửa đổi thật nhanh và dễ dàng khi hệ thống đang kiểm thử có thay  
đổi.  
Có khả năng tạo thêm nhiều tính năng mới cho khung kiểm thử tự động  
Những yêu cầu như ở Bảng 3 có thể phân chia ra nhiều yêu cầu chi tiết hơn như sau:  
2.1.1. Thực thi kiểm thử mà không cần phải giám sát  
Khung kiểm thử (Framework) phải có thể bắt đầu thực thi kiểm thử sau khi được nhấn vào  
một nút (Button), điều này có nghĩa rằng khung phải có thể cài đặt môi trường kiêm thử cũng như  
phải kiểm tra được tất cả các điều kiện đó đã được thỏa mãn.  
2.1.2.Bắt đầu và dừng thực thi kiểm thử  
Khung kiểm thử tự động phải có khả năng bắt đầu thực thi kiểm thử một cách thủ công. Tốt  
hơn nữa nếu có thể tự động thực thi kiểm thử tại một thời gian xác định hay sau một sự kiện nào đó  
(ví dụ: Có phiên bản mới của hệ thống cần kiểm thử). Cách dễ nhất để bắt đầu thực thi kiểm thử đó  
9
 
là từ câu lệnh được viết thủ công sử dụng các tính năng của hệ điều hành cho việc tạo lịch. Bắt đầu  
kiểm thử sau khi có một sự kiện nào đó xuất hiện có thể được thực hiện tương tự như việc sử dụng  
một công cụ bên ngoài (External tools).  
2.1.3.Kiểm soát lỗi  
2.1.4.Thẩm định kết quả kiểm thử  
2.1.5.Gán trạng thái kiểm thử  
Sau khi kiểm thử được thực thi và kết quả của nó được xác minh thì cần gán trạng thái cho  
kết quả cuối cùng. Nếu như trong quá trình thực thi kiểm thử, không xuất hiện lỗi gì và tất cả các  
phép so sánh giữa kết quả thực tế và kết quả mong muốn hoàn toàn khớp với nhau thì bài kiểm thử  
(Test case) có trạng thái là đạt yêu cầu (Pass), nghĩa là nội dung cần kiểm thử đã hoạt động đúng  
như yêu cầu. Nếu ở trong các trường hợp khác thì trạng thái kiểm thử là thất bại (Failed), nghĩa là  
nội dung cần kiểm thử đã không thỏa mãn yêu cầu của bài kiểm thử.  
2.1.6. Xử lý các lỗi như mong muốn  
2.1.7.Ghi lại thông tin chi tiết  
2.1.8.Báo cáo tự động  
2.2. Kiểm thử hướng dữ liệu (Data-driven testing)  
2.2.1.Giới thiệu  
Những mã nguồn kiểm thử đơn giản thường có dữ liệu được nhúng sẵn ở trong, dẫn đến vấn  
đề là khi cần thay đổi dữ liệu kiểm thử, mã nguồn cũng cần thay đổi theo.  
Điều này có thể không phải là vấn đề lớn khi người cần thay đổi mã nguồn chính là người mà  
đã viết nên mã nguồn này ngay từ ban đầu, nhưng sẽ là vấn đề lớn đối với những người khác và  
không có kinh nghiệm lập trình. Việc nhúng dữ liệu kiểm thử trong mã nguồn kiểm thử cũng có  
thêm một vấn đề khác nữa đó là khi muốn tạo thêm bài kiểm thử với các bước tương tự nhưng có  
sự thay đổi về dữ liệu kiểm thử thì luôn luôn yêu cầu phải lập trình. Nhiệm vụ này có thể rất dễ  
dàng – sao chép dữ liệu ban đầu và sửa phần dữ liệu kiểm thử – nhưng yêu cầu ít nhất phải có kiến  
thức lập trình. Việc tái sử dụng như thế này sẽ dẫn đến việc nếu phần mềm bị thay đổi thì toàn bộ  
mã nguồn phải viết lại. Error! Reference source not found.  
Bởi những vấn đề này mà việc nhúng dữ liệu kiểm thử vào trong mã nguồn kiểm thử không  
phải là giải pháp phù hợp khi xây dựng một khung kiểm thử tự động. Cách tiếp cận tốt hơn đó là  
đọc dữ liệu kiểm thử từ một nguồn dữ liệu bên ngoài và thực hiện các bài kiểm thử dựa trên nó.  
Cách tiếp cận này được gọi là kiểm thử hướng dữ liệu.  
2.2.2.Sửa đổi và lưu trữ dữ liệu  
2.2.3.Xử lý dữ liệu kiểm thử  
10  
Việc cài đặt một đoạn mã để thực hiện phân tích dữ liệu hướng kiểm thử có thể dễ dàng đến  
mức ngạc nhiên với ngôn ngữ kịch bản hiện đại.  
2.2.4.Hứa hẹn và vấn đề của kiểm thử hướng dữ liệu  
2.3. Kiểm thử hướng từ khóa (Keyword-driven testing)  
2.3.1.Giới thiệu  
Phần giới thiệu về kiểm thử hướng dữ liệu (data-driven testing) đã cho thấy đây là một  
hướng tiếp cận có nhiều hứa hẹn, nhưng đồng thời cũng cho thấy giới hạn lớn nhất của nó đó là tất  
cả các bài kiểm thử là tương đương nhau và việc tạo ra các bài kiểm thử hoàn toàn mới thì yêu cầu  
phải có nỗ lực lập trình. Một giải pháp cho giới hạn này, được đưa ra bởi Fewster và Graham và  
Kaner đó là tiếp cận hướng từ khóa mà trong đó không chỉ có dữ liệu kiểm thử mà cả những chỉ  
đạo về việc làm gì với dữ liệu kiểm thử cũng được tách ra khỏi mã nguồn và đưa ra các tệp tin bên  
ngoài. Những chỉ đạo này được gọi là từ khóa (Keywords) và các kĩ sư kiểm thử có thể sử dụng  
chúng để xây dựng nên bài kiểm thử một cách dễ dàng. Error! Reference source not found.  
Ý tưởng đơn giản cũng giống như trong kiểm thử hướng dữ liệu đó là đọc dữ liệu kiểm thử từ  
một tệp tin bên ngoài và chạy các kiểm thử dựa trên đó. Như Fewster và Graham, kiểm thử  
hướng từ khóa chính là mở rộng của kiểm thử hướng dữ liệu. Error! Reference source not  
found.Error! Reference source not found.2.3.2.Sửa đổi và lưu trữ dữ liệu kiểm thử  
2.3.3. Xử lý dữ liệu kiểm thử  
2.3.4.Từ khóa ở các mức khác nhau  
Một trong những quyết định quan trọng cần thực hiện khi thiết kế từ khóa đó là mức của từ  
khóa có thể sử dụng.Trong Error! Reference source not found., từ khóa được sử dụng ở mức khá  
thấp (như là Input, Push), làm cho chúng trở nên phù hợp với kiểm thử mức chi tiết ở mức giao  
diện. Khi kiểm thử chức năng ở mức cao hơn, như là mức logic nghiệp vụ (Business logic), từ  
khóa mức thấp thường khiến cho các bài kiểm thử rất dài và các từ khóa ở mức cao là có khả năng  
sử dụng hơn. Đôi khi có thể sử dụng từ khóa vừa mức thấp, vừa mức cao cùng nhau. Hình 2 cũng  
cho thấy từ khóa mức cao làm cho các bài kiểm thử trở nên ngắn hơn.  
11  
Hình 2: Sử dụng các từ khóa ở mức cao  
2.3.5.Những khó khăn và hứa hẹn  
2.4.Phương pháp tích hợp kiểm thử hướng dữ liệu và từ khóa  
Hình 3: Tích hợp kiểm thử hướng dữ liệu và từ khóa  
12  
 
CHƯƠNG 3. THỬ NGHIỆM KIỂM THỬ HƯỚNG DỮ LIỆU VÀ TỪ KHÓA  
3.1. Mô tả đối tượng kiểm thử  
3.1.1.Phần mềm Ads Editor  
Ads Editor là một ứng dụng quản lý các chiến dịch quảng cáo trực tuyến (Ads advertising  
campaigns), hoạt động trên nền Window, cho phép người dùng tải dữ liệu, sửa đổi và đẩy dữ liệu  
từ máy tính lên server của Google Adword.  
Qui trình cơ bản để sử dụng công cụ Ads Editor như sau: Tải một hoặc nhiều tài khoản, thực  
hiện thay đổi ở trên máy tính cá nhân rồi đẩy dữ liệu lên máy chủ Google Adword.  
3.1.2.Chức năng “Post Changes” và “Get Changes” dữ liệu  
3.1.3.Các vấn đề cần khắc phục khi kiểm thử chức năng “Post changes” và “Get changes” dữ  
liệu  
3.2.Yêu cầu tự động hóa kiểm thử  
Từ các vấn đề như trên, cần phải xây dựng một hệ thống giúp cho kiểm thử viên thực hiện  
kiểm thử tự động “post change/ get changes” dữ liệu. Gọi hệ thống này là “Hệ thống kiểm thử tự  
động” (HTKTTĐ). Dưới đây là các yêu cầu mà HTKTTĐ phải đáp ứng:  
- Đọc dữ liệu kiểm thử từ một tệp tin excel: Tệp tin này bao gồm các dữ liệu chỉnh sửa của  
“campaign, ad group, text ad, keyword” theo từng bài kiểm thử  
- Thực hiện “Post change” tự động cho ứng dụng thứ nhất. Error! Reference source not  
found. dưới đây minh họa việc thêm mới dữ liệu ở trên ứng dụng Ads Editor và sau đó đẩy ứng  
dụng lên trên máy chủ.  
- Thực hiện “Get changes” tự động và so sánh dữ liệu “Get changes” ở ứng dụng 2 với dữ  
liệu đã “Post changes” ở ứng dụng thứ nhất. Xuất kết quả ra tệp tin log để kiểm thử viên có thể  
kiểm tra được kết quả của bài kiểm thử.  
3.3.Môi trường thử nghiệm  
Để ứng dụng giải pháp kiểm thử tự động sử dụng cả kiểm thử tự động hướng dữ liệu và kiểm  
thử hướng từ khóa, kiến trúc kiểm thử ứng dụng Ads Editor được thể hiện như ở dưới đây:  
13  
Hình 4: Môi trường kiểm thử tự động ứng dụng Ads Editor  
3.3.1.Khung kiểm thử tự động Robot framework  
Cài đꢀt Robot Framework  
Thư viện của Robot framework  
3.3.2.Ranorex  
Hình 5: Kiến trúc bậc cao thể hiện giao tiếp của Robot framework và Ads Editor  
Trước khi thực thi kiểm thử tự động bằng Robot framework, cần có thao tác khởi động thư  
viện từ xa.  
3.4.Thiết kế kiểm thử hướng dữ liệu và từ khóa  
14  
3.4.1.Thiết kế bài kiểm thử  
Các bước trong bài kiểm thử mà kiểm thử viên chuẩn bị như ở Bảng 3.  
Bảng 3: Bài kiểm thử “Post changes added new ad group sucessfully”  
Điều kiện tiền đề  
- Have download  
campaign C  
Các bước thực hiện kiểm thử  
Application 1:  
Kết quả mong muốn  
Application 1:  
1. Select campaign C  
2. Click on tab [Ad group]  
3. Click on button [Add new]  
4. Edit data as in file data test  
- For example: Name = A, max cpc  
=1  
3. New ad group is  
generated.  
4. Data is edited as in file  
data test  
5. Post changes  
Application 2:  
Application 2:  
1. Can get changes data with  
number get changes as  
number data post changes  
2. Data get changes and data  
post changes must be map  
1. Get changes data of campaign C  
2. Compare data get changes on  
application 2 with data post change  
on application one  
3.4.2.Thiết kế kiểm thử hướng dữ liệu  
Dữ liệu kiểm thử cho bài kiểm thử “Post changes added new ad group sucessfully” sẽ được  
tạo ra từ tệp tin excel, tại Sheet 1: “Add new ad group”.  
Mỗi lần thực thi kiểm thử cho bài kiểm thử trên, dữ liệu kiểm thử sẽ được đọc lên từ tệp tin  
excel, mỗi lần truyền vào một dòng dữ liệu, sau khi kết thúc kiểm thử cho dữ liệu này sẽ lặp lại với  
các dữ liệu khác.  
3.4.3.Thiết kế các từ khóa cho bài kiểm thử  
3.4.3.1.Thiết kế từ khóa mức cao  
Bảng 4: Các từ khóa xây dựng cho các bước thực hiện bài kiểm thử  
#
1
2
3
Tên keyword  
Miêu tả  
Thực hiện tải dữ liệu kiểm thử từ file excel  
Lựa chọn cửa sổ Campaign  
Load Data From Excel File  
Select Campaigns Tabpage  
Select campaign C  
Lựa chọn campaign  
15  
 
#
4
5
Tên keyword  
Miêu tả  
Lựa chọn cửa sổ Ad groups  
Select Ad Groups Tabpage  
Add new ad group A of campaign  
C
Thêm mới dữ liệu  
6
Count changes of campaign C that  
will be posted  
Đếm các thay đổi của campaign C được đẩy lên máy  
chủ (để sau đó so sánh với số lượng dữ liệu được tải  
về)  
7
6
Post change data of campaign C  
Get changes  
Đẩy dữ liệu lên máy chủ  
Thực hiện tải các dữ liệu thay đổi từ máy chủ về ứng  
dụng  
7
8
9
Select campaign tabpage  
Select campaign C  
Mở tab Campaign  
Lựa chọn campaign tương ứng có thay đổi dữ liệu  
Mở tab Ad group của campaign có thay đổi dữ liệu  
Thực hiện so sánh dữ liệu cho từng ad group  
Select ad group tab page  
10 Verify Data In Grid View  
3.4.3.2.Thiết kế từ khóa mức thấp  
Danh sách các từ khóa nghiệp vụ được thể hiện ở Bảng 12.  
#
1
2
3
Tên keyword  
Add account  
Miêu tả  
Lựa chọn đăng nhập tài khoản khác  
Fill In Email Address And Password Điền thông tin của email và mật khẩu  
Click OK on Select Campange  
Chọn nút (button) OK khi lựa chọn  
Campaign  
4
5
Wait  
For  
All  
Campaigns Kiểm tra campaign đã được tải về chưa  
Downloaded  
Click Close Button At Download Đóng màn hình sau khi đã tải dữ liệu xong  
Campaigns Screen  
6
Select Campaigns Tabpagec  
Search In Textfield Search  
Chuyển sang tab campaign  
7
Tìm kiếm trên trường văn bản (text field)  
8
Search In Data Grid View And Click Tìm kiếm trên bảng dữ liệu và lựa chọn  
Select Ad Groups Tabpage Lựa chọn cửa sổ Ad groups  
Open Edit Selected Ad Groups If Mở cửa sổ sửa ad group nếu cửa sổ này đang  
Closed đóng  
9
10  
16  
#
Tên keyword  
Miêu tả  
11  
Select All Unposted Local Changes  
Lựa chọn tất cả các thay đổi ở máy mà chưa  
được đẩy lên máy chủ  
12  
Wait For All Post Changed Has Đợi cho đến khi tất cả các thay đổi đã được  
Been Completed  
đẩy lên máy chủ  
13  
14  
Quit Ads Editor  
Đóng ứng dụng  
Verify and Expand Edit Selected Ad Kiểm tra xem cửa sổ sửa dữ liệu của Ad  
Groups  
group có mở không  
15  
16  
Expand Edit Selected Ad Groups  
Verify and Click Colapse Message  
Mở rộng cửa sổ sửa dữ liệu của Ad group  
Kiểm tra xem có đang hiển thị các cửa sổ  
thông báo lỗi, cảnh cáo  
17  
18  
19  
20  
Click collapse message  
Select all items  
Thu nhỏ cửa sổ thông báo lỗi, cảnh cáo  
Lựa chọn tất cả các dữ liệu thay đổi  
Hủy tất cả các thay đổi  
Click revert selected changes  
Click result table  
Click vào kết quả hiển thị trên lưới dữ liệu  
(data gridview)  
Bảng 5: Danh sách các từ khóa nghiệp vụ  
Bên cạnh các từ khóa nghiệp vụ, các từ khóa có thể tái sử dụng khi viết bài kiểm thử khác  
thể hiện ở Bảng 13.  
Bảng 6: Danh sách những từ khóa dùng chung  
Miêu tả  
#
Tên keyword  
Start Ad Editor  
1
2
3
4
5
6
Khởi động Ad Editor  
Đăng nhập  
Sign in Ads Editor  
Select campaign C  
Lựa chọn dữ liệu cần sửa  
Lựa chọn dữ liệu cần sửa  
Sửa dữ liệu  
Select ad group A of campaign C  
Edit data of ad group A of campaign C  
Remove data of ad group A of Xóa dữ liệu  
campaign C  
7
8
Add new ad group A of campaign C  
Count changes of campaign C that will Đếm số lượng thay đổi  
be posted  
Thêm mới dữ liệu  
9
Post change data of campaign C  
Load Data From Excel File  
Đẩy dữ liệu lên server  
10  
Tải dữ liệu từ một tệp tin excel  
17  
Miêu tả  
#
Tên keyword  
11  
Revert All Changes  
Đưa các dữ liệu có thay đổi ở ứng dụng  
về giá trị chưa có thay đổi  
12  
13  
14  
15  
Verify Data In Grid View  
Quit Ads Editor  
Kiểm tra dữ liệu ở bảng dữ liệu  
Tắt ứng dụng Ads Editor  
Wait For All Changes Posted Sucessful Đợi đến khi tất cả các thay đổi được đẩy  
lên máy chủ  
Post Change Sucessful  
Thực hiện đẩy dữ liệu thay đổi lên máy  
chủ thành công  
Ở đây sẽ miêu tả việc xây dựng một từ khóa dùng chung, hay từ khóa ở mức thấp “Add new  
ad group A of campaign C”. Mã nguồn của từ khóa này như sau:  
.Arguments  
${Ad Group Name} | ${Status} | ${Default max.CPC bid} | ${Max CPM bid} | ${CPA bid} |  
${Mobile bid adjustment}  
${Is Add Ad Group Button Exist}=  
${Time Out}  
Rn Wait For Element Exist  
${Add Ad Group Button}  
Run Keyword If ${Is Add Ad Group Button Exist}==False Fail Add ad group button is not  
exist  
Rn Click Element ${Add Ad Group Button}  
# Set name  
Rn Send Keys  
# set status  
${Ad Group Name}  
Rn Send Keys  
{Tab}  
Run Keyword If '${Status}'=='Paused' Rn Send Keys  
# Default max. CPC bid  
{Down}  
Rn Send Keys  
Rn Send Keys  
# Max. CPM bid  
Rn Send Keys  
Rn Send Keys  
Rn Send Keys  
# CPA bid  
{Tab}  
${Default max.CPC bid}  
{Tab}  
{Tab}  
${Max CPM bid}  
Rn Send Keys  
Rn Send Keys  
# Mobile bid adjustment  
Rn Send Keys  
Rn Send Keys  
Rn Send Keys  
{Tab}  
${CPA bid}  
{Tab}  
{Tab}  
${Mobile bid adjustment}  
18  
Trong đó, các biến được cài đặt ở trong phần argument là các biến tương ứng với từng  
trường dữ liệu của ad group mà sẽ được thay đổi dữ liệu thành dữ liệu trong tệp tin dữ liệu kiểm  
thử của ad group A: ${Ad Group Name} | ${Status} | ${Default max.CPC bid} | ${Max CPM bid} |  
${CPA bid} | ${Mobile bid adjustment}  
Để thực hiện các bước thêm mới ad group và truyền dữ liệu từ tệp tin kiểm thử tự động vào  
các trường tương ứng của ad group, ta kiểm tra xem nút (Button) thêm mới dữ liệu có tồn tại  
không. Nếu có thì thực hiện tiếp các bước sau, nếu không thì thông báo lỗi “Fail Add ad group  
button is not exist “.  
Sau khi kiểm tra được nút thêm mới dữ liệu vẫn tồn tại bình thường, cần lựa chọn (click) nút  
này để thực hiện thêm mới ad group.  
Rn Click Element ${Add Ad Group Button}  
Sau khi ad group mới được xuất hiện, việc còn lại cần làm đó là sửa đổi dữ liệu của ad group  
mới như dữ liệu ở trong dữ liệu kiểm thử. Lúc này con trỏ chuột đang ở trường ad group name, nên  
chỉ cần có bước truyền dữ liệu  
# Set name  
Rn Send Keys  
Sau khi truyền dữ liệu cho trường tên, cần sử dụng phím tab để di chuyển đến các trường sau  
và truyền dữ liệu:  
${Ad Group Name}  
# set status  
Rn Send Keys  
{Tab}  
Run Keyword If '${Status}'=='Paused' Rn Send Keys  
{Down}  
Tương tự như vậy với các trường khác của ad group. Như vậy ta đã tạo xong từ khóa “Add  
new ad group A of campaign C”.  
Việc tạo từ khóa bậc cao từ những từ khóa bậc thấp khá đơn giản, giống như việc ghép các  
bước lại với nhau để tạo thành một chuỗi các hành động hoàn chỉnh. Như từ khóa “Select campaign  
C” được tạo ra bởi việc ghép hai từ khóa mức thấp “Search In Textfield Search” và “Search In Data  
Grid View And Click”  
Arguments  
${Campaign Name}  
#
Search campaign in text field  
Search In Textfield Search ${Campaign Name}  
Search In Data Grid View And Click  
#
Search In Data Grid View And Click ${Campaign Name}  
3.5. Thử nghiệm và đánh giá kết quả  
19  
Trong quá trình nhập dữ liệu được chỉnh sửa rồi post changes, hệ thống cần phải xác thực dữ  
liệu đầu vào để đảm tính đúng đắn của dữ liệu. Tất cả các thao tác sẽ được xuất tới tệp tin log.  
Trong trường hợp có lỗi, kiểm thử viên có thể kiểm tra log để xác định nguyên nhân lỗi và khắc  
phục sự cố.  
Thông tin log hiển thị lỗi trả về tương ứng trong trường hợp bài kiểm thử có lỗi.  
3.5.1.Phương pháp đánh giá  
Nếu gọi thời gian thực hiện toàn bộ bài kiểm thử bằng tay là T1, thời gian thực hiện toàn bộ bài kiểm  
thử bằng Robot framework là T2. Khi đó năng suất đạt được sẽ là:  
[Năng suất] = (|T1 – T2|)/T1  
Dựa vào giá trị [Năng suất] thì có thể xác định được hiệu quả của việc sử dụng kiểm thử tự  
động với Robot framework  
Bên cạnh việc đánh giá kiểm thử tự động và kiểm thử thủ công về mặt thời gian, ta cũng thấy  
việc kiểm thử tự động và kiểm thử thủ công cho cùng kết quả kiểm thử cho các dữ liệu kiểm thử.  
3.5.2.Phân tích kết quả  
Thời gian thực hiện bài kiểm thử từ khi chuẩn bị đến khi kết thúc bài kiểm thử “Post changes  
added new ad group sucessfully” được tính như sau:  
Bảng 7: Đánh giá kết quả kiểm thử tự động  
Thao tác  
Thực hiện bằng tay (phút)  
Thực hiện tự động(phút)  
Download dữ liệu  
Thao tác khác  
5
2
5
2
1
Khởi động Robot framework,  
khởi động remote library  
Cập nhật test case  
2
9
1
2
7
Thực hiện kiểm thử  
Điền kết quả kiểm thử tới file  
kiểm thử  
Báo cáo kết quả kiểm thử  
2
Tổng thời gian  
Năng suất tăng:  
21  
18  
14.29%  
Thống kê trên thực hiện trên một máy và cho một bài kiểm thử, do việc “post changes/ get  
changes” hoàn toàn phụ thuộc vào tình trạng mạng và máy chủ của Google Adword nên kiểm thử  
tự động chỉ giúp rút ngắn thời gian trong các bước sửa dữ liệu, so sánh dữ liệu sau khi đã “get  
changes” về và tổng hợp báo cáo kết quả kiểm thử.  
20  
Tải về để xem bản đầy đủ
pdf 23 trang yennguyen 22080 Free
Bạn đang xem 20 trang mẫu của tài liệu "Tóm tắt 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:

  • pdftom_tat_luan_van_nghien_cuu_va_ung_dung_giai_phap_kiem_thu_t.pdf