Improving Testability Dave Catlett Test Architect, Microsoft

Slides:



Advertisements
Similar presentations
Stephen Vance - CM and the Principles of Agile Software Development
Advertisements

© by cellconsult.com Application Testing & Test Management.
Platinum Sponsor LARGE SCALE REFACTORING Volodymyr Fedak.
Test Automation Success: Choosing the Right People & Process
Test-Driven Development José Almeida, Microsoft
Software Frame Simulator (SFS) Technion CS Computer Communications Lab (236340) in cooperation with ECI telecom Uri Ferri & Ynon Cohen January 2007.
CS540 Software Design Lecture 1 1 Lecture 1: Introduction to Software Design Anita S. Malik Adapted from Budgen (2003) Chapters 1.
Software testing.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
1 Steve Chenoweth Tuesday, 10/04/11 Week 5, Day 2 Right – Typical tool for reading out error codes logged by your car’s computer, to help analyze its problems.
Development Processes UML just is a modeling technique, yet for using it we need to know: »what do we model in an analysis model? »what do we model in.
Requirements Analysis 5. 1 CASE b505.ppt © Copyright De Montfort University 2000 All Rights Reserved INFO2005 Requirements Analysis CASE Computer.
XP2007b Extreme Code Quality Dongsu Park Venkatesh BS.
1 FM Overview of Adaptation. 2 FM RAPIDware: Component-Based Design of Adaptive and Dependable Middleware Project Investigators: Philip McKinley, Kurt.
Design of SCS Architecture, Control and Fault Handling.
PRESENTED BY SANGEETA MEHTA EECS810 UNIVERSITY OF KANSAS OCTOBER 2008 Design Patterns.
Introduction to Software Testing
Software Architecture. Agenda " Why architect? " What is architecture? " What does an architect do? " What principles guide the process of architecting?
Test-Driven Development “Test first, develop later!” –OCUnit.
UML and Object Oriented Concepts
Introduction to the Enterprise Library. Sounds familiar? Writing a component to encapsulate data access Building a component that allows you to log errors.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 23 Slide 1 Software testing Slightly adapted by Anders Børjesson.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
@benday #vslive Better Unit Tests through Design Patterns: Repository, Adapter, Mocks, and more… Benjamin
Architecture of.NET Framework .NET Framework ٭ Microsoft.NET (pronounced “dot net”) is a software component that runs on the Windows operating.
Improving Software Testability Adam Knight – Test Team Leader, Clearpace Ltd. April 29 th 2009.
MVC and MVP. References enter.html enter.html
Software Design Refinement Using Design Patterns Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
Software testing techniques 3. Software testing
CSE 303 – Software Design and Architecture
Refactoring Cristescu Marilena. Definitions Loose Usage: Reorganize a program(or something) As a noun: a change made to the internal structure of some.
Sadegh Aliakbary Sharif University of Technology Spring 2012.
Engr. M. Fahad Khan Lecturer Software Engineering Department University Of Engineering & Technology Taxila.
Ch 1. A Python Q&A Session Spring Why do people use Python? Software quality Developer productivity Program portability Support libraries Component.
Testing in UP1 Testing as part of the Unified Process (UP)
Software Architecture and Design Dr. Aldo Dagnino ABB, Inc. US Corporate Research Center October 23 rd, 2003.
Mastergoal Machine Learning Environment Phase III Presentation Alejandro Alliana CIS895 MSE Project – KSU.
From Quality Control to Quality Assurance…and Beyond Alan Page Microsoft.
Team Think For You. Outline  Introduction  Process  Requirements Engineering  Architecture  Detailed Design  Testing  Demo  Extensibility  Conclusions.
Yazd University, Electrical and Computer Engineering Department Course Title: Advanced Software Engineering By: Mohammad Ali Zare Chahooki 1 Machine Learning.
Introducing Managed Services Wolf Gilbert Architect Evangelist Microsoft Corporation.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 11 Slide 1 Design.
Software Design: Principles, Process, and Concepts Getting Started with Design.
Chapter 2 Object-Oriented Paradigm Overview. Getting Acquainted with the Class Project Read the requirements specification carefully Make note of any.
11 Jul 2005CSE403, Summer'05, Lecture 08 Lecture 08: Best Practices for Software Design (Part I) Valentin Razmov.
Arch-1 9.Architecture. Arch-2 What’s Architecture? Description of sub-system –Components/sub-systems –Their interaction Framework for communication.
Henrik Bærbak Christensen1 Test Driven Development “TDD” Summary.
Ivar Jacobson, Grady Booch, and James Rumbaugh The Unified Software Development Process Addison Wesley, : James Rumbaugh's OOMD 1992: Ivar Jacobson's.
Refactoring Agile Development Project. Lecture roadmap Refactoring Some issues to address when coding.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
T EST T OOLS U NIT VI This unit contains the overview of the test tools. Also prerequisites for applying these tools, tools selection and implementation.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
CPSC 872 John D. McGregor Session 31 This is it..
ISQB Software Testing Section Meeting 10 Dec 2012.
Embedded Systems Software Engineering
Mantas Radzevičius ifm-2/2
Unit Testing - solid fundamentals
Requirements Validation – II
Software Engineering (CSI 321)
Chapter 8 – Software Testing
CSE 403 Software Engineering
Software testing strategies 2
Introduction to Software Testing
Introduction to JUnit CS 4501 / 6501 Software Testing
Software Training Program for Dot Net. Software is the main source of income for most of the people in the present scenario. People opting computer based.
ONAP Architecture Principle Review
Presentation transcript:

Improving Testability Dave Catlett Test Architect, Microsoft

Agenda What is testability? Why is testability important? Background: What is a test? Determining testability: SOCK Improving testability Q&A

What is testability? The degree to which components and systems are designed and implemented to make it easier for tests to achieve complete and repeatable code path coverage and simulate all usage situations in a cost efficient manner. In other words: How easy is it to test?

Why is testability important? Helps enforce good design principles. Reduces the time to diagnose unexpected behavior. Improves manageability and supportability. Provides the building blocks for self- diagnosing and self-correcting software. Speeds test development while increasing the depth and quality of automated tests.

Background: What is a test? Making sure the component works as expected and has the expected effect on the system as a whole in a repeatable and reliable way. Anatomy of a test case: SEARCH – Setup – Execution – Analysis – Reporting – Cleanup – Help

Determining testability: SOCK Simplicity – Reducing cost of testing at each phase of SEARCH – Design Observability – Exposing state (aka Visibility) Control – Exercising every nook & cranny as efficiently as possible. Knowledge of expected results – Is observed behavior is correct?

Improving Simplicity Make setup and configuration easy – Componentize – Allow multiple installs with varying configs on same machine Use good design principles – Strong cohesion – Loose coupling – Low redundancy

Improving Observability Expose component state – Magic numbers (Any value that controls code path execution.) – Resource usage – State transition information – API in/out parameters Tracing – Good tracing library – Observer or Visitor patterns can help maintain good design Be careful of exposing security info!

Improving Control Wrap interfaces you have no control over – Forces behavior you need to test your component – Facilitates fault injection tools Windows: Holodeck, AppVerifier Expose Magic Numbers to become configurable at runtime. Be mindful of security

Improving Knowledge of expected results Code contracts in source code Document expected behavior in all situations Document end-to-end user scenarios Future: Use modeling (machine readable specifications)

Q&A

Resources Design Patterns Explained: A new perspective on object-oriented design. Alan Shalloway, James Trott. Addison Wesley, – Observer pattern (tracing option for new classes) – Visitor pattern (tracing option for existing classes) – Adapter pattern (wrapping for fault injection) Refactoring: Improving the design of existing code. Martin Fowler, et al. Addison-Wesley, – Refactoring to improve design helps testability at the same time. – Emergent Design, other materials Fault injection tools for Windows – Holodeck: fault injection tool. – AppVerifier: Google: CCCC cyclomatic complexity tool Brett Pettichord, Industry Testability Guru – Design for Testability: – QA-related papers: – Other: