Đặt vấn đề 1. Sự cần thiết của đề tài Trong vài thập kỉ qua, ngành công nghiệp phần mềm đã có những bƣớc phát triển lớn cả về quy mô và chất lƣợng, đóng vai trò quan trọng vào sự phát triển của hầu hết mọi mặt của các nƣớc. 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. Các ứng dụng của phần mềm trong cuộc sống rất đa dạng 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, v.
Điều này đòi hỏi chất lƣợng phần mềm ngày càng phải đƣợc nâng cao để đáp ứng nhu cầu của ngƣời sử dụng. Tuy nhiên, quá trình tạo ra một sản phẩm phần mềm có thể sử dụng tốt không thể tránh khỏi những lỗi phần mềm. Chúng ta dù cố gắng đến mức nào thì thực tế là ngay cả những lập trình viên xuất sắc nhất cũng không thể lúc nào cũng viết đƣợc những đoạn mã không có lỗi. Tính trung bình, ngay cả một lập trình viên loại tốt thì cũng có từ một đến ba lỗi trên một trăm dòng lệnh Ngƣời ta ƣớc lƣợng rằng việc kiểm tra để tìm ra các lỗi này chiếm phân nửa khối lƣợng công việc phải làm để có một phần mềm hoạt động đƣợc [3].
Do vậy, kiểm thử phần mềm là khâu rất quan trọng 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. Chi phí kiểm thử phần mềm thƣờng chiếm tới bốn mƣơi phần trăm tổng chi phí cho một dự án phát triển phần mềm Đối với các phần mềm lớn, chi phí này còn 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, điều này là không thể tránh khỏi đối với mọi phần mềm. Một sản phẩm tuy đƣợc thiết kế tốt nhƣng cũng không thể tránh khỏi các sai sót.
Kiểm thử hiệu quả sẽ phát hiện ra đƣợc các sai sót này, tránh các lỗi z 2 trƣớc khi phát hành sản phẩm. Kiểm thử đứng dƣới vai trò của ngƣời sử dụng, sẽ giúp cho sản phẩm có sự thích ứng phù hợp hơn với thị hiếu và nhu cầu ngày càng cao của ngƣời dùng. Trên thị trƣờng hiện nay có rất nhiều công cụ kiểm thử tự động đƣợc sử dụng nhƣ Ranorex, QTP, Selenium, v. Đề tài này tìm hiểu về các công cụ hỗ trợ kiểm thử tƣơng tác giao diện cho các ứng dụng và đi sâu nghiên cứu công cụ Ranorex vì nó có rất nhiều ƣu điểm nhƣ hỗ trợ đa nền tảng, hỗ trợ nhiều ứng dụng trên Web, Desktop, Mobile.
Ranorex có khả năng xác định chính xác các đối tƣợng có trong UI hiện nay Hơn nữa, công cụ này hỗ trợ cơ chế “ghi và chạy lại” kịch bản tƣơng tác UI rất mạnh mẽ. Công cụ này cũng cho phép kiểm thử viên tùy chỉnh kịch bản tƣơng tác UI bằng cách thêm trực tiếp các đoạn mã nhằm tăng tính linh hoạt trong kiểm thử tự động. Giao diện đồ họa ngƣời dùng (Graphical user interface – GUI) là những gì ngƣời dùng nhìn thấy. Nếu bạn truy cập vào một trang Web, những gì bạn thấy trên trang chủ đƣợc gọi là giao diện đồ họa ngƣời dùng của trang Web Ngƣời dùng sẽ không nhìn thấy mã nguồn, giao diện ngƣời dùng chỉ tập trung vào cấu trúc thiết kế, hình ảnh hiển thị ra ngoài có đúng nhƣ lập trình mong đợi hay không [11].
Nếu chúng ta phải làm thử nghiệm GUI, việc đầu tiên cần xác định xem những hình ảnh của trang Web sẽ hiện lên giống nhau trên các trình duyệt khác nhau. Ngoài ra, kiểm thử GUI còn xác nhận các liên kết hoặc các nút hoạt động tốt hay không, nếu ngƣời d ng thay đổi kích thƣớc màn hình thì hình ảnh và nội dung không đƣợc co lại hoặc cắt đi hay chồng chéo lên nhau [11]. Để đạt đƣợc mục tiêu này, luận văn cũng sẽ nghiên cứu về kiểm thử giao diện tự động và các kiến thức liên quan. Cuối cùng luận văn sẽ áp dụng trực tiếp kiểm thử tự động giao diện sử dụng công cụ Ranorex vào để kiểm thử phần mềm bảo mật password Keepass nhằm phát hiện một số lỗi tƣơng tác giao diện cho ứng dụng này.
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, kiểm thử tự động, kiểm thử giao diện 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 z 3 kiểm thử phần mềm. Luận văn giới thiệu về một số công cụ hỗ trợ kiểm thử giao diện tự động trong đó sẽ đi tìm hiểu sâu về công cụ Ranorex. Luận văn sẽ mô tả từng bƣớc quá trình áp dụng kiểm thử giao diện tự động với công cụ Ranorex từ đó giúp phần mềm giảm bớt chi phí kiểm thử cũng nhƣ tiết kiệm đƣợc thời gian và nhân lực kiểm thử của các kiểm thử viên. Việc phát hiện các lỗi tƣơng tác giao diện sẽ góp phần nâng cao chất lƣợng sản phẩm nói chung và tăng khả năng chấp nhận và sự hài lòng của ngƣời d ng đối với sản phẩm.
Cấu trúc của luận văn Phần còn lại của luận văn đƣợc cấu trúc nhƣ sau Chƣơng 2 giới thiệu tổng quan về kiểm thử, kiểm thử giao diện ngƣời dùng và các khái niệm cơ bản đƣợc sử dụng trong nghiên cứu của luận văn Chƣơng này chủ yếu giới thiệu về kiểm thử, kiểm thử tự động và kiểm thử giao diện tự động, một số phƣơng pháp hỗ trợ kiểm thử giao diện ngƣời dùng. Tiếp đến, kiểm thử giao diện ngƣời dùng sử dụng Ranorex sẽ đƣợc mô tả trong Chƣơng 3. Trong chƣơng này sẽ giới thiệu chi tiết về công cụ kiểm thử giao diện tự động Ranorex Cơ chế hoạt động sinh kịch bản, chạy kịch bản và xuất ra kết quả của công cụ, giới thiệu cả những tính năng ứng dụng nổi bật của công cụ. Từ đó, luận văn sẽ tổng kết những tính năng nổi bật khi sử dụng công cụ Ranoex trong những dự án lớn.
Chƣơng 4 là việc ứng dụng và thực nghiệm. Công cụ kiểm thử giao diện tự động sẽ đƣợc đƣa vào ứng dụng thực tế trong chƣơng trình phần mềm bảo mật password Keepass nhằm minh chứng cho khả năng vận dụng các kiến thức tìm hiểu đƣợc của học viên. Cuối cùng, tổng kết những kết quả đạt đƣợc của luận văn và hƣớng nghiên cứu tiếp theo sẽ đƣợc trình bày trong Chƣơng 5 z 4 Chƣơng 2: Tổng quan về kiểm thử giao diện ngƣời dùng tự động Hiện nay, phần mềm đƣợc sử dụng rất rộng rãi trong rất nhiều lĩnh vực nhƣ khoa học, kinh tế và xã hội. Vì vậy, việc đảm bảo rằng phần mềm đáp ứng đƣợc các mong muốn của ngƣời sử dụng là rất quan trọng.
Kiểm thử phần mềm lúc này trở thành một trong những hoạt động cơ bản và cần thiết nhằm đảm bảo chất lƣợng phần mềm. Kiểm thử phần mềm Kiểm thử phần mềm có nhiều cách định nghĩa khác nhau, tuy nhiên chúng cùng bao trùm hai nội dung cơ bản là phát hiện lỗi và đánh giá chất lƣợng của phần mềm Định nghĩa của Glenford J. Myers: “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 ra lỗi” [4] đƣợc xem là đơn giản và đƣợc sử dụng nhiều nhất. Mục đích của kiểm thử là phát hiện lỗi vì thực tế phần mềm nào cũng có lỗi.
Theo Myers, kiểm thử mà không phát hiện đƣợc lỗi đƣợc coi là không thành công [5]. Lỗi phần mềm cần tìm ra sớm vì nếu để 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 trƣớc khi sản phẩm đƣợc đến tay ngƣời dùng. Hiện nay, các công cụ hỗ trợ lập trình đã giúp cải thiện năng xuất làm việc của các lập trình viên lên rất nhiều chính đ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 gần nhƣ là sẽ phải hoàn thiện khâu cuối cùng và rất quan trọng trƣớc khi đƣa sản phẩm vào ứng dụng Điều này đòi hỏi kiểm thử viên phải kiểm thử nhiều hơn trong thời gian ít hơn Vì vậy, đòi hỏi kiểm thử viên phải tìm ra cách để vừa đảm bảo chất lƣợng phần mềm vừa đảm bảo tiến độ kiểm thử để không ảnh hƣởng tới thời gian bàn giao sản phẩm. Kiểm thử tự động đƣợc xem là giải pháp để giải quyết vấn đề trên vừa nâng cao hiệu suất vừa giảm thời gian kiểm thử.
Kiểm thử tự động phần mềm Phƣơng pháp kiểm thử thủ công vừa tốn nhiều thời gian, công sức để thực hiện, vừa không phải lúc nào cũng có hiệu quả trong việc tìm kiếm các lớp lỗi. Vì vậy, kiểm thử tự động cung cấp một khả năng để thực hiện các loại kiểm thử một cách hiệu quả. 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ử. Kiểm thử tự động sử dụng phần mềm kiểm thử (khác biệt với kiểm thử bằng tay) để kiểm soát việc thực hiện các bài kiểm tra và so sánh kết quả thực tế với kết quả dự đoán Mục đích của kiểm thử tự động là tăng độ tin cậy, tăng tính hiệu quả, giảm thời gian, công sức, kinh phí, giảm sự nhàm chán cho kiểm thử viên trong quá trình kiểm thử.
Mô hình chữ V [4] Hình 2.1 mô tả mô hình chữ V (V - model) đã khá quen thuộc đối với những ngƣời làm công việc kiểm thử nói riêng và phát triển phần mềm nói z 6 chung. Mô hình này thể hiện một cách rõ nhất các hoạt động của kiểm thử từ giai đoạn kiểm thử mức đơn vị, kiểm thử tích hợp, kiểm thử hệ thống cho đến kiểm thử chấp nhận Tƣơng ứng với mỗi công đoạn trong việc phát triển phần mềm là một hoạt động kiểm thử. Phía bên tay trái là các hoạt động phát triển, phía bên tay phải là các hoạt động kiểm thử. Với mỗi một mức kiểm thử chúng ta đều có thể áp dụng kiểm thử tự động.
Trong giai đoạn phân tích yêu cầu các yêu cầu đƣợc thu thập, phân tích và nghiên cứu.