Improving Driver Concurrency Testing James Moe and Dieter Achtelstetter Windows Devices & Storage Technologies

Slides:



Advertisements
Similar presentations
A Taste of Visual Studio 2005 David Grey. Introduction In this session we will introduce Visual Studio 2005 and its features and examine those features.
Advertisements

Working with Disks and Devices
Optimizing Device Drivers For Terminal Servers Plug And Play Device Redirection Framework Gaurav Daga Program Manager Windows Terminal Server Microsoft.
WDM 드라이버의 기본 구조 What is WDM?
Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
May 17, USB Power Management Brad Hosler USB Engineering Manager Intel Corporation.
Using The Windows Device Testing Framework To Simplify Windows Driver Testing Travis Martin, Lead Developer Adam Shapiro, Program Manager Windows Device.
Trnsport Test Suite Project Tony Compton, Texas DOT Charles Engelke, Info Tech.
Roadmap to Continuous Integration Testing and Benefits Gowri Selka, Walgreens Natalie Koltun, Walgreens May 20th, 2014 ©2013 Walgreen Co. All rights reserved.
Upcoming Changes in the WDK Upcoming Changes in the Windows Driver Kit Griffin Cole Program Manager WDK Craig Ziegler Test Lead WDK Ted Hudek Documentation.
D. Düllmann - IT/DB LCG - POOL Project1 POOL Release Plan for 2003 Dirk Düllmann LCG Application Area Meeting, 5 th March 2003.
Vinita Tayal Senior Program Manager. Role of Device Fundamentals (aka devfund) Goals of Device Fundamentals Relationship of devfund requirements & tests.
04/14/2008CSCI 315 Operating Systems Design1 I/O Systems Notice: The slides for this lecture have been largely based on those accompanying the textbook.
Best Practices For Testing Windows Drivers
Random Testing of Interrupt-Driven Software John Regehr University of Utah.
Illinois Institute of Technology
Macromedia Dreamweaver 4 Advanced Level Course. Add Rollovers Rollovers or mouseovers are possibly the most popular effects used in designing Web pages.
Virtualization and the Cloud
ModelBuilder at ArcGIS 9.2 Lyna Wiggins Rutgers University May 2008.
Printer Installation and Driver Management Shawn Maloney Program Manager WEX DOX Device Interfaces
Introduction to User-Mode Driver Framework. Outline What is UMDF? When should I use UMDF? When shouldn’t I use UMDF? What does UMDF give me? What kind.
Driver Verifier Advancements In Windows 7 Daniel Mihai Principal Software Design Engineer Windows Engineering Tools.
Microsoft Visual Basic 2012 CHAPTER ONE Introduction to Visual Basic 2012 Programming.
NDIS LBFO Miniports (Load Balancing And Failover) Larry Cleeton Program Manager Windows Networking And Communications Microsoft Corporation.
PowerPoint Presentation to Accompany Chapter 5 System Software Visualizing TechnologyCopyright © 2014 Pearson Education, Inc. Publishing as Prentice Hall.
MGS Testing A High Level Overview of Testing in Microsoft Games Studio Joe Djorgee – Test Lead.
© Cheltenham Computer Training 2001 Macromedia Dreamweaver 4 - Slide No 1 Macromedia Dreamweaver 4 Advanced Level Course.
© 2012 IBM Corporation Rational Insight | Back to Basis Series Chao Zhang Unit Testing.
*All other brands and names are the property of their respective owners. Slide 1 ® UDIG Driver Test Suite Rob Mills Barry Feild
A Critical Analysis of the Windows mLAN Driver Supervisor: Prof. Foss By: Shaun Miles.
ATA Miniport Nuts and Bolts
Module 2: Adding Hardware to Windows XP Professional Clients.
October 10, USB Power Management Brad Hosler USB Engineering Manager Intel Corporation.
Exploiting Windows 2000 Kyle Marsh Software Design Engineer Windows Evangelism Microsoft Corporation
Testing Basics of Testing Presented by: Vijay.C.G – Glister Tech.
MCTS Guide to Microsoft Windows Vista Chapter 4 Managing Disks.
A Comparative Study of the Linux and Windows Device Driver Architectures with a focus on IEEE1394 (high speed serial bus) drivers Melekam Tsegaye
Module 2 Configuring Disks and Device Drivers. Module Overview Partitioning Disks in Windows® 7 Managing Disk Volumes Maintaining Disks in Windows 7 Installing.
From Quality Control to Quality Assurance…and Beyond Alan Page Microsoft.
Mobile Broadband Driver Development for Windows 7
Week #3 Objectives Partition Disks in Windows® 7 Manage Disk Volumes Maintain Disks in Windows 7 Install and Configure Device Drivers.
October 10, Testing USB 2.0 Devices and Drivers Scott Thompson USB Test Developer Windows Division Microsoft Corp.
Created by Jan Medved Integration & Test Strategy for Lithium.
02/09/2010 Industrial Project Course (234313) Virtualization-aware database engine Final Presentation Industrial Project Course (234313) Virtualization-aware.
Microsoft Virtual Server: Overview and Roadmap Mike Neil Product Unit Manager Windows Virtualization microsoft.com Microsoft Corporation.
Rational Unified Process Fundamentals Module 7: Process for e-Business Development Rational Unified Process Fundamentals Module 7: Process for e-Business.
An Introduction to Device Drivers Ted Baker  Andy Wang COP 5641 / CIS 4930.
Computer Software Types Three layers of software Operation.
Silberschatz, Galvin and Gagne  Operating System Concepts Six Step Process to Perform DMA Transfer.
DEV364 Visual Studio Team System “Enabling Better Software Through Better Testing” Keith Brown Pluralsight LLC.
Mobile Add-on For Loadrunner Extend HP LoadRunner to Mobile.
Windows Logo Program Tests for NDIS 6.20 Eric Li Test Lead Networking Ecosystem Team Michael Nanakul Test Lead Networking Ecosystem.
Travis Martin, Lead Developer Adam Shapiro, Program Manager Windows Device Platform Group Microsoft Corporation.
Customer and Partner Connections Design and Develop Assess and Certify.
Visual Studio 2005 Team System: Enabling Better Software Through Testing Tejasvi Kumar Technology Specialist - VSTS Microsoft Corporation
Changes To The Display Driver Interface In Windows ® XP Erick Smith Development Lead Base OS Drivers Team Microsoft Corporation.
SPI NIGHTLIES Alex Hodgkins. SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all.
PC Maintenance: Preparing for A+ Certification Chapter 14: Configuring Devices in Windows.
*All other brands and names are the property of their respective owners. Slide 1 ® UDIG Driver Test Suite Gian-Carlo Bava Barry Feild.
Plug-In Architecture Pattern. Problem The functionality of a system needs to be extended after the software is shipped The set of possible post-shipment.
Rade Trimceski Program Manager Microsoft Corporation Mitesh Desai Software Design Engineer Microsoft Corporation.
WHDC PowerPoint Template Notes & Handouts
CSE451 I/O Systems and the Full I/O Path Autumn 2002
Developing Drivers in Visual Studio
Chapter 13 & 14 Software Testing Strategies and Techniques
CIS16 Application Development – Programming with Visual Basic
Different Levels of Testing
Microsoft Build /3/2019 4:12 AM © 2016 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY,
Visual Basic CSC
Testing.
Presentation transcript:

Improving Driver Concurrency Testing James Moe and Dieter Achtelstetter Windows Devices & Storage Technologies

Agenda Concurrency and driver bugs Observations about our existing tests A tool for looking at IRP concurrency How we used that data to improve our tests The new Windows 7 tests in depth How you can use these tools to improve your in-house tests in respect to concurrency

Concurrency and Drivers Driver are highly concurrent Much of a driver’s complexity derives from concurrency Many late or post-ship bugs are related to concurrency

Observations about Our Existing Tests Tests tend to be very specific PnP tests do PnP I/O tests do I/O Existing tests tend not to work well when run side by side Unclear what concurrency scenarios they cover

Introducing IRP Concurrency Coverage Provides an additional coverage dimension to code coverage Can identify test coverage holes Complements other tools like code coverage, static analysis, etc.

IRP Pair Coverage A form of concurrency coverage A pair is covered if: The 2 IRPs making up the pair are active within a single driver stack 1326 pairs From 52 IRPS Kernel rules removed 227 pairs; for example: Only one state-changing PnP IRP active within a stack Leaves 1099 pairs

What Is an active IRP?

Why Pairs? Too many combinations of all possible IRPs Equal distribution through the problem space Improvements visible as percentage of coverage IRPSPossible combinations 12 MJ IRPS MN & MH IRPS134,217,728

Data Perspectives 2 identical pair hits are not identical A pair hit doesn’t necessarily indicate a valuable test case Repetitive pair hits increase the odds of valuable test cases Low number of hits per pair indicates missing test coverage

Example: Full Test Pass Metrics MetricCoverage percentage MJ-only IRP coverage IRP coverage IRP pair coverage 2.91

Example of Pair Coverage

Tests Comprising the Example Test Pass Tests Create all different variations of volumes/partition on both GPT and MBR disks and run I/O to each drive created. Bigfile (I/O test) DC2 against the miniport Disable/enable test Automated test to open and populate the “Volumes” tab in the properties dialog for the disk in devman Disable_Enable_With_IO Sleep_Stress_With_IO Mapfile (I/O test) PnPDTest Query/Remove SCSI break reservation SCSI compliance test SPTI (SCSI passthrough test) Storioctls

Test Improvement Focus Test List Plug and Play Driver Test (PnPDTest) Disable/Enable with I/O (Disable_Enable_With_IO) Sleep stress with I/O (Sleep_Stress_With_IO) DC2 Static tools

What’s New in PnPDTest – More Than Just PnP Coupling I/O with PnP IRPs Configurable—old test functionality is still there IOCTLs Read/write Power

PnPDTest - I/O and PnP IOCTL Generic buffered IO Planning to integrate more DC2 functionality Read/Write Uses Windows Device Testing Framework (WDTF) SimpleIO Existing WDTF SimpleIO interfaces for net, audio, video, and volume Extensible for other device types

PnPDTest – Power + I/O, Power +PnP Uses WDTF interfaces to set system power, set timers for wake Combine S-IRPs and resulting D-IRPs with IOCTL and Read/Write Combine power IRPs with PnP IRPs All three together!

Device Path Exerciser (DC2), Static Tools, WLK Scripts Work is underway to modify DC2 to play well with other tools Goal is to get features like I/O fuzzing to run concurrently with tools like PnPDTest, Sleep Stress with I/O, etc. Some functionality is being integrated into other tools Static Tools (Static Analysis, PREfast for Drivers) Look at IRP pair coverage data to find holes Use that data to identify areas where static analysis could find bugs in untested areas Sleep Stress with I/O, Disable_Enable_With_IO Work on improving concurrency in these as well

Old PnP Test coverage

New PnP Test coverage

Concurrency Coverage Tools Enable you to do your own analysis on in-house tests Tools will be available in the Windows 7 Beta

How to Improve Concurrency Coverage Today Combine existing tests Simple and low tech Look for crashes and hangs Write your own device-specific tests You know the behavior of your device and driver best

Create Your Own Device-specific Test Cases Combine your device-specific operations with: PnP Disable / Enable device Surprise remove device Power Close laptop lid Put system to sleep Examples I/O IRPS Query and change device data WMI and IOCTL IRPs

Automate These Test Cases Run our tests and your device-specific tests side-by-side WDTF test scripts we supply in the WLK PNPDTEST DC2 Write a WDTF Simple I/O plug-in for your device class Existing WDTF scripts and PNPDTEST will use this plug-in Enables you to easily write your own combinatorial WDTF test scripts using PnP and power

Call to Action Use the new tests in your regular day-to-day testing Use the Concurrency Coverage tools to identify areas for additional concurrency testing Improve your in-house tests to get better concurrency coverage

Resources WLK and WDK on the WHDC Web site WDTF documentation on MSDN Send feedback to