Giải pháp ghi lại kết quả đầu ra

Một phần của tài liệu Nghiên cứu về kiểm thử mô hình ứng dụng Web (Trang 43)

a) Chụp hình lại kết quả kiểm thử

WebDriver cung cấp hàm API cho phép thực hiện việc chụp lại kết quả của việc kiểm thử. Sử dụng hàm getScreenshotAs(OutputType.FILE) để chụp lại kết quả của mỗi trường hợp kiểm thử.

Thuộc tính OutputType: Kiểu kết quả được ghi ra sau khi chụp màn hình. Thuộc tính FILE: Cho phép xác định đường dẫn để lưu ảnh sau khi chụp. Cú pháp:

private void captureScreen(WebDriver driver) throws IOException{

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);

FileUtils.copyFile(scrFile, new File(System.getProperty("user.dir") + "\\Url\\"

36

b) Ghi kết quả ra tệp tin XML

Sau khi thực hiện các ca kiểm thử, các ca kiểm thử đều được ghi lại và so sánh với đặc tả xem các ca kiểm thử thực hiện có đúng không? Để ghi kết qua ra tệp tin XML sử dụng hàm writeToXML(input 1, input 2, input 3,…), các giá trị đầu vào input 1, input 2, input 3,…là các giá trị được lấy từ tệp tin đầu vào của mỗi trường hợp kiểm thử. Sau khi hàm writeXML() được thực hiện nó sẽ ghi nhận tất cả các giá trị đầu vào và các giá trị đầu vào này sẽ được so sánh với đặc tả của chương trình xem việc thực hiện kiểm thử thủ công các các giá trị đầu vào đó có đúng đắn không. Điều này giúp cho kiểm thử viên có thể kiểm tra lại một cách trực quan hơn các giá trị đầu vào của các ca kiểm thử.

Cú pháp hàm writeXML():

privatevoid writeToXML(Input 1, input 2, input 3){

Element staff = doc.createElement("LoginTest");

rootElement.appendChild(staff);

Attr attr = doc.createAttribute("name"); attr.setValue("TestLogin"+index); staff.setAttributeNode(attr);

Element user = doc.createElement("username"); user.appendChild(doc.createTextNode(username)); staff.appendChild(user);

}

c) Ghi kết quả ra tệp tin Excel

Kết quả thực hiện các ca kiểm thử được ghi lại bởi tệp tin XML và chụp lại hình giúp cho kiểm thử viên các thể kiểm soát được tất cả các trường hợp có thể xảy ra có đúng như đặc tả kiểm thử không. Kết quả được ghi ra tệp tin Excel sẽ giúp cho việc xác định xem ca kiểm thử đó là thành công hay thất bại. Hàm được sử dụng để ghi kết quả ra tệp tin Excel writeTestResult(input 1, input 2, input 3 , result), tham số của hàm là các giá trị của các ca kiểm thử và kết quả (result) của từng ca kiểm thử khi thực hiện.

Cú pháp hàm writeTestResult():

private void writeTestResult(input 1, input 2, input 3, result) { HSSFRow row1 = worksheet.createRow((short) 0); HSSFCell cellA1 = row1.createCell((short) 0);

37

cellA1.setCellValue("Username");

HSSFCellStyle cellStyle = workbook.createCellStyle(); cellStyle.setFillForegroundColor(HSSFColor.GOLD.index); cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); cellA2.setCellValue(result);

38

CHƢƠNG 4 THỰC NGHIỆM 4.1. Cài đặt môi trƣờng kiểm thử

Chƣơng trình thực nghiệm đƣợc xây dựng trên mô trƣờng nhƣ sau:

STT Môi trường thực nghiệm Nội dung Ghi chú

1 Hệ điều hành Windows 7 Cung cấp môi trường cài đặt cho hệ thống

2 Cơ sở dữ liệu MySQL Lưu dữ liệu của chương trình

3 Server Apache Cài đặt Web Server ứng dụng Web

Bảng 4.1. Môi trường thực nghiệm (adsbygoogle = window.adsbygoogle || []).push({});

Các chƣơng trình cài đặt phía client:

STT Tên ứng dụng Chức năng

1 Phần mềm mã nguồn mở

Joomla Cài đặt xây dựng ứng dụng Web

2 Firefox Trình duyệt web

3 Firebug và Firepath Được tích hợp vào Firefox để định vị các phần tử tương tác trong ứng dụng Web

Bảng 4.2. Chương trình hỗ trợ kiểm thử

Môi trƣờng xây dựng cài đặt ứng dụng Web:

- Sử dụng WebServer Apache là Xampp (http://www.apachefriends.org) - Tải mã nguồn mở Joomla và thực hiện cài đặt (http://www.joomla.org/)

Cài đặt và các công cụ xây dựng kiểm thử tự động WebDriver

Để cài đặt và sử dụng công cụ kiểm thử tự động WebDriver cần thực hiện các bước sau đây:

STT Tên Chức năng Website

1 Java SE (Java

JDK và JRE) Cài đặt môi trường Java

http://www.oracle.com/technetwor k/java

2 Eclipse Lập trình http://www.eclipse.org

39 hợp kiểm thử

4 WebDriver Thư viện WebDriver http://code.google.com/p/selenium/ downloads/list 5 dom4j.jar, file- ulils.jar, xmlbeans- 2.4.0.jar

Thư viện bổ sung

Bảng 4.3. Môi trường WebDriver

4.2. Xây dựng chƣơng trình kiểm thử tự động đăng nhập ứng dụng Web Giao diện trang chủ:

Hình 4.1. Giao diện trang chủ.

Giao diện quản trị đăng nhập:

Hình 4.2. Giao diện đăng nhập

Màn hình đăng nhập thành công: Khi nhập tên đăng nhập và mật mã đúng sẽ truy cập được vào ứng dụng.

40

Hình 4.3. Màn hình đăng nhập thành công.

Tạo bảng trạng thái cũng chính là đầu vào của công cụ kiểm thử tự động cho đăng nhập:

Hình 4.4. Bảng trạng thái tương ứng.

Sử dụng ứng dụng Graphviz để tạo mô hình chuyển trạng thái trực quan: (adsbygoogle = window.adsbygoogle || []).push({});

41

Đoạn lệnh thực hiện việc xây dựng mô hình trạng thái trực quan sử dụng công cụ Graphviz:

Listing 1. Đoạn mã mô hình hóa các ca login

Hình 4.5 chỉ ra các đường dẫn sẽ phát sinh một trường hợp cần phải kiểm thử. Có thể liệt kê các trường hợp kiểm thử sau:

Trƣờng hợp 1: S_Login -> (English or Vietnamses) -> Submit(NoUserPass) -> Error, giải thích từ trang đăng nhập không nhập User và Password, chọn ngôn ngữ là (tiếng Anh hoặc tiếng Việt) và bấm vào Submit (Đăng nhập) -> Báo lỗi (đăng nhập không thành công) và quay trở lại màn hình đăng nhập.

42

Trƣờng hợp 2: S_Login -> Username -> (English or Vietnamses) -> Submit-> Error, giải thích từ trang đăng nhập, nhập Username nhưng không nhập Password, chọn ngôn ngữ là (tiếng Anh hoặc tiếng Việt) và bấm vào Submit (Đăng nhập) -> Báo

lỗi (đăng nhập không thành công) và quay trở lại màn hình đăng nhập..

Hình 4.7. Mô tả quy trình với trường hợp không nhập User và không nhập Pass

Trƣờng hợp 3: S_Login -> Password -> (English or Vietnamses) -> Submit-> Error, giải thích từ trang đăng nhập, nhập Password nhưng không nhập Username, chọn ngôn ngữ là (tiếng Anh hoặc tiếng Việt) và bấm vào Submit (Đăng nhập) -> Báo

lỗi (đăng nhập không thành công) và quay trở lại màn hình đăng nhập..

Hình 4.8. Mô tả quy trình với trường hợp không nhập Pass và không nhập User

Trƣờng hợp 4: S_Login -> Username (PasswordText)-> UserPass->(English or Vietnamses) -> Submit-> mainLogin, giải thích từ trang đăng nhập, nhập Username và nhập Password, sau đó chọn ngôn ngữ (tiếng Anh hoặc tiếng Việt) và bấm vào Submit (Đăng nhập) -> Đăng nhập thành công và hiển thị trang quản trị ứng dụng.

43

Hình4.9. Mô tả quy trình với trường hợp nhập User và Pass

Trƣờng hợp 5: S_Login -> Password (UsernameText)-> UserPass-> (English or Vietnamses) -> Submit-> mainLogin, giải thích từ trang đăng nhập, nhập Username và nhập Password, sau đó chọn ngôn ngữ (tiếng Anh hoặc tiếng Việt) và bấm vào Submit (Đăng nhập) -> Đăng nhập thành công và hiển thị trang quản trị ứng dụng.

Hình 4.10. Mô tả quy trình với trường hợp không nhập Pass và nhập User

4.3. Các bƣớc thực hiện kiểm thử tự động

Từ việc phân tích các trường hợp kiểm thử ở trên, xây dựng chương trình thực hiện việc kiểm thử tự động.

Bƣớc 1: Viết hàm đọc tệp tin Excel Xls_Reader[13] đầu vào mô tả tất cả các trường hợp có thể xảy ra được mô tả.

Bƣớc 2: Viết hàm ghi kết quả ra tệp tin XML, Excel và viết hàm chụp lại tất cả các trường hợp kiểm thử xảy ra.

Với hàm ghi kết quả ra tệp tin XML: Với đầu vào là các ca kiểm thử đã được kiểm tra, và mỗi ca kiểm thử hàm sẽ tự động ghi vào tệp tin XML.

44

Hình4.11. Quy trình ghi kết quả ra tệp tin XML

Các bước ghi kết quả vào tệp tin XML:

- Hàm writeToXML() với đầu vào là kết quả của các ca kiểm thử đã được kiểm tra bao gồm(username, password, language, index – đánh chỉ mục các ca kiểm thử).

- Hàm writeToXML() sử dung thuộc tính createTextNode() để ghi kết quả vào tệp tin XML.

Hàm ghi ra tệp tin Excel: Hàm này với đầu vào cũng là các ca kiểm thử đã kiểm thử, với mỗi ca kiểm thử hàm sẽ tự động ghi vào tệp tin Excel, cụ thể với chương trình kiểm thử tự động việc đăng nhập. Hàm này sẽ ghi lại các ca kiểm thử là các trường hợp xảy ra khi đăng nhập và được đọc từ tệp tin đầu vào. Sau đó hàm này sẽ ghi lại kết quả của việc kiểm thử là thành công hay thất bại, giúp cho việc so sánh với đặc tả để kiểm tra tính đúng đắn của việc kiểm thử tự động.

Hình 4.12. Quy trình ghi kết quả ra tệp tin Excel

Các bước ghi kết quả vào tệp tin Excel: (adsbygoogle = window.adsbygoogle || []).push({});

- Đầu vào của hàm writeTestResult() là các ca kiểm thử và kết quả của ca kiểm thử đó bao gồm (usename, password, language, result).

- Hàm writeTestResult() sử dụng phương thức setCellValue để ghi kết quả kiểm thử vào tệp tin Excel.

45

Hàm chụp hình các ca kiểm thử: Sử dung dung hàm captureScreen() phục vụ cho việc lưu lại hình ảnh của các ca kiểm thử. Với mỗi ca kiểm thử thành công hay thất bại hàm này cũng sẽ lưu lại hình ảnh của từng ca kiểm thử, cũng giúp cho việc kiểm tra tính đúng đắn với đặc tả. Hàm captureScreen() cho phép thiết lập đường dẫn lưu trữ ảnh và sử dụng TakesSreenShot để chụp ảnh các trường hợp kiểm thử.

Bƣớc 3: Xây dựng hàm kiểm thử sử dụng API của WebDriver để thực hiện các trường hợp kiểm thử đầu vào từ tệp tin Excel

Hình 4.13. Quy trình ghi xử lý việc kiểm thử ứng dụng Web

Các bước để xây dựng hàm API kiểm thử tự động đăng nhập ứng dụng Web

- Hàm Test_UserPass đọc tệp tin Excel đầu vào (hàm Xls_Reader sử dụng phương thức GetCellData(usename, password, language)).

- Tiếp theo Hàm Test_UserPass mở màn hình đăng nhập ứng dụng Web, thực hiện việc nhập tên đăng nhập, mật khẩu và chọn ngôn ngữ(sử dụng phương thứ Sendkeys()).

- Bấm Submit để truy cập vào ứng dụng Web

- Nếu ca kiểm thử thành công -> Ghi kết quả thông qua hàm captureScreen(), writeTestResult(), writeToXML().

- Nếu không thành công sẽ quay lại màn hình đăng nhập -> Và cũng ghi kết quả thông qua hàm captureScreen(), writeTestResult(), writeToXML().

Để xem chi tiết các hàm xử lý các bước trên tham khảo phụ lục A

4.4. Kết quả thực nghiệm

Sau khi thực chạy chương trình duyệt tất cả các trường hợp kiểm thử khi thực hiện đăng nhập, kết quả thu được cụ thể:

46

Kết quả ghi ra Excel:

Kết quả được ghi vào tệp tin Excel, ghi lại các trường hợp kiểm thử và trạng thái là thành công hay thất bại.

Hình 4.14. Kết quả ghi ra kiểm thử Login ghi ra tệp tin Excel.

Trường hợp 1 với việc nhập User name là anhnv, Password là anhnvpwd123, Ngôn ngữ là Vietnamese-VN => Ở cột Results thông báo là đăng nhập thành công.

Trường hợp 2 với việc nhập User name là anhnv, Password là anhnvpwd123, Ngôn ngữ là English (United Kingdom) => Ở cột Results thông báo là đăng nhập thành công.

Trường hợp 3 với việc nhập User name là anhnv, Password để ” trống”, Ngôn ngữ là Vietnamese-VN => Ở cột Results thông báo là đăng nhập Thất bại.

Trường hợp 4 với việc nhập User name để “trống”, Password là anhnvpwd123, Ngôn ngữ là Vietnamese-VN => Ở cột Results thông báo là đăng nhập Thất bại.

Trường hợp 5 với việc nhập User name để “trống”, Password để “trống”, Ngôn ngữ là Vietnamese-VN => Ở cột Results thông báo là đăng nhập Thất bại.

Kết quả ghi ra XML:

Kết quả được ghi nhận vào tệp tin XML, liệt kê tất cả các trường hợp kiểm thử

47

Với mỗi thẻ <LoginTest name = “TestLong1”> Ghi nhận các trường hợp kiểm thử xem có đúng không </LoginTest>. Ở hình trên có thể thấy

<LoginTest name="TestLogin1"> <username>anhnv</username> <password>anhnvpwd123</password> <Language>Vietnamese-VN</Language> </LoginTest> -> Nhập Username là anhnv -> Mật khẩu là anhnvpwd123 -> Ngôn ngữ là Vietnamese-VN

Màn hình đăng nhập thành công với Username là anhnv , Password là anhvnpwd123 và ngôn ngữ là Vietnamese-VN. (adsbygoogle = window.adsbygoogle || []).push({});

Hình4.15. Trường hợp đăng nhập thành công

Trường hợp đăng nhập không thành công với việc để Username và Password để trắng.

48

4.5. Ý nghĩa chƣơng trình kiểm thử tự động

Chương trình kiểm thử tự động ứng dụng Web đã được thực nghiệm với hơn 10 Website khác nhau thỏa mãn cấu trúc của bài toán. Và kết quả đạt được đáp ứng với yêu cầu của bài toán. Với việc kiểm thử thành công với các ứng dụng Web khác nhau, cho thấy ý nghĩa quan trọng trong việc thực hiện kiểm thử tự động, đồng thời giải quyết được các vấn đề mà kiểm thử thủ công gặp phải như một số kiểm thử bị bỏ qua, không thể ghi nhận được lỗi phát sinh…Và cũng với kiểm thử tự động sẽ giúp cho việc kiểm thử đỡ tốn thời gian và buồn tẻ hơn.

Với việc xây dựng và thực nghiệm thành công chương trình kiểm thử tự động đăng nhập ứng dụng Web, sẽ làm nền tảng để có thể phát hiển một chương trình hoản chỉnh đảm bảo có thể kiểm thử toàn bộ ứng dụng một ứng dụng Web cụ thể.

Ngoài ra trong nội dung luận văn tôi còn xây dựng một số chương trình kiểm thử như: kiểm thử tự động việc đăng nội dung bài viết, kiểm thử việc ẩn hiện bài viết, kiểm thử việc tìm kiếm google chi tiết có thể thao khảo ở phục lục B.

49

CHƢƠNG 5 KẾT LUẬN

Ngày này với cơ sở hạ tầng về mạng Internet phát triển rất mạnh mẽ, cùng với đó là sự ra đời của hàng hoạt các ứng dụng Web để đáp ứng nhu cầu của người sử trong mọi lĩnh vực của cuộc sống. Cùng với sự đa dạng và phức tạp của các ứng dụng Web là đòi hỏi của người dùng ngày một cao hơn như ứng dụng yêu cầu thân thiện hơn, sử dụng nhanh hơn, các chức năng thì thuận tiện với thao tác của người sử dụng, đặc biệt là không có lỗi khi sử dụng.

Với đề tài “Nghiên cứu về kiểm thử mô hình ứng dụng Web” nội dung luận văn đã giới thiệu về kiểm thử và kiểm thử về các thành phần ứng dụng Web. Đồng thời tìm hiểu các thành phần của công cụ kiểm thử nguồn mở WebDriver cung cấp các thư viện các hàm API để giúp cho việc xây dựng chương trình kiểm thử tự động ứng dụng Web. Với việc xây dựng và thực nghiệm thành công chương trình kiểm thử tự động việc đăng nhập vào ứng dụng Web và một số chương trình kiểm thử việc đăng tin, ẩn bài tin [Phục lục B] tự động không chỉ chứng minh được việc sử dụng công cụ kiểm thử tự động có hiệu quả hơn việc kiểm thử thủ công mà còn có thể áp dụng vào thực tế với hầu hết các ứng dụng thỏa mãn cấu trúc của chương trình nghĩa là thỏa mãn yêu cầu bài toán (Chương 3).

Hƣớng phát triển

Nội dung trong luận văn đã nêu lên được các nội dung của kiểm thử và kiểm thử ứng dụng Web. Cùng với đó là đã xây dựng thành công chương trình kiểm thử tự động, tuy nhiên, chương trình chỉ tập trung kiểm thử một số thành phần nhất định của một ứng dụng Web, và chưa mang tình chất tổng qua cho cả ứng dụng Web. Chính vì vậy mà hướng nghiên cứu tiếp theo của tôi sẽ tối ưu hóa chương trình hiện tại và xây dựng một công cụ kiểm thử đầy đủ để thực hiện việc kiểm thử toàn bộ ứng dụng Web một cách tổng thể không chỉ là kiểm thử chức năng nữa mà còn có thể kiểm thử hiệu năng, kiểm thử giao diện,…

50

TÀI LIỆU THAM KHẢO Tiếng Việt

[1] Thạch Bình Cường (2011), Kiểm thử và đảm bảo chất lượng phần mềm, Đại học Bách khoa Hà Nội.

[2] Pressman R (1997), Introduction to Software Engineering, Ngô Trung Việt dịch, NXB Giáo dục.

[3] Trung tâm Học liệu (2009), Kiểm thử phần mềm, Đại học Thái Nguyên

[4] Nguyễn Xuân Huy (2007), Công nghệ phần mềm, NXB Đại học Tổng hợp TP. Hồ Chí Minh.

Tiếng Anh

[5] Hung Q.Nguyen, Bob Johnson, Michael Hacket (2009), Testing Applications on the Web.

[6] Glenford J.Myers (2004), The Art Of Software Testing, pp 4-5.

[7] Jeffrey Feldstein (2005-2006), Model-Based Testing for Java and Web applications.

[8] Oluwaseun Akinmade (2008), Automated Model-Based Testing of Web Applications.

Website tham khảo

[9] http://www.softwaretestinghelp.com/web-application-testing/

[10] http://www.softwaretestinghelp.com/web-application-testing/

51

PHỤC LỤC

Phụ lục A. Chƣơng trình kiểm thử đăng nhập tự động ứng dụng Web (adsbygoogle = window.adsbygoogle || []).push({});

1. Chƣơng trình đọc tệp tin Excel đầu vào chứa chứa tất cả các trƣờng hợp kiểm thử:

Đoạn lệnh giúp cho việc đọc thông tin trong tệp tin Excel: sheetName: tên của Sheet, colNum: số thứ tự của Cột, rowNum: số thứ tự của Hàng.[13]

public String getCellData(String sheetName,int colNum,int rowNum){

try{

if(rowNum <=0)

return"";

int index = workbook.getSheetIndex(sheetName);

if(index==-1)

return"";

sheet = workbook.getSheetAt(index);

row = sheet.getRow(rowNum-1);

Một phần của tài liệu Nghiên cứu về kiểm thử mô hình ứng dụng Web (Trang 43)