NET Test Automation Recipes A Problem-Solution Approach

pdf
Số trang NET Test Automation Recipes A Problem-Solution Approach 389 Cỡ tệp NET Test Automation Recipes A Problem-Solution Approach 3 MB Lượt tải NET Test Automation Recipes A Problem-Solution Approach 0 Lượt đọc NET Test Automation Recipes A Problem-Solution Approach 35
Đánh giá NET Test Automation Recipes A Problem-Solution Approach
4.3 ( 16 lượt)
Nhấn vào bên dưới để tải tài liệu
Đang xem trước 10 trên tổng 389 trang, để tải xuống xem đầy đủ hãy nhấn vào bên trên
Chủ đề liên quan

Nội dung

CYAN MAGENTA YELLOW BLACK PANTONE 123 CV BOOKS FOR PROFESSIONALS BY PROFESSIONALS ® THE EXPERT’S VOICE ® IN .NET Companion eBook Available Dear Reader, This book shows you how to write lightweight but powerful test automation in a .NET programming environment. By lightweight, I mean short (generally less than two pages of code) and quick (generally less than two hours). If you’ve ever had to perform manual software testing, you probably found the process slow, inefficient, and often just plain boring. Using the automation techniques in this book you can test your software systems quickly and efficiently. During my years as a software tester at Microsoft and other companies, I discovered that it was fairly easy to find good information about software testing theory, but when it came to finding actual concrete test automation examples, there just wasn’t much information available. I set out to put together in one place all the test automation techniques I had discovered, and this book is the result. In Part I of this book, I present techniques for API (Application Programming Interface) testing. Also called unit testing or module testing, this is the most fundamental type of software testing. I also show you how to write automated UI (user interface) tests for Windows form-based applications and how to design test harness structures. In Part II of this book, I present techniques to write test automation for Web-based applications. These techniques include automated HTTP request-response testing, automated UI testing, and automated Web services testing. In Part III of the book, I present test automation techniques that are related to data. I show you how to automatically generate combinations and permutations of test case input data. I also present techniques for testing SQL stored procedures and ADO.NET (data-based) applications. And I give you code to perform a wide range of XML data tasks. In short, if you are a software developer, tester, or manager in a .NET environment, you’ll find this book a useful addition to your resources. RELATED TITLES Dr. James D. McCaffrey A Tester’s Guide to .NET Programming 1-59059-600-5 Join online discussions: Companion eBook forums.apress.com SOURCE CODE ONLINE FOR PROFESSIONALS BY PROFESSIONALS ™ www.apress.com Shelve in Software Development 90000 6 89253 59663 0 McCaffrey ISBN 1-59059-663-3 See last page for details on $10 eBook version .NET Test Automation Recipes .NET Test Automation Recipes: A Problem-Solution Approach .NET Test Automation Recipes A Problem-Solution Approach Discover how to write lightweight yet powerful test tools in .NET James D. McCaffrey 9 781590 596630 User level: Intermediate–Advanced this print for content only—size & color not accurate 7" x 9-1/4" / CASEBOUND / MALLOY 6633FM.qxd 4/3/06 1:54 PM Page i .NET Test Automation Recipes A Problem-Solution Approach James D. McCaffrey .NET Test Automation Recipes Copyright © 2012 by James D. McCaffrey This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Exempted from this legal reservation are brief excerpts in connection with reviews or scholarly analysis or material supplied specifically for the purpose of being entered and executed on a computer system, for exclusive use by the purchaser of the work. Duplication of this publication or parts thereof is permitted only under the provisions of the Copyright Law of the Publisher's location, in its current version, and permission for use must always be obtained from Springer. Permissions for use may be obtained through RightsLink at the Copyright Clearance Center. Violations are liable to prosecution under the respective Copyright Law. ISBN-13 (pbk): 978-1-4302-5077-7 ISBN-13 (electronic): 978-1-4302-5078-4 Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. President and Publisher: Paul Manning Lead Editor: Jonathan Hassell Technical Reviewer: Josh Kelling Editorial Board: Steve Anglin, Mark Beckner, Ewan Buckingham, Gary Cornell, Louise Corrigan, Morgan Ertel, Jonathan Gennick, Jonathan Hassell, Robert Hutchinson, Michelle Lowman, James Markham, Matthew Moodie, Jeff Olson, Jeffrey Pepper, Douglas Pundick, Ben Renow-Clarke, Dominic Shakeshaft, Gwenan Spearing, Matt Wade, Tom Welsh Coordinating Editor: Katie Stence Copy Editor: Julie McNamee Compositor: Lynn L’Heureux Indexer: Becky Hornak Artist: Kurt Krames Cover Designer: Anna Ishchenko Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-ny@springersbm.com, or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation. For information on translations, please e-mail rights@apress.com, or visit www.apress.com. Apress and friends of ED books may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Special Bulk Sales–eBook Licensing web page at www.apress.com/bulk-sales. Any source code or other supplementary materials referenced by the author in this text is available to readers at www.apress.com. For detailed information about how to locate your book’s source code, go to www.apress.com/source-code/. 6633FM.qxd 4/3/06 1:54 PM Page v Contents at a Glance About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix ■CHAPTER 1 API Testing ■CHAPTER 2 Reflection-Based UI Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 ■CHAPTER 3 Windows-Based UI Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 ■CHAPTER 4 Test Harness Design Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 ■CHAPTER 5 Request-Response Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 ■CHAPTER 6 Script-Based Web UI Testing ■CHAPTER 7 Low-Level Web UI Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 ■CHAPTER 8 Web Services Testing ■CHAPTER 9 SQL Stored Procedure Testing ....................................................3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 ■CHAPTER 10 Combinations and Permutations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 ■CHAPTER 11 ADO.NET Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 ■CHAPTER 12 XML Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 ■INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 v 6633FM.qxd 4/3/06 1:54 PM Page vii Contents About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix PART 1 ■■■ ■CHAPTER 1 Windows Application Testing API Testing ...................................................3 1.0 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1 Storing Test Case Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2 Reading Test Case Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3 Parsing a Test Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4 Converting Data to an Appropriate Data Type . . . . . . . . . . . . . . . . . . . . . 9 1.5 Determining a Test Case Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.6 Logging Test Case Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.7 Time-Stamping Test Case Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.8 Calculating Summary Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.9 Determining a Test Run Total Elapsed Time . . . . . . . . . . . . . . . . . . . . . 19 1.10 Dealing with null Input/null Expected Results . . . . . . . . . . . . . . . . . . 20 1.11 Dealing with Methods that Throw Exceptions . . . . . . . . . . . . . . . . . . 22 1.12 Dealing with Empty String Input Arguments . . . . . . . . . . . . . . . . . . . . 24 1.13 Programmatically Sending E-mail Alerts on Test Case Failures . . . 26 1.14 Launching a Test Harness Automatically . . . . . . . . . . . . . . . . . . . . . . . 28 1.15 Example Program: ApiTest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 vii 6633FM.qxd viii 4/3/06 1:54 PM Page viii ■CONTENTS ■CHAPTER 2 Reflection-Based UI Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.0 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.1 Launching an Application Under Test . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.2 Manipulating Form Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.3 Accessing Form Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.4 Manipulating Control Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 2.5 Accessing Control Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 2.6 Invoking Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 2.7 Example Program: ReflectionUITest . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 ■CHAPTER 3 Windows-Based UI Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 3.0 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 3.1 Launching the AUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.2 Obtaining a Handle to the Main Window of the AUT . . . . . . . . . . . . . . 68 3.3 Obtaining a Handle to a Named Control . . . . . . . . . . . . . . . . . . . . . . . . 73 3.4 Obtaining a Handle to a Non-Named Control . . . . . . . . . . . . . . . . . . . . 75 3.5 Sending Characters to a Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 3.6 Clicking on a Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 3.7 Dealing with Message Boxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 3.8 Dealing with Menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 3.9 Checking Application State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 3.10 Example Program: WindowsUITest . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 ■CHAPTER 4 Test Harness Design Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 4.0 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 4.1 Creating a Text File Data, Streaming Model Test Harness . . . . . . . . 100 4.2 Creating a Text File Data, Buffered Model Test Harness . . . . . . . . . . 104 4.3 Creating an XML File Data, Streaming Model Test Harness . . . . . . . 108 4.4 Creating an XML File Data, Buffered Model Test Harness . . . . . . . . 113 4.5 Creating a SQL Database for Lightweight Test Automation Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 4.6 Creating a SQL Data, Streaming Model Test Harness . . . . . . . . . . . . 119 4.7 Creating a SQL Data, Buffered Model Test Harness . . . . . . . . . . . . . 123 4.8 Discovering Information About the SUT . . . . . . . . . . . . . . . . . . . . . . . . 126 4.9 Example Program: PokerLibTest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 6633FM.qxd 4/3/06 1:54 PM Page ix ■CONTENTS PART 2 ■■■ ■CHAPTER 5 Web Application Testing Request-Response Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 5.0 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 5.1 Sending a Simple HTTP GET Request and Retrieving the Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 5.2 Sending an HTTP Request with Authentication and Retrieving the Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 5.3 Sending a Complex HTTP GET Request and Retrieving the Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 5.4 Retrieving an HTTP Response Line-by-Line . . . . . . . . . . . . . . . . . . . . 141 5.5 Sending a Simple HTTP POST Request to a Classic ASP Web Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 5.6 Sending an HTTP POST Request to an ASP.NET Web Application . . . 145 5.7 Dealing with Special Input Characters . . . . . . . . . . . . . . . . . . . . . . . . . 150 5.8 Programmatically Determining a ViewState Value and an EventValidation Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 5.9 Dealing with CheckBox and RadioButtonList Controls . . . . . . . . . . . 156 5.10 Dealing with DropDownList Controls . . . . . . . . . . . . . . . . . . . . . . . . . 157 5.11 Determining a Request-Response Test Result . . . . . . . . . . . . . . . . . 159 5.12 Example Program: RequestResponseTest . . . . . . . . . . . . . . . . . . . . 162 ■CHAPTER 6 Script-Based Web UI Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 6.0 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 6.1 Creating a Script-Based UI Test Harness Structure . . . . . . . . . . . . . . 170 6.2 Determining Web Application State . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 6.3 Logging Comments to the Test Harness UI . . . . . . . . . . . . . . . . . . . . . 173 6.4 Verifying the Value of an HTML Element on the Web AUT . . . . . . . . . 174 6.5 Manipulating the Value of an HTML Element on the Web AUT . . . . . 176 6.6 Saving Test Scenario Results to a Text File on the Client . . . . . . . . . 177 6.7 Saving Test Scenario Results to a Database Table on the Server . . 179 6.8 Example Program: ScriptBasedUITest . . . . . . . . . . . . . . . . . . . . . . . . . 181 ix 6633FM.qxd x 4/3/06 1:54 PM Page x ■CONTENTS ■CHAPTER 7 Low-Level Web UI Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 7.0 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 7.1 Launching and Attaching to IE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 7.2 Determining When the Web AUT Is Fully Loaded into the Browser . 190 7.3 Manipulating and Examining the IE Shell . . . . . . . . . . . . . . . . . . . . . . 192 7.4 Manipulating the Value of an HTML Element on the Web AUT . . . . . 194 7.5 Verifying the Value of an HTML Element on the Web AUT . . . . . . . . . 195 7.6 Creating an Excel Workbook to Save Test Scenario Results . . . . . . 198 7.7 Saving Test Scenario Results to an Excel Workbook . . . . . . . . . . . . . 200 7.8 Reading Test Results Stored in an Excel Workbook . . . . . . . . . . . . . . 201 7.9 Example Program: LowLevelUITest . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 ■CHAPTER 8 Web Services Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 8.0 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 8.1 Testing a Web Method Using the Proxy Mechanism . . . . . . . . . . . . . 212 8.2 Testing a Web Method Using Sockets . . . . . . . . . . . . . . . . . . . . . . . . . 214 8.3 Testing a Web Method Using HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 8.4 Testing a Web Method Using TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 8.5 Using an In-Memory Test Case Data Store . . . . . . . . . . . . . . . . . . . . . 226 8.6 Working with an In-Memory Test Results Data Store . . . . . . . . . . . . 229 8.7 Example Program: WebServiceTest . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 PART 3 ■■■ ■CHAPTER 9 Data Testing SQL Stored Procedure Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.0 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.1 Creating Test Case and Test Result Storage . . . . . . . . . . . . . . . . . . . . 239 9.2 Executing a T-SQL Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 9.3 Importing Test Case Data Using the BCP Utility Program . . . . . . . . . 243 9.4 Creating a T-SQL Test Harness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 9.5 Writing Test Results Directly to a Text File from a T-SQL Test Harness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 9.6 Determining a Pass/Fail Result When the Stored Procedure Under Test Returns a Rowset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.7 Determining a Pass/Fail Result When the Stored Procedure Under Test Returns an out Parameter . . . . . . . . . . . . . . . . . . . . . . . . . 254 9.8 Determining a Pass/Fail Result When the Stored Procedure Under Test Does Not Return a Value . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 9.9 Example Program: SQLspTest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 6633FM.qxd 4/3/06 1:54 PM Page xi ■CONTENTS ■CHAPTER 10 Combinations and Permutations . . . . . . . . . . . . . . . . . . . . . . . . . 265 10.0 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 10.1 Creating a Mathematical Combination Object . . . . . . . . . . . . . . . . . 267 10.2 Calculating the Number of Ways to Select k Items from n Items . . . 269 10.3 Calculating the Successor to a Mathematical Combination Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 10.4 Generating All Mathematical Combination Elements for a Given n and k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 10.5 Determining the mth Lexicographical Element of a Mathematical Combination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 10.6 Applying a Mathematical Combination to a String Array . . . . . . . . 278 10.7 Creating a Mathematical Permutation Object . . . . . . . . . . . . . . . . . 280 10.8 Calculating the Number of Permutations of Order n . . . . . . . . . . . . 282 10.9 Calculating the Successor to a Mathematical Permutation Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 10.10 Generating All Mathematical Permutation Elements for a Given n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 10.11 Determining the kth Lexicographical Element of a Mathematical Permutation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 10.12 Applying a Mathematical Permutation to a String Array . . . . . . . . 291 10.13 Example Program: ComboPerm . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 ■CHAPTER 11 ADO.NET Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 11.0 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 11.1 Determining a Pass/Fail Result When the Expected Value Is a DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 11.2 Testing a Stored Procedure That Returns a Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 11.3 Testing a Stored Procedure That Returns a Rowset . . . . . . . . . . . . 309 11.4 Testing a Stored Procedure That Returns a Value into an out Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 11.5 Testing a Stored Procedure That Does Not Return a Value . . . . . . 314 11.6 Testing Systems That Access Data Without Using a Stored Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 11.7 Comparing Two DataSet Objects for Equality . . . . . . . . . . . . . . . . . . 321 11.8 Reading Test Case Data from a Text File into a SQL Table . . . . . . . 324 11.9 Reading Test Case Data from a SQL Table into a Text File . . . . . . . 327 11.10 Example Program: ADOdotNETtest . . . . . . . . . . . . . . . . . . . . . . . . . 329 xi 6633FM.qxd xii 4/3/06 1:54 PM Page xii ■CONTENTS ■CHAPTER 12 XML Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 12.0 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 12.1 Parsing XML Using XmlTextReader . . . . . . . . . . . . . . . . . . . . . . . . . . 337 12.2 Parsing XML Using XmlDocument . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 12.3 Parsing XML with XPathDocument . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 12.4 Parsing XML with XmlSerializer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 12.5 Parsing XML with a DataSet Object . . . . . . . . . . . . . . . . . . . . . . . . . . 347 12.6 Validating XML with XSD Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . 350 12.7 Modifying XML with XSLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 12.8 Writing XML Using XmlTextWriter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 12.9 Comparing Two XML Files for Exact Equality . . . . . . . . . . . . . . . . . . 356 12.10 Comparing Two XML Files for Exact Equality, Except for Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 12.11 Comparing Two XML Files for Canonical Equivalence . . . . . . . . . 359 12.12 Example Program: XmlTest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 ■INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.