Đặc biệt, với sự giúp đỡ của công cụ kiểm thử tự động, các công việc trước đây con người không thể thực hiện được như: Load test, Performance test đã được giải quyết.. Hiện nay có nhiều
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA
-
LÊ THỊ KIM CHUNG
CẢI TIẾN VÀ ỨNG DỤNG CÔNG CỤ KIỂM THỬ RANOREX TRONG CÁC DỰ ÁN PHẦN MỀM
Chuyên ngành: Khoa học máy tính
Mã số: 60.48.01.01
TÓM TẮT LUẬN VĂN THẠC SĨ KỸ THUẬT
ĐÀ NẴNG – 2017
Trang 2Công trình được hoàn thành tại TRƯỜNG ĐẠI HỌC BÁCH KHOA
Người hướng dẫn khoa học: PGS.TS Nguyễn Thanh Bình
Phản biện 2: PGS.TS Lê Mạnh Thạnh
Luận văn sẽ được bảo vệ trước Hội đồng chấm Luận văn tốt nghiệp thạc sĩ kỹ thuật họp tại Trường Đại học Bách khoa vào ngày 06 tháng 01 năm 2017
Có thể tìm hiểu luận văn tại:
Trung tâm Học liệu, Đại học Đà Nẵng tại Trường Đại học Bách khoa
Thư viện Khoa Khoa học máy tính, Trường Đại học Bách khoa - ĐHĐN
Trang 3Chi phí kiểm thử rất lớn, chiếm khoảng 40% tổng chi phí cho một
dự án phát triển phần mềm Nhiều nghiên cứu về các kĩ thuật, giải pháp và quy trình nhằm giảm chi phí và thời gian kiểm thử Trong đó, kiểm thử tự động được xem là một trong những giải pháp hiệu quả Ngoài ra, nhờ độ ổn định cao kiểm thử tự động có thể thực thi các ca kiểm thử với độ chính xác cao hơn Giải phóng con người khỏi các công việc lặp đi lặp lại nhàm chán
và không cần thiết Đặc biệt, với sự giúp đỡ của công cụ kiểm thử tự động, các công việc trước đây con người không thể thực hiện được như: Load test, Performance test đã được giải quyết
Hiện nay có nhiều công cụ được phát triển nhằm giúp cho các kĩ sư
tự động hóa quy trình kiểm thử phổ biến như: QuickTest Professional, Win Runner, Jtest, Ranorex… Trong số đó, Ranorex 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 thử tự động Nó có thể thực thi kiểm thử chức năng và phi chức năng trên môi trường Win và Web Kiểm thử mobile trên các hệ điều hành Android, iOS Cho phép người sử dụng viết mã nguồn dựa trên ngôn ngữ C# và VB.Net
Trong kiểm thử tự động, một thử thách đặt ra đối với các kiểm thử viên chính là việc quản lý phiên bản của kịch bản kiểm thử, tương ứng với phiên bản của phần mềm, cũng như quản lý, tổng hợp mã nguồn khi thực hiện làm việc nhóm Các khó khăn này được giải quyết thông qua bộ đôi
Trang 42 công cụ TortoiseGit và GitHud Bên cạnh đó, kết quả của việc kiểm thử chính là phát hiện ra các lỗi sai trong phần mềm Vậy các lỗi sai đó được quản lý như thế nào? Tất nhiên sẽ có một công cụ hữu hiệu để làm việc này, mà điển hình là Jira Ta thấy công cụ thực hiện kiểm thử tự động, công
cụ quản lý mã nguồn, công cụ quản lý lỗi, các công cụ này có mối quan hệ qua lại, thường xuyên được sử dụng Tuy nhiên nó lại là 3 công cụ riêng biệt, không có sự liên kết về quy trình, tốn nhiều thời gian nếu sử dụng riêng
Nhằm mục đích nâng cao khả năng sử dụng đối với công cụ Ranorex, tối ưu hóa quy trình tự động và về mặt thời gian, tôi đề xuất chọn
đề tài luận văn cao học:
“Cải tiến và ứng dụng công cụ kiểm thử Ranorex trong các dự án phần
Kết quả có thể làm tài liệu tham khảo cho các kiểm thử viên, các đơn vị phát triển phần mềm, hoặc các học viên – sinh viên trong việc nghiên cứu kiểm thử phần mềm tự động
Ý nghĩa thực tiễn
Tích hợp các công cụ hỗ trợ trong việc kiểm thử tự động vào công
cụ Ranorex Thiết kế bộ kịch bản kiểm thử và thực thi kiểm thử tự động cho phần mềm cụ thể
Trang 5Để đạt được những mục tiêu trên thì nhiệm vụ đặt ra của đề tài là:
- Nghiên cứu về kiểm thử tự động
- Nghiên cứu về ngôn ngữ lập trình C#
- Công cụ TortoiseGit
- Phần mềm Jira
- Cải tiến và ứng dụng công cụ Ranorex để thiết kế kịch bản kiểm thử cho phần mềm cụ thể
- Đánh giá kết quả theo yêu cầu của đề tài
- Trong khuôn khổ của luận văn thuộc loại nghiên cứu và ứng dụng, tôi chỉ giới hạn nghiên cứu các vấn đề sau:
- Kiểm thử tự động
- Công cụ TortoiseGit
- Phần mềm Jira
- Công cụ Ranorex
Trang 64 Phương pháp nghiên cứu
Phương pháp lý thuyết
Tiến hành thu thập và nghiên cứu các tài liệu có liên quan đến đề tài Nghiên cứu lý thuyết kiểm thử phần mềm nói chung và kỹ thuật kiểm thử tự động nói riêng
Cải tiến cộng cụ và cách thiết kế các kịch bản kiểm thử trong Ranorex
Phương pháp thực nghiệm
Nghiên cứu và khai thác công cụ phần mềm Ranorex
Cài đặt chương trình phần mềm cụ thể để thực hiện viết kịch bản kiểm thử Kiểm tra, thử nghiệm, nhận xét và đánh giá kết quả
5 Phương tiện, công cụ triển khai
Môi trường Microsoft Visual C#
Công cụ TortoiseGit
Phần mềm Jira
Phần mềm KeePass
Công cụ Ranorex
Luận văn được trình bày gồm những phần chính như sau:
Chương 1 Cơ sở lý thuyết
Chương này đã giới thiệu tổng quan về lỗi phần mềm, kiểm thử phần mềm, các giai đoạn kiểm thử Trong đó có nêu ra các kỹ thuật kiểm thử phần mềm, cũng như ưu và nhược điểm của từng loại kỹ thuật
Chương 2 Kiểm thử tự động và công cụ hỗ trợ
Các vấn đề về kiểm thử tự động, ưu điểm và nhược điểm của nó được giới thiệu trong chương này Cùng với đó là sự khác nhau của 2 cách tiếp cận: kiểm thử tự động dựa trên dữ liệu và kiểm thử tự động dựa trên từ
Trang 75 khóa Một phần quan trọng là giới thiệu về 2 công cụ kiểm thử tự động khá phổ biến hiện nay Một công cụ mã nguồn mở là Selenium, và một công cụ thương mại là QTP
Chương 3 Kiểm thử tự động với Ranorex và đề xuất giải pháp cải tiến
Chi tiết về công cụ kiểm thử tự động Ranorex sẽ được giới thiệu, cùng với các ưu điểm cũng như hạn chế Việc kiểm thử có nhiều công việc khác nhau, đễ hỗ trợ cho kiểm thử viên, đã có rất nhiều công cụ ra đời Chương này sẽ tìm hiểu về các công cụ hỗ trợ kiểm thử tự động và cách tích hợp chúng vào Ranorex
Kết luận và hướng phát triển
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT Chương này giới thiệu các khái niệm về lỗi phần mềm, các kĩ thuật
và giai đoạn kiểm thử phần mềm Từ đó cung cấp cái nhìn tổng quan về việc kiểm thử phần mềm
1.1 LỖI PHẦN MỀM
Định nghĩa lỗi phần mềm: Có rất nhiều định nghĩa về lỗi phần mềm
nhưng có thể hiểu và phát biểu một cách đơn giản thì "Lỗi phần mềm là sự
không khớp giữa chương trình và đặc tả của nó"
Dựa vào định nghĩa, ta có thể phân loại lỗi phần mềm thành 3 dạng:
Lỗi sai
Lỗi thiếu
Lỗi thừa
1.1.1 Các nguyên nhân gây lỗi phần mềm
Lỗi phần mềm có thể đến từ nhiều nguyên nhân khác nhau, trong
đó có cả các nguyên nhân chủ quan và các nguyên nhân khách quan: Các lỗi lập trình và lỗi do tài liệu yêu cầu
Ngoài 2 nguyên nhân trên còn có các nguyên nhân khác:
Trang 86 Các lỗi trong giao tiếp giữa khách hàng và nhà phát triển
Sai lệch có chủ ý với các yêu cầu phần mềm
Không tuân thủ theo các tài liệu hướng dẫn và tiêu chuẩn lập trình
Thiếu sót trong quá trình kiểm thử
1.2 CHI PHÍ SỬA LỖI
1.1.2 Qui trình xử lý lỗi phần mềm
Bảng 1.1 Giải thích trạng thái lỗi
Mới Lỗi mới tạo, chưa được lưu
Mở Lỗi mới tạo, sau khi được lưu
Đã chỉ định Lỗi đã được gán cho nhân viên phát triển
Đã sửa Lỗi đã được sửa xong bởi nhân viên phát triển
Không chấp
nhận
Lỗi sau khi tạo, được xác định là không phải lỗi
Hoãn lại Lỗi không thuộc phạm vi của dự án, hoặc sẽ được xử lý
trong một giai đoạn khác của dự án
Mở lại Lỗi được xử lý, nhưng sau khi kiểm tra lại thì vẫn chưa
đúng
Đã xác nhận Lỗi đã được sửa, và kiểm tra lại đúng
Đóng Trạng thái đóng Lỗi đã được sửa và kiểm tra lại thành
công
1.3 KIỂM THỬ PHẦN MỀM
1.1.3 Khái niệm
Kiểm thử phần mềm là quá trình thực thi một hệ thống phần mềm
để xác định xem phần mềm có đúng với đặc tả không và thực hiện trong môi trường như mong đợi hay không Mục đích của kiểm thử phần mềm là
Trang 97 tìm ra lỗi chưa được phát hiện, tìm một cách sớm nhất và bảo đảm rằng lỗi
sẽ được sửa
1.1.4 Kỹ thuật kiểm thử phần mềm
Mục tiêu của kiểm thử là phải thiết kế các ca kiểm thử có khả năng cao nhất trong việc phát hiện nhiều lỗi với thời gian và công sức tối thiểu
Có thể chia các kỹ thuật kiểm thử thành hai loại:
Kỹ thuật kiểm thử hộp đen
Kỹ thuật kiểm thử hộp trắng
1.1.5 Các giai đoạn kiểm thử phần mềm
Khi kiểm thử một sản phẩm phần mềm, chúng ta không chỉ kiểm thử một lần, khi mà nó đã được hoàn thành Các thành phần của phần mềm đều phải được kiểm thử trước, sau đó trong suốt quá trình tích hợp các thành phần cũng phải được kiểm thử cho đến khi đạt được sản phẩm cuối cùng [12]
Theo quá trình phát triển của phần mềm sẽ có 4 giai đoạn kiểm thử: + Kiểm thử đơn vị
Trang 108 CHƯƠNG 2: KIỂM THỬ TỰ ĐỘNG VÀ CÁC CÔNG CỤ KIỂM
THỬ TỰ ĐỘNG 2.1 KHÁI QUÁT VỀ KIỂM THỬ TỰ ĐỘNG
Tự động thực thi kiểm thử Mức 1: Bắt
đầu
Tự động quản lí thông tin
Ưu điểm của kiểm thử tự động
Các vấn đề khó khăn của kiểm thử tự động
2.1.2 So sánh kiểm thử thủ công và kiểm thử tự động
Bảng 2.2 So sánh kiểm thử thủ công và kiểm thử tự động
Trang 119 Kiểm thử thủ công Kiểm thử tự động
Kiểm thử thủ công là không
chính xác tại mọi thời điểm vì
do lỗi khách quan của con
người, do đó nó
ít đáng tin cậy
Kiểm thử tự động là đáng tin cậy hơn, vì
nó được thực hiện bởi các công cụ hoặc các kịch bản
Kiểm thử thủ công tốn thời gian Kiểm thử tự động được thực hiện bởi các
công cụ phần mềm, vì vậy nó nhanh hơn rất nhiều so với kiểm thử thủ
công Chủ yếu đầu tư vào nguồn nhân
Kiểm thử thủ công cho phép con
người quan sát, có thể hữu ích
hơn nếu mục tiêu kiểm thử là
đáp ứng sự thân thiện với người
hoặc cải thiện
trải nghiệm của khách hàng
Kiểm thử tự động không đòi hỏi sự quan sát của con người và không thể đảm bảo phân biệt được thân thiện với người hoặc trải nghiệm khách hàng
2.2 CÁC LOẠI KIỂM THỬ TỰ ĐỘNG
2.2.1 Kiểm thử tự động dựa trên dữ liệu (data-driven)
Một kịch bản kiểm thử đơn giản sẽ có dữ liệu thử được nhúng vào trong đó
Ưu điểm và nhược điểm
Trang 1210 Lợi ích chính của kiểm thử kiểm thử tự động dựa trên dữ liệu đó là tạo và chạy nhiều bộ dữ liệu rất dễ dàng Chỉnh sửa, thêm mới dữ liệu dễ dàng và không yêu cầu kĩ năng lập trình
Hạn chế lớn nhất của hướng tiếp cận kiểm thử tự động dựa trên dữ liệu đó là tất cả các ca kiểm thử phải tương tự nhau,
2.2.2 Kiểm thử tự động dựa trên từ khóa
Ta thấy đối với hướng tiếp cận kiểm thử tự động dựa trên dữ liệu có nhiều điểm còn hạn chế Một cách giải quyết cho các hạn chế này đó là hướng tiếp cận kiểm thử tự động dựa trên từ khóa Từ khóa được xác định cho mỗi hành động trong ca kiểm thử
Một khi từ khóa được đặt, một người không cần kiến thức về lập trình cũng
dễ dàng thiết kế và chỉnh sửa kịch bản kiểm thử [16]
Ưu điểm và nhược điểm
Kiểm thử tự động dựa trên từ khóa là một cách tuyệt vời để tạo các
ca kiểm thử linh hoạt Nó cho phép các nhóm kiểm thử viên có các nền tảng kĩ thuật khác nhau có thể làm việc cùng nhau, trong khi vẫn hiểu rõ cấu trúc và dễ bảo trì
Một vấn đề với phương pháp tiếp cận theo từ khóa đó là kịch bản kiểm thử có xu hướng dài hơn và phức tạp hơn so với phương pháp kiểm thử tự động theo dữ liệu
2.3 CÁC CÔNG CỤ KIỂM THỬ TỰ ĐỘNG
2.3.1 Selenium
Bên cạnh mã nguồn mở, Selenium hỗ trợ một loạt các ngôn ngữ bao gồm Java, Python, PHP, C#, Ruby, thậm chí cả Java Script thuần túy Selenium là công cụ mã nguồn mở mạnh mẽ nhất có sẵn và nó dựa trên Java script trong một giới hạn lớn Nó phù hợp hơn cho phương pháp agile của việc phát triển và kiểm thử
Trang 1311 Tính năng ghi lại của Selenium được thực hiện như là một phần thêm vào trình duyệt FireFox, và cho phép ghi lại, chỉnh sửa và gỡ rối các kịch bản kiểm thử
2.3.2 HP Quick Test Pro (QTP) hoặc HPE Unified Functional Testing (UFT)
Đây là một công cụ dễ sử dụng và vô cùng thân thiện, hoạt động tốt với các ứng dụng dựa trên web và window Nó là một công cụ kiểm thử chức năng có tính năng lưu trữ ảnh chụp màn hình của mỗi trang trong suốt quá trình thực hiện Vì vậy người dùng có thể tham khảo các ảnh chụp màn hình của lần thực thi trước nếu muốn tham khảo
Bảng 2.3 So sánh công cụ QTP, Selenium và Ranorex
Selenium QTP Ranorex Cài đặt và cấu hình
Dễ dàng cài đặt cho người không
Trang 1412 Xác định đối tượng
Bảng hành động cho việc chỉnh sửa
các bước sau khi
Khả năng bảo trì
Dễ dàng thực thi cho mọi người
Dễ dàng thực thi với việc chạy tệp
Thông qua chương này, các vấn đề cơ bản liên quan đến kiểm thử
tự động, ưu điểm và nhược điểm của nó đã được làm rõ Bên cạnh đó đã giới thiệu về 2 công cụ kiểm thử tự động khá phổ biến hiện nay Một công
Trang 1513
cụ mã nguồn mở là Selenium, và một công cụ thương mại là QTP Phần tiếp theo của luận văn sẽ giới thiệu cụ thể hơn về một công cụ tích hợp ưu điểm của cả 2 phần mềm trên, đó chính là Ranorex
CHƯƠNG 3: KIỂM THỬ TỰ ĐỘNG VỚI RANOREX VÀ ĐỀ XUẤT
GIẢI PHÁP CẢI TIẾN 3.1 CÔNG CỤ KIỂM THỬ RANOREX
3.1.1 Đặc điểm Ranorex
3.1.2 Giới thiệu Ranorex
3.1.3 Ưu và nhược điểm của Ranorex
Ưu điểm
Rất nhẹ, cài đặt đơn giản
Có thể thực hiện kiểm thử trên cả Desktop, Web, Mobile, Android, iOS, và nhiều trình duyệt khác nhau Có thể chạy được cả trên máy ảo
Tính năng mạnh mẽ của Ranorex là đa nền tảng thử nghiệm Sau khi các trường hợp thử nghiệm được viết, chúng có thể được thực hiện trên các thiết bị di động khác nhau như Android và iPhone
Được hỗ trợ mạnh bởi đội ngũ nhân viên giàu kinh nghiệm của Ranorex
Cung cấp môi trường lập trình với ngôn ngữ phổ biến như C#, VB.Net
Hạn chế
Khó khăn khi làm việc nhóm, quản lí phiên bản
Tạo lỗi hoặc chuyển trạng thái của lỗi
3.2 ĐỀ XUẤT GIẢI PHÁP CẢI TIẾN
3.2.1 Đề xuất giải pháp
Những vấn đề hạn chế của Ranorex như đã phân tích ở trên dẫn đến công việc kiểm thử tự động vẫn còn vài bước yêu cầu kiểm thử viên
Trang 1614 phải làm thủ công, có thể tốn thời gian hoặc sai sót Chúng ta có thể cải tiến những hạn chế đó bằng cách giải quyết các vấn đề sau:
Tích hợp với một công cụ quản lí mã nguồn, cấu hình, và cho phép làm việc nhóm Các công cụ như trên thường hỗ trợ
o Lưu trữ thông tin về phiên bản phần mềm, thông tin kiểm thử
o Lưu vết quan hệ giữa phiên bản phần mềm và thông tin kiểm thử
o Quản lý truy cập, cập nhật
Tích hợp với công cụ quản lý lỗi, hỗ trợ báo cáo lỗi từ khi xác định lỗi, phân tích lỗi, sửa lỗi, kiểm thử lại cho đến khi kết thúc lỗi Công cụ quản lí lỗi ghi nhận lịch sử của lỗi Các công cụ này thường có các chức năng:
o Lưu trữ tính chất của lỗi và các thông tin đi kèm với lỗi
o Trạng thái của lỗi
o Báo cáo độ đo về lỗi
Ta thấy việc thao tác trên các công cụ quản lý lỗi, quản lý phiên bản hay quản lý lỗi xảy ra rất thường xuyên Dựa vào đây luận văn đề xuất hướng tích hợp các công cụ hỗ trợ vào Ranorex nhằm tối đa hóa quy trình kiểm thử tự động
3.2.2 Giới thiệu các công cụ hỗ trợ
3.2.2.2 Jira
Trang 1715 Các tính năng chính:
o Quản lý, theo dõi tiến độ của dự án
o Quản lý lỗi, tính năng, công việc, những cải tiến hoặc bất kỳ vấn
đề gì
o Tìm kiếm nhanh chóng với bộ lọc JIRA Query Language
o Xây dựng quy trình làm việc tương thích với yêu cầu của từng dự
án
o Cung cấp nhiều loại báo cáo thống kê với rất nhiều loại biểu đồ khác nhau phù hợp với nhiều loại hình dự án, nhiều đối tượng người dùng
o Dễ dàng tích hợp với các hệ thống khác
o Cài đặt dễ dàng, có thể chạy trên hầu hết các nền tảng phần cứng,
hệ điều hành và cơ sở dữ liệu
3.3 CHI TIẾT GIẢI PHÁP CẢI TIẾN
3.3.1 Xây dựng qui trình tổng thể tích hợp TortoiseGit và Jira vào Ranorex
3.3.1.1 Tích hợp TortoiseGit vào Ranorex
3.3.1.2 Tích hợp Jira vào Ranorex
Bảng 3.3 Các đoạn mã tiêu chuẩn
InitializeDefaultConfiguration
Thiết lập kết nối đến máy chủ jira Đoạn mã này là bắt buộc đối với các đoạn mã phía sau
AutoCreateNewIssueIfTestCaseFails
Nếu kết quả thực thi là Sai,đoạn mã này sẽ tạo một “Issue” trên jira Đồng thời, tệp báo cáo sau khi thực thi ở Ranorex cũng được tự động nén
và đính kèm vào “Issue” đó