1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu kiểm thử các ứng dụng web và xây dựng công cụ hỗ trợ

74 12 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 74
Dung lượng 889,18 KB

Nội dung

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ TẠ VŨ NHÂN NGHIÊN CỨU KIỂM THỬ CÁC ỨNG DỤNG WEB VÀ XÂY DỰNG CÔNG CỤ HỖ TRỢ Ngành: Công Nghệ Thông Tin Chuyên ngành: Công Nghệ Phần Mềm Mã số: 60 48 10 LUẬN VĂN THẠC SĨ NGƯỜI HƯỚNG DẪN KHOA HỌC TS.Trƣơng Ninh Thuận Hà Nội - 2010 LỜI CAM ĐOAN Tôi xin cam đoan cơng trình nghiên cứu riêng tơi Các kết nêu luận văn trung thực chưa công bố công trình khác Hải Phịng, tháng 01 năm 2010 Tạ Vũ Nhân LỜI CẢM ƠN Trước hết xin gửi lời cảm ơn đặc biệt tới TS Trương Ninh Thuận, Bộ môn Công nghệ phần mềm, Khoa Công nghệ thông tin, Trường Đại học Công nghệ, Đại học Quốc Gia Hà Nội, người trực tiếp giảng dạy, định hướng đề tài tận tình hướng dẫn bảo tơi suốt q trình thực luận văn cao học Tôi xin gửi lời cảm ơn sâu sắc tới thầy cô giáo Khoa Công nghệ thông tin, Trường Đại học Công nghệ, Đại học Quốc Gia Hà Nội tận tình giảng dạy truyền đạt kiến thức, kinh nghiệm quý báu suốt năm học Cao học Cuối xin dành tình cảm biết ơn tới Bố, Mẹ gia đình, người ln ln bên cạnh tôi, động viên, chia sẻ suốt thời gian học cao học trình thực luận văn cao học DANH MỤC CÁC TỪ VIẾT TẮT Từ viết tắt Tiếng Anh EP Equivalence Partitioning EV EventValidation VS ViewState BVA Boundary Value Analysis WS Web Services WSDL Web Services Description Language XML eXtensible Markup Language SOAP Simple Object Access Protocol WBT White Box Testing BBT Black Box Testing HTTP Hyper Text Transfer Protocol DFT Data Flow Testing SUT System Under Test DANH MỤC CÁC HÌNH VÀ BẢNG Hình 1: Web Service cho phép truy cập tới code ứng dụng sử dụng chuẩn công nghệ Internet 10 Hình 2: Web Service cung cấp tầng trừu tượng ứng dụng client ứng dụng cần gọi tới 11 Hình 3: Mô tả chế hoạt động Web Service 12 Hình 4: Web Service technology stack 13 Hình 5: TCP/IP network model 13 Hình 7: Minh họa thiết kế tổng thể ứng dụng 48 Hình 8: Gọi dịch vụ SearchFlightService 49 Hình 9: Gọi dịch vụ SearchHotelService 50 Hình 10 : Ứng dụng sử dụng liệu từ webservice 50 Hình 11: Cơng cụ kiểm thử webservice 51 Hình 12: Kiểm thử tự động với webservice1 SearchHotel 54 Hình 14 : Kiểm thử tự động tích hợp webservices 58 MỤC LỤC MỞ ĐẦU Chương - CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM 1.1 Kiểm thử hộp trắng (WBT) 1.2 Kiểm thử hộp đen (BBT) 1.2.1 Kỹ thuật kiểm thử tảng đồ thị 1.2.2 Kỹ thuật đoán lỗi 1.2.3 Kỹ thuật phân tích giá trị đường biên 1.2.4 Kỹ thuật phân vùng tương đương (EP) 1.2.5 Kỹ thuật kiểm thử so sánh 1.2.6 Kỹ thuật kiểm thử chuỗi trực giao 1.3 Lựa chọn kiểu kiểm thử cho hệ thống phần mềm Chương - WEB SERVICE VÀ CÁC ỨNG DỤNG WEB 10 2.1 Giới thiệu web service 10 2.2 Kiến trúc web service 12 2.2.1 Mô tả chế hoạt động web service 12 2.2.2 Kiến trúc phân tầng web service 13 2.3 Các ứng dụng web 15 Chương - KIỂM THỬ CÁC ỨNG DỤNG WEB 16 3.1 Một số vấn đề kiểm thử trang web 16 3.1.1 Giới thiệu 16 3.1.2 Gửi HTTP GET Request nhận HTTP Response 17 3.1.3 Gửi HTTP-Request nhận HTTP-Response có quyền xác thực 17 3.1.4 Gửi HTTP GET Request phức tạp nhận HTTP Response 18 3.1.5 Nhận HTTP Response theo dòng 19 3.1.6 Gửi HTTP POST Request tới trang Web ASP 20 3.1.7 Gửi HTTP POST Request tới ứng dụng Web ASP.NET 21 3.1.8 Xử l‎‎ý đầu vào có chứa ký tự đặc biệt 22 3.1.9 Lập chương trình lấy giá trị VS giá trị EV 24 3.1.10 Xử lý với điểu khiển Checkbox RadioButtonList 27 3.2 Kiểm thử web services 28 3.2.1 Giới thiệu 28 3.2.2 Kiểm thử phương thức Web dùng Proxy 33 3.2.3 Kiểm thử phương thức Web dùng Sockets 35 3.2.4 Kiểm thử phương thức Web dùng HTTP 40 3.2.5 Kiểm thử phương thức Web dùng TCP 41 3.2.6 Sử dụng nhớ để lưu trữ tình kiểm thử 43 Chương - XÂY DỰNG CÔNG CỤ HỖ TRỢ KIỂM THỬ 46 4.1 Các yêu cầu cho việc kiểm thử ứng dụng sử dụng dịch vụ web 46 4.2 Xây dựng chương trình kiểm thử ứng dụng web sử dụng dịch vụ web 47 4.2.1 Phạm vi ứng dụng 47 4.2.2 Thiết kế ứng dụng 48 4.2.3 Cài đặt triển khai ứng dụng 49 TÀI LIỆU THAM KHẢO 61 MỞ ĐẦU Vào khoảng đầu năm 60 nhu cầu sử dụng hệ thống phần mềm, giải phóng sức lao động trí tuệ hoạt động kinh doanh, quản lý, giải trí số lĩnh vực khoa học xã hội tăng cao Tuy nhiên yêu cầu nghiệp vụ phức tạp hệ thống dẫn đến hệ thống phần mềm tương ứng ngày trở nên phức tạp, cồng kềnh khó kiểm sốt Rất nhiều u cầu nghiệp vụ đòi hỏi xử lý vấn đề liên quan đến liệu phân tán, xử lý thông tin khác nhiều tổ chức nắm giữ Đã có nhiều kiến trúc phần mềm đưa chưa đủ mạnh để đáp ứng nhu cầu thực tế dẫn đến khủng hoảng phần mềm Trong thời kỳ này, số dự án phần mềm điển hình thất bại như: Hệ thống điều khiển hàng không; Các hệ thống phần mềm phục vụ cho ngành viễn thơng, y tế, Theo phân tích thực tế, hệ thống phần mềm rơi vào tình trạng nguyên nhân khác như[19]:  Khả xây dựng phần mềm cho phần cứng không theo kịp phát triển phần cứng  Khả xây dựng phần mềm chưa đáp ứng nhu cầu thực tế  Sự cạnh tranh hệ thống phần mềm chất lượng độ tin cậy ngày cao  Nguồn nhân lực không đủ so với nhu cầu thực tế Ngồi ngun nhân trên, cịn có nguyên nhân xuất phát từ điểm yếu hệ thống phầm mềm như:  Khơng có đơn vị liệu chuẩn để đánh giá hệ thống  Không xác định xác chi phí xây dựng hệ thống  Các công cụ hỗ trợ lập kế hoạch đánh giá tự động không phù hợp  Kế hoạch phát triển hệ thống không hợp lý tạo sức ép lớn cho người thực  Quá trình quản lý tiến trình thực cố phát sinh không phù hợp  Thiếu khả kiểm duyệt thiết kế quản lý mã lệnh hệ thống phần mềm Để khắc phục hạn chế điểm yếu đòi hỏi dự án phần mềm phải có quy trình định, giúp kiểm sốt tiến trình thực dự án hiệu công việc, kết hướng phát triển dự án Sau hoàn thành hệ thống phần mềm dự án trước đưa vào ứng dụng thực tế, hệ thống cần phải kiểm tra, đánh giá tính xác khả đáp ứng yêu cầu thực tế - thuật ngữ “Kiểm thử phần mềm” bắt nguồn từ đây[9,18] Kiểm thử phần mềm phương pháp kiểm sốt q trình thử nghiệm, thực chức hệ thống phần mềm theo tập hợp điều kiện đặt với mục đích tìm lỗi hệ thống Kết kiểm thử phần mềm tư liệu chứng minh hệ thống đáp ứng yêu cầu đặt ứng dụng thực tế hay khơng? Kiểm thử phần mềm nói phần thiếu việc xây dựng phát triển phần mềm Nó cho biết phần mềm xây dựng sử dụng có với yêu cầu mà đặt hay không Ở nước ta ngành Công nghệ phần mềm phát triển mạnh mẽ, việc kiểm thử phần mềm chưa thực quan tâm nhiều quan tâm không cách Việc áp dụng công cụ tự động cho việc kiểm thử khơng có Trong theo thống kê tốn 40% đến 60% thời gian dành cho việc kiểm thử Phần lớn công ty thường tester thực sự, số cơng ty có người chuyên kiểm thử thường làm thủ cơng Vì việc xây dựng cơng cụ hỗ trợ kiểm thử cho lợi ích sau  Mất thời gian  Chính xác  Hiệu  Tránh lỗi người gây kiểm thử thủ công Với thực tế lợi ích tơi nhận thấy việc nghiên cứu xây dựng đề tài cần thiết, phù hợp với tình hình Cấu trúc luận văn bao gồm: Chƣơng Đưa số kỹ thuật kiểm thử phần mềm, tìm hiểu số ưu nhược điểm kỹ thuật kiểm thử Lựa chọn kỹ thuật kiểm thử phần mềm Chƣơng Đưa nhìn tổng quát cơng nghệ Web Service, tìm hiểu thành phần chuẩn sử dụng công nghệ Web Service, kiến trúc Web Service quy trình hoạt động Web Service Tìm hiểu ứng dụng web xu hướng phát triển ứng dụng Chƣơng Đưa số vấn đề cách giải vấn đề việc viết công cụ hỗ trợ kiểm thử Net ứng dụng web Nghiên cứu phương pháp kiểm thử web services Chƣơng Giới thiệu toán Travel-Agent, mục tiêu, yêu cầu tốn Xây dựng cơng cụ hỗ trợ kiểm thử cho toán 53 input = int.Parse(tcn.ChildNodes.Item(1).InnerText); expected =tcn ChildNodes.Item(2).Attributes.GetNamedItem("count").Value; SearchHotelService.Service HotelService = new SearchHotelService.Service(); HotelService.Credentials = System.Net.CredentialCache.DefaultCredentials; DataSet ds = new DataSet(); ds = HotelService.SearchHotel(input); result = results.CreateElement("result"); result.SetAttribute("id", id); result.SetAttribute("input", input.ToString()); result.SetAttribute("expected", expected); DateTime endTimei = DateTime.Now; TimeSpan tsi = endTimei - startTimei; result.SetAttribute("Time", tsi.ToString()); if (IsConsistent(ds, expected)) { result.InnerText = " Pass "; TextBox2.Text = TextBox2.Text + "\n" + "result-> id=" + id + " input=" + input.ToString() + " expected=" + expected + " Time=" + tsi + "-> Pass"; } else { result.InnerText = " *FAIL* "; TextBox2.Text = TextBox2.Text + "\n" + "result-> id=" + id + " input=" + input.ToString() + " expected=" + expected + " Time=" + tsi + "-> *FAIL* "; } root.AppendChild(result); } results.Save("results1.xml"); Console.WriteLine("End Test Automation"); DateTime endTime = DateTime.Now; TimeSpan ts = endTime - startTime; TextBox2.Text=TextBox2.Text+"\nElapsed time = " + ts.Milliseconds + " milliseconds"; Thuật toán cài đặt hiểu sau Đầu tiên đọc liệu testcase từ file testcases1.xml với câu lệnh tests.Load(testcasefile) Duyệt TestcaseID foreach (XmlNode tcn in xnl), đọc điều kiện đầu vào kết mong đợi id = tcn.ChildNodes.Item(0).InnerText; input = int.Parse(tcn.ChildNodes.Item(1).InnerText); expected =tcn.ChildNodes.Item(2).Attributes.GetNamedItem("count").Value; Với testcase ta tham chiếu tới dịch vụ web sử dụng phương thức dịch vụ web với đầu vào phương thức kết đọc từ testcase sau nhận kết từ phương thức trả SearchHotelService.Service HotelService = new SearchHotelService.Service(); 54 HotelService.Credentials = System.Net.CredentialCache.DefaultCredentials; DataSet ds = new DataSet(); ds = HotelService.SearchHotel(input); Khi ta dùng hàm IsConsistent(ds, expected) kiểm tra đưa kết luận testcase “pass” hay “fail” Kết hình sau: Hình 12: Kiểm thử tự động với webservice1 SearchHotel Để kiểm thử webservice2 sử dụng file testcases2.xml Có nội dung sau : 001 1 2 12/12/2009 002 55 2 3 12/12/2009 003 1 3 12/12/2009 004 3 1 12/12/2009 005 3 2 12/12/2009 Cũng với thuật toán Đầu tiên đọc liệu testcase từ file testcases2.xml với câu lệnh tests.Load(testcasefile) Duyệt TestcaseID foreach (XmlNode tcn in xnl), đọc điều kiện đầu vào kết mong đợi id = tcn.ChildNodes.Item(0).InnerText; flightfrom= int.Parse(tcn.ChildNodes.Item(1).InnerText); flightto= int.Parse(tcn.ChildNodes.Item(2).InnerText); flightdate= int.Parse(tcn.ChildNodes.Item(3).InnerText); 56 expected =tcn.ChildNodes.Item(4).Attributes.GetNamedItem("count").Value; Với testcase ta tham chiếu tới dịch vụ web sử dụng phương thức dịch vụ web với đầu vào phương thức kết đọc từ testcase sau nhận kết từ phương thức trả SearchFlightService.Service FlightService = new SearchFlightService.Service(); FlightService.Credentials = System.Net.CredentialCache.DefaultCredentials; DataSet ds = new DataSet(); ds = FlightService.SearchFlight(flightfrom, flightto, flightdate); Khi ta dùng hàm IsConsistent(ds, expected) kiểm tra đưa kết luận testcase “pass” hay “fail” Kết hình sau: Hình 13: Kiểm thử tự động với webservice2 Searchflight Để kiểm thử tích hợp searchhotelservice searchflightservice chọn file testcase testcases3.xml có nội dung sau: 001 1 2 12/12/2009 57 002 2 3 12/12/2009 003 1 3 12/12/2009 004 3 1 12/12/2009 005 3 2 12/12/2009 Khi thuật tốn khơng có khác biệt nhiều so với kiểm thử webservice Chúng ta đọc liệu testcase từ file testcases3.xml lệnh tests.Load(testcasefile) Duyệt TestcaseID foreach (XmlNode tcn in xnl), đọc điều kiện đầu vào kết mong đợi id = tcn.ChildNodes.Item(0).InnerText; flightfrom= int.Parse(tcn.ChildNodes.Item(1).InnerText); flightto= int.Parse(tcn.ChildNodes.Item(2).InnerText); flightdate= int.Parse(tcn.ChildNodes.Item(3).InnerText); expected1 =tcn.ChildNodes.Item(4).Attributes.GetNamedItem("count1").Value; expected2 =tcn.ChildNodes.Item(4).Attributes.GetNamedItem("count2").Value; 58 Với TestCaseID phải tham chiếu đồng thời tới webservice Searchhotelservice Searchflightservice sử dụng phương thức webservice để lấy kết trở SearchHotelService.Service HotelService = new SearchHotelService.Service(); HotelService.Credentials = System.Net.CredentialCache.DefaultCredentials; DataSet ds = new DataSet(); ds = HotelService.SearchHotel(flightto); SearchFlightService.Service FlightService = new SearchFlightService.Service(); FlightService.Credentials = System.Net.CredentialCache.DefaultCredentials; DataSet ds1 = new DataSet(); ds1 = FlightService.SearchFlight(flightfrom, flightto, flightdate); Sau kết hợp hàm kiểm tra IsConsistent(ds, expected1) IsConsistent(ds1, expected2) để đưa kết “pass” hay “fail” Kết hình sau: Hình 14: Kiểm thử tự động tích hợp webservices Trên hình 14 thấy có số testcase sau chạy kiểm thử tự động kết trả „*FAIL*‟ số kết trả „*True*‟ Trong trường hợp kết trả „*FAIL*‟ tơi tạo testcase cố tình tạo sai Ví dụ : giả sử thực tế testcase với „id=001 flightfrom=1 flightto=2 flightdate=12/12/2009 expected=2 59 expected=4‟ đưa vào „id=001 flightfrom=1 flightto=2 flightdate=12/12/2009 expected=5 expected=4‟ nên kết sai Về tình coi lỗi nhập liệu tạo testcase Trong thực tế bỏ qua lỗi kết sau kiểm thử tự động luôn „*PASS*‟ trừ cơng cụ kiểm thử tự động bị lỗi không đạt yêu cầu Như chương xây dựng công cụ hỗ trợ kiểm thử để kiểm thử webservice SearchHotel Service SearchFlight Service kiểm thử đồng thời kết hợp service Kết công cụ kiểm thử xây dựng chạy đạt theo yêu cầu mà mong muốn Trong luận văn demo để biết hồn tồn xây dựng cơng cụ kiểm thử tự động, để giúp tự động hóa kiểm thử lĩnh vực cơng nghệ phần mềm Do thời gian có hạn nên kiểm thử kết hợp service xây dựng theo cách kiểm service Trong tương lai xây dựng công cụ hỗ trợ kiểm thử kết hợp nhiều web service cách đồng thời 60 KẾT LUẬN Trong luận văn đưa cách thức tiếp cận vấn đề làm để xây dựng công cụ kiểm thử tự động ứng dụng web Chúng nghiên cứu số kỹ thuật kiểm thử phần mềm kiểm thử hộp trắng, kiểm thử hộp đen Đánh giá ưu điểm, nhược điểm kỹ thuật kiểm thử Khi nên chọn kỹ thuật kiểm thử chọn kỹ thuật kiểm thử cần kỹ Luận văn trình bày cách tổng quát công nghệ Web Service, cách xây dựng triển khai Web Services Nắm công nghệ chuẩn sử dụng cho Web Service SOAP, WSDL, UDDI, cơng nghệ dùng để tích hợp Web Services Tìm hiểu mơ hình ứng dụng web, xu hướng phát triển số phần mềm ứng dụng thành công Chúng đưa cách thức tự động gửi yêu cầu (request) nhận phản hồi (response) với nhiều cách khác ứng dụng web Tùy thuộc vào yêu cầu toán đơn giản hay phức tạp mà chọn cách viết công cụ hỗ trợ kiểm thử phù hợp Chúng ta nghiên cứu sâu phương pháp kiểm thử tự động web services Luận văn xây dựng thành công công cụ hỗ trợ kiểm thử web service kết hợp web services Trong tương lai, xem xét xây dựng hồn thiện cơng cụ tốt :  Viết chương trình sinh tự động testcase để hỗ trợ kiểm thử nhanh  Thiết kế giao diện thao tác chuyên nghiệp Như chọn file testcase có nhiều định dạng khác mà gõ tay bây giờ, lưu kết kiểm thử với nhiều kiểu khác  Xây dựng nhiều cách kiểm thử khác dùng sockets, HTTP, TCP Ngồi chúng tơi nghiên cứu nhiều cách tiếp cận giải pháp kiểm thử tự động ứng dụng window (kiểm thử API, Reflection-Based UI, Window-Based UI), ứng dụng web(Script-Based web UI, Low-level web UI) kiểm thử liệu(ADO.Net, XML, SQL Stored Procedure) 61 TÀI LIỆU THAM KHẢO [1] Doug Tidwell, James Snell, Paval Kulchelko Programing Web Services With Soap O‟ reilly, january 2002 [2] Prentice Hall PTR Web Service Platform Architechture: SOAP, WSDL, WS-Policy, WS-Addressing, WS-BPEL, WS-Reliable Messaging, and More Prentice Hall, Apr 2005 [3] Robert Englander Java and Soap O‟ reilly, May 2002 [4] Ethan Cerami Web Service Essentials Distributed Application with RPC, SOAP, UDDI &WSDL O‟ reilly, Feb 2002 [5] Gerhard Wiehler Web Service and Service Oriented Architecture John wiley & Son, Feb 2004 [6] James D McCaffrey .NET Test Automation Recipes, A Problem - Solution Approach Apress, 2006 [7] Hmark Feuster, Dorothy Graham - Software Test Automation, Effective use of test execution tools Addison wesley, 1999 [8] William E Perry - Effective Methods of Software Testing John Wiley& Sons, 2000 [9] Roger Pressman - Software Engineering A Practitioners Approach Wiley, 2005 [10] Dustin, Elfriede, Jeff Rashka, and John Paul Automated Software Testing: Introduction, Management, and Performance Addison-Wesley, 1999 [11] Dustin, Elfriede Effective Software Testing: 50 Specific Ways to Improve Your Testing Addison-Wesley , 2002 [12] Kaner, Cem Testing Computer Software, 2nd ed John Wiley & Sons, 1999 [13] Kit, Edward Software Testing in the Real World: Improving the Process Addison-Wesley, 1995 [14] Myers, Glenford, et al The Art of Software Testing, 2nd ed John Wiley & Sons, 2004 [15] Sweeney, Mary Romero Visual Basic for Testers Apress, 2001 [16] B Beizer Black Box Testing John Wiley & Sons, 1995 [17] B Beizer Software Testing Techniques Computer Press, 1990 62 [18] R Pressman Software Engineering: A Practitioner's Approach Boston: McGraw Hill, 2001 [19] Software Engineering Body of Knowledge http://www.sei.cmu.edu/publications [20] Software Testing Guide Book http://www.SofTReL.org 63 PHỤ LỤC Một số mã lệnh viết công cụ hỗ trợ kiểm thử web service cài đặt đƣợc viết trền Microsoft Visual Studio 2005 C# using using using using using using using using using using System; System.Data; System.Configuration; System.Web; System.Web.Security; System.Web.UI; System.Web.UI.WebControls; System.Web.UI.WebControls.WebParts; System.Web.UI.HtmlControls; System.Xml; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { TextBox2.Text = ""; } protected void Button1_Click(object sender, EventArgs e) { try { string TestCaseFile=TextBox1.Text; if (DropDownList1.SelectedValue == "1") { string id, expected, clue; int input; DateTime startTime = DateTime.Now; TextBox2.Text = ""; TextBox2.Text = "\nStart Web Service Test Automation"; XmlDocument results = new XmlDocument(); XmlDeclaration xdeclare = results.CreateXmlDeclaration("1.0", null, null); results.AppendChild(xdeclare); // declaration XmlElement root = results.CreateElement("results"); // root element results.AppendChild(root); // root XmlElement result; XmlDocument tests = new XmlDocument(); tests.Load(TestCaseFile); XmlNodeList xnl = tests.SelectNodes("/cases/testcase"); foreach (XmlNode tcn in xnl) { DateTime startTimei = DateTime.Now; id = tcn.ChildNodes.Item(0).InnerText; input = int.Parse(tcn.ChildNodes.Item(1).InnerText); expected = tcn.ChildNodes.Item(2).Attributes.GetNamedItem("count").Value; SearchHotelService.Service HotelService = new SearchHotelService.Service(); HotelService.Credentials = System.Net.CredentialCache.DefaultCredentials; DataSet ds = new DataSet(); ds = HotelService.SearchHotel(input); 64 result = results.CreateElement("result"); result.SetAttribute("id", id); result.SetAttribute("input", input.ToString()); result.SetAttribute("expected", expected); id=" + Time=" id=" + Time=" DateTime endTimei = DateTime.Now; TimeSpan tsi = endTimei - startTimei; result.SetAttribute("Time", tsi.ToString()); if (IsConsistent(ds, expected)) { result.InnerText = " Pass "; TextBox2.Text = TextBox2.Text + "\n" + "result-> id + " input=" + input.ToString() + " expected=" + expected + " + tsi + "-> Pass"; } else { result.InnerText = " *FAIL* "; TextBox2.Text = TextBox2.Text + "\n" + "result-> id + " input=" + input.ToString() + " expected=" + expected + " + tsi + "-> *FAIL* "; } root.AppendChild(result); } // foreach test case node results.Save("results1.xml"); Console.WriteLine("End Test Automation"); DateTime endTime = DateTime.Now; TimeSpan ts = endTime - startTime; TextBox2.Text=TextBox2.Text+"\nElapsed time = " + ts.Milliseconds + " milliseconds"; } if (DropDownList1.SelectedValue == "2") { string id, expected, clue; int flightfrom,flightto; DateTime flightdate; DateTime startTime = DateTime.Now; TextBox2.Text = ""; TextBox2.Text = "\nStart Web Service Test Automation"; XmlDocument results = new XmlDocument(); XmlDeclaration xdeclare = results.CreateXmlDeclaration("1.0", null, null); results.AppendChild(xdeclare); // declaration XmlElement root = results.CreateElement("results"); // root element results.AppendChild(root); // root XmlElement result; XmlDocument tests = new XmlDocument(); tests.Load(TestCaseFile); XmlNodeList xnl = tests.SelectNodes("/cases/testcase"); foreach (XmlNode tcn in xnl) { DateTime startTimei = DateTime.Now; id = tcn.ChildNodes.Item(0).InnerText; flightfrom = int.Parse(tcn.ChildNodes.Item(1).InnerText); flightto = int.Parse(tcn.ChildNodes.Item(2).InnerText); flightdate = DateTime.Parse(tcn.ChildNodes.Item(3).InnerText); 65 expected = tcn.ChildNodes.Item(4).Attributes.GetNamedItem("count").Value; SearchFlightService.Service FlightService = new SearchFlightService.Service(); FlightService.Credentials = System.Net.CredentialCache.DefaultCredentials; DataSet ds = new DataSet(); ds = FlightService.SearchFlight(flightfrom, flightto, flightdate); result = results.CreateElement("result"); result.SetAttribute("id", id); result.SetAttribute("flightfrom", flightfrom.ToString()); result.SetAttribute("flighto", flightto.ToString()); result.SetAttribute("flighdate", flightdate.ToString()); result.SetAttribute("expected", expected); DateTime endTimei = DateTime.Now; TimeSpan tsi = endTimei - startTimei; result.SetAttribute("Time", tsi.ToString()); if (IsConsistent(ds, expected)) { result.InnerText = " Pass "; TextBox2.Text = TextBox2.Text + "\n" + "result> id=" + id + " flightfrom=" + flightfrom.ToString() + " flightto=" + flightto.ToString() + " flightdate=" + flightdate.ToShortDateString() + " expected=" + expected + " Time=" + tsi + "-> Pass"; } else { result.InnerText = " *FAIL* "; TextBox2.Text = TextBox2.Text + "\n" + "result> id=" + id + " flightfrom=" + flightfrom.ToString() + " flightto=" + flightto.ToString() + " flightdate=" + flightdate.ToShortDateString() + " expected=" + expected + " Time=" + tsi + "-> *FAIL* "; } root.AppendChild(result); } // foreach test case node results.Save("results2.xml"); Console.WriteLine("End Test Automation"); DateTime endTime = DateTime.Now; TimeSpan ts = endTime - startTime; } if (DropDownList1.SelectedValue == "3") { string id, expected1, expected2, clue; int flightfrom, flightto; DateTime flightdate; DateTime startTime = DateTime.Now; TextBox2.Text = ""; TextBox2.Text = "\nStart Web Service Test Automation"; XmlDocument results = new XmlDocument(); XmlDeclaration xdeclare = results.CreateXmlDeclaration("1.0", null, null); results.AppendChild(xdeclare); // declaration XmlElement root = results.CreateElement("results"); // root element results.AppendChild(root); // root XmlElement result; 66 XmlDocument tests = new XmlDocument(); tests.Load(TestCaseFile); XmlNodeList xnl = tests.SelectNodes("/cases/testcase"); foreach (XmlNode tcn in xnl) { DateTime startTimei = DateTime.Now; id = tcn.ChildNodes.Item(0).InnerText; flightfrom = int.Parse(tcn.ChildNodes.Item(1).InnerText); flightto = int.Parse(tcn.ChildNodes.Item(2).InnerText); flightdate = DateTime.Parse(tcn.ChildNodes.Item(3).InnerText); expected1 = tcn.ChildNodes.Item(4).Attributes.GetNamedItem("count1").Value; expected2 = tcn.ChildNodes.Item(4).Attributes.GetNamedItem("count2").Value; SearchHotelService.Service HotelService = new SearchHotelService.Service(); HotelService.Credentials = System.Net.CredentialCache.DefaultCredentials; DataSet ds = new DataSet(); ds = HotelService.SearchHotel(flightto); //====== SearchFlightService.Service FlightService = new SearchFlightService.Service(); FlightService.Credentials = System.Net.CredentialCache.DefaultCredentials; DataSet ds1 = new DataSet(); ds1 = FlightService.SearchFlight(flightfrom, flightto, flightdate); result = results.CreateElement("result"); result.SetAttribute("id", id); result.SetAttribute("flightfrom", flightfrom.ToString()); result.SetAttribute("flighto", flightto.ToString()); result.SetAttribute("flighdate", flightdate.ToString()); result.SetAttribute("expected1", expected1); result.SetAttribute("expected2", expected2); DateTime endTimei = DateTime.Now; TimeSpan tsi = endTimei - startTimei; result.SetAttribute("Time", tsi.ToString()); if (IsConsistent(ds, expected1) && IsConsistent(ds1, expected2)) { result.InnerText = " Pass "; TextBox2.Text = TextBox2.Text + "\n" + "result> id=" + id + " flightfrom=" + flightfrom.ToString() + " flightto=" + flightto.ToString() + " flightdate=" + flightdate.ToShortDateString() + " expected1=" + expected1 + " expected2=" + expected2 + " Time=" + tsi + "-> Pass"; } else { result.InnerText = " *FAIL* "; TextBox2.Text = TextBox2.Text + "\n" + "result> id=" + id + " flightfrom=" + flightfrom.ToString() + " flightto=" + 67 flightto.ToString() + " flightdate=" + flightdate.ToShortDateString() + " expected1=" + expected1 + " expected2=" + expected2 + " Time=" + tsi + "-> *FAIL* "; } root.AppendChild(result); } // foreach test case node results.Save("results3.xml"); Console.WriteLine("End Test Automation"); DateTime endTime = DateTime.Now; TimeSpan ts = endTime - startTime; TextBox2.Text = TextBox2.Text + "\nElapsed time = " + ts.Milliseconds + " milliseconds"; } } // try catch (Exception ex) { TextBox2.Text=(ex.Message); } } static bool IsConsistent(DataSet ds, string expected) { if (ds.Tables[0].Rows.Count != int.Parse(expected)) return false; return true; } } ... cho việc kiểm thử ứng dụng sử dụng dịch vụ web 46 4.2 Xây dựng chương trình kiểm thử ứng dụng web sử dụng dịch vụ web 47 4.2.1 Phạm vi ứng dụng 47 4.2.2 Thiết kế ứng dụng 48... Tìm hiểu ứng dụng web xu hướng phát triển ứng dụng Chƣơng Đưa số vấn đề cách giải vấn đề việc viết công cụ hỗ trợ kiểm thử Net ứng dụng web Nghiên cứu phương pháp kiểm thử web services Chƣơng... phương pháp sử dụng để kiểm thử ứng dụng web sử dụng công nghệ NET Sau giới thiệu số kỹ thuật kiểm thử cho ứng dụng web đơn giản, sâu nghiên cứu phương pháp kiểm thử dịch vụ (web services) 3.1

Ngày đăng: 16/03/2021, 11:23

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN