Test-Driven Automation: Adopting Test-First Development to Improve Automation Systems Engineering Processes



Similar documents
Test-Driven Automation: Adopting Test-First Development to Improve Automation Systems Engineering Processes

Agile Software Engineering Practice to Improve Project Success

Software Process Improvement Initiatives based on Quality Assurance Strategies: A QATAM Pilot Application

Process Automation and Quality Management in Multi-Disciplinary Engineering Environments

Improving Video Game Development: Facilitating Heterogeneous Team Collaboration Through Flexible Software Processes

Evaluating Tools that Support Pair Programming in a Distributed Engineering Environment

Agile Software Development Methodologies and Its Quality Assurance

A Controlled Experiment on Team Meeting Style in Software Architecture Evaluation

Investigation of Adherence Degree of Agile Requirements Engineering Practices in Non-Agile Software Development Organizations

Improving Quality Assurance in Automation Systems Development Projects

Engineering Project Management Using The Engineering Cockpit

An SME Transition from Plan-Driven to Hybrid Project Management with Agile Software Development Methods

Basic Trends of Modern Software Development

Systems Analysis and Design

Best-Practice Software Engineering: Software Processes to Support Project Success. Dietmar Winkler

Early Software Product Improvement with Sequential Inspection Sessions: An empirical Investigation of Inspector Capability and Learning Effects

Engineering Object Change Management Process Observation in Distributed Automation Systems Projects

Investigating the Temporal Behavior of Defect Detection in Software Inspection and Inspection-Based Testing

Software Engineering

Towards a Semantic Knowledge Base on Threats to Validity and Control Actions in Controlled Experiments

Chap 1. Introduction to Software Architecture

Comparing Agile Software Processes Based on the Software Development Project Requirements

Issues in Internet Design and Development

Empirical Software Engineering Introduction & Basic Concepts

V. Phani Krishna et al, / (IJCSIT) International Journal of Computer Science and Information Technologies, Vol. 2 (6), 2011,

1.1 The Nature of Software... Object-Oriented Software Engineering Practical Software Development using UML and Java. The Nature of Software...

Learning and Coaching Agile Methods. Görel Hedin Computer Science Lund University, Sweden

Testing in Scrum Projects

"Bezpieczny Projekt"

Agile Tester Foundation Course Outline

Advanced Test-Driven Development

International Association of Scientific Innovation and Research (IASIR) (An Association Unifying the Sciences, Engineering, and Applied Research)

The Role of CM in Agile Development of Safety-Critical Software

Chapter 1 The Systems Development Environment

Scaling Down Large Projects to Meet the Agile Sweet Spot

Economic Risk-Based Management in Software Engineering: The HERMES Initiative

An Overview of Quality Assurance Practices in Agile Methodologies

Scrum and Testing The end of the test role Bryan Bakker 20 maart 2012

Investigating the Impact of Experience and Solo/Pair Programming on Coding Efficiency: Results and Experiences from Coding Contests

Transition to Agile Development

Abdulrahman M. Qahtani, Gary B. Wills, Andrew M. Gravell School of Electronics and Computer Science, University of Southampton, UK

Assuming the Role of Systems Analyst & Analysis Alternatives

Software Engineering and Scientific Computing

5/30/2012 PERFORMANCE MANAGEMENT GOING AGILE. Nicolle Strauss Director, People Services

Efficient Agent Based Testing Framework for Web Applications

From Story Points to COSMIC Function Points in Agile Software Development A Six Sigma perspective

Software Quality and Agile Methods

IBM Rational systems and software solutions for the medical device industry

A Lightweight Semi-automated Acceptance Test-Driven Development Approach for Web Applications

Thesis seminar THE7TF007

Aspects of Software Quality Assurance in Open Source Software Projects: Two Case Studies from Apache Project

Agile Techniques for Object Databases

Software Development Under Stringent Hardware Constraints: Do Agile Methods Have a Chance?

Service-Oriented Distributed Control Software Design for Process Automation Systems

Design of Acceptance Test Process through Comparative Analysis of the Test Automation Technique

PENETRATION TESTING IN AGILE SOFTWARE DEVELOPMENT PROJECTS

Prepared by: Your Name (metric card number)

The W-MODEL Strengthening the Bond Between Development and Test

Markus Dick, Stefan Naumann {m.dick, s.naumann}(at)umwelt-campus.de

D25-2. Agile and Scrum Introduction

AGILE BUSINESS INTELLIGENCE

Applying Agile Methods in Rapidly Changing Environments

A Web Academic Project Manager based on MVC Evolutionary Acquisition IRPM

4. Multiagent Sys stems Design. Part 2: The PROMETHEUS methodology.

The Role of Controlled Experiments in Software Engineering Research

CASSANDRA: Version: / 1. November 2001

Accelerating Time to Market with Agile Testing

THE EVOLUTION OF COMPONENT BASED SOFTWARE ENGINEERING FROM THE TRADITIONAL APPROACH TO CURRENT PRACTICES

Integrated Development of Distributed Real-Time Applications with Asynchronous Communication

Application of UML in Real-Time Embedded Systems

A Component-Based Design Pattern for Improving Reusability of Distributed Automation Programs

Some Research on Agile Software Development

Software Process and Models

Extreme Programming. As software organizations continue to move

Agile Software Project Management with Scrum

55. IWK Internationales Wissenschaftliches Kolloquium International Scientific Colloquium

Agile Software Development compliant to Safety Standards?

Systematization of Requirements Definition for Software Development Processes with a Business Modeling Architecture

SOPLE-DE: An Approach to Design Service-Oriented Product Line Architectures

Modern Industrial Automation Software Design

AGILE SOFTWARE TESTING

Open S-BPM: Goals and Architecture

Agile Model-Driven Modernization to the Service Cloud

Software Engineering/Courses Description Introduction to Software Engineering Credit Hours: 3 Prerequisite: (Computer Programming 2).

Chapter 2 Critical Success Factors for Global Software Development

Contents. 3 Agile Modelling Introduction Modelling Misconceptions 31

Agile! Springer. The Good, the Hype and the Ugly. Bertrand Meyer

How to make impact with journal publications on Software Process Improvement

Use of Agent-Based Service Discovery for Resource Management in Metacomputing Environment

Contents. Introduction and System Engineering 1. Introduction 2. Software Process and Methodology 16. System Engineering 53

The Impact of Leadership in. Agile Information System Development Projects: A Pitch

Component-Oriented Engineering

EMPIRICAL STUDY OF THE EVOLUTION OF AGILE-DEVELOPED SOFTWARE SYSTEM IN JORDANIAN'S TELECOM

Agile Development Overview

Umbrella: A New Component-Based Software Development Model

Trends in Embedded Software Development in Europe. Dr. Dirk Muthig

Model Driven Testing of Web Applications Using Domain Specific Language

Build Your Project Using Scrum Methodology #3 of a Series, by Pavan Kumar Gorakavi, M.S., M.B.A, G.M.C.P, C.A.P.M.

Keywords document, agile documentation, documentation, Techno functional expert, Team Collaboration, document selection;

21 EU Partners distributed team environment Software Quality Plan played a critical role.

Transcription:

Test-Driven Automation: Adopting Test-First Development to Improve Automation Systems Engineering Processes Dietmar Winkler Stefan Biffl Thomas Östreicher Institute of Software Technology and Interactive Systems, Vienna University of Technology dietmar.winkler@tuwien.ac.at http://qse.ifs.tuwien.ac.at

Motivation Added value of automation systems with software components: Required flexibility of automation systems. Increased complexity of software components in automation systems products. Increased product quality by systematic software engineering approaches during development and operation. Observations in Automation Systems Development Practice: Functional, testing, and diagnosis aspects are scattered over the code and hinder efficient (automated) systems testing. Limitations in a systematic development process approach. Challenges & Goals: Need for functional, testing, and diagnosis aspects during development and operation within a hierarchical systems design. Efficient (automated) testing strategies. Need for flexible and systematic systems development processes. Application of Best-Practices learned from business IT software development in the automation systems domain (e.g., test-first approach and model application).

Test-First Development in Business IT Software Development Test-Driven Development Steps: 1. Think. (a) selection of new requirements and (b) test case definition. 2. Red. Implementation and execution of test cases (failed). 3. Green. Implementation of functionality and test case execution until all tests are successful. 4. Refactor existing code without modifying functional behaviour and test case execution. Continue at step 1. Continuous Integration and Test: Frequent test runs Immediate Feedback on test results (e.g., daily builds) Efficient regression testing. Automation and Tool support Requirements and Specification Requirement A Test Case Generation Test Case A1 Test Case A2 Implementation and Test Case Execution Test Run during Continuous Integration... Run 1 Run 2 Run 3... ok ok ok ok ok ok ok Requirement B Test Case B1 ok ok ok Test Case B2 ok Requirement C Test Case C1 ok ok ok ok Test Case C2

Research Approach Need for flexible systems development and efficient testing approaches in the automation systems domain lead to: Strict separation of functional, testing, and diagnosis aspects. Application of test-first development to increase testing efficiency. Enriched automation systems development by systematic software engineering approaches, applying Lessons learned from business IT software development. Test-first development (TFD) in the automation systems domain. Model-support to foster test-first in systematic systems development. Solution approach: Concept for a test-driven automation component (TDA component). Test-First development based on a systematic process approach (W-Model). First evaluation in a prototype study: bottle sorting application.

Concept of a TDA Component Strict separation of functional, diagnosis, and test components. Interaction via defined interfaces within the TDA component and to lower-level and upper-level TDA components. Hierarchical systems design of typical automation systems. Component structure: Logic: Represents functional aspects. Diagnosis: (a) Pass messages from logical aspects to lower-level components and (b) monitor systems responses. Test: Set system in a certain state (functional behaviour) including tests of systems states which should not be reached (e.g. an error state).

Test-First in Software Development Based on the W-Model (Baker et al, 2007) or V-Modell XT (Biffl et al, 2006). Iteration 1 Iteration 2 Iteration n Requirements Definition Test Case Generation Requirements Systems and Acceptance Tests Funct. & Technical Systems Design Test Case Generation Architecture & Integration Integration Tests Component Specification Test Case Generation Component Unit Tests Implementation of Test-Driven Automation Components TDA Component Automation Function Testing Function Diagnosis Function

Test-Levels in TDA Based on the W-Model focusing on Requirements based test cases. Test cases based on architecture, design and integration. Component-based test cases. Test case definition on every level Help Identifying success-critical issues on different levels. Addresses individual stakeholder groups.

Sorting Application Prototype Bottle sorting application to illustrate TDA component application. Basic requirements: Identification of individual items on a conveyor. Stop at the appropriate loading station (stopper unit). Grapping of the item (vacuum gripper) and moving the item into a box. Component Structure.

TDA Component Structure TDA component encapsulates functional, diagnosis, and test aspects. Automation control via automation interface (e.g., sorting call) Diagnosis: reporting the sorting status for (a) higher-level diagnosis components and (b) handling unit automation control unit. Test control to set the system in a certain state, e.g., an error state (set/clear gripper error). Observation of system response via diagnosis and system reaction via automation aspects. <<interface>> Automation <<interface>> Diagnosis <<interface>> Test + sort() : void + partssorted() : int + clear GripperError(): void + setgrippererror() : Void Automation Functionality Diagnosis Functionality Test Functionality Handling Unit

System Level Test Expected user behaviour on requirements level. Test Cases based on use case models and requirements from user perspective. Advantages: Common language between different disciplines. Early defect detection. Enhanced understanding of the customer requirements. Test cases as vehicle for communication between stakeholders

Integration & Unit Tests State charts are common practices in the automation systems domain. Ability for automated code generation. Modelling of state charts including error states. Example: handling unit on component level.

Mocking with State Charts Mocking is necessary to Simulate missing systems behaviour, i.e., code which is not available so far. Simulation of hardware behaviour. Simulation of error cases, i.e., system states which cannot be reached during regular machine behaviour. State charts support modelling error states for testing purposes.

Lessons Learned & Future Work Increased flexibility and (software) complexity in the automation systems domain lead to new challenges in software construction. Lessons learned from business IT software development can help systems engineers in constructing high-quality products in short iterations. The concept of Test-Driven Automation applies: 1. Systematic software engineering process in the automation systems domain. 2. Test-first development on various levels of details to systematically increase product quality in short iterations. 3. A strict separation of functional, test, and diagnosis aspects (TDA component structure) enables systematic product development including interaction over clearly defined interfaces. Lessons learned from a pilot application showed the expected benefits in a small show case application. Future work includes Refining the process model and the TDA structure including diagnosis functions. Investigating the scalability of the TDA concept in a larger project context. Elaborating on a larger pilot application with industry partners with focus on data collection to empirically investigate the expected benefits of the novel TDA concept.

Thank you for your Attention Test-Driven Automation: Adopting Test-First Development to Improve Automation Systems Engineering Processes Dietmar Winkler Vienna University of Technology Institute of Software Technology and Interactive Systems http://qse.ifs.tuwien.ac.at Dietmar.Winkler@tuwien.ac.at

Referenzen Baker P., Dai Z.R., Grabowski J.: Model-Driven Testing: Using the UML Testing Profile, Springer, 2007. Beedle M., Schwaber K.: Agile Software Development with Scrum, Prentice Hall, 2008. Biffl S., Winkler D., Höhn R., Wetzel H.: Software Process Improvement in Europe: Potential of the new V-Modell XT and Research Issues, in Journal Software Process: Improvement and Practice, Volume 11(3), pp.229-238, Wiley, 2006. Damm L.-O., Lundberg L.: Quality Impact of Introducting Component-Level Test Automation and Test-Driven Development, Proc. EuroSPI, 2007. Drusinksy D.: Modeling and Verification using UML Statecharts, 2006. Duvall M.P., Matyas S., Glover A.: Continuous Integration: Improving Software Quality and Reducing Risk, Addison-Wesley, 2007. Karlesky M., Williams G.: Mocking the Embedded World: Test-Driven Development, Continuous Integration, and Design Patterns, Proc. Emb. Systems Conf, CA, USA, 2007. Sünder C., Zoitl A, Dutzler C.: Functional Structure-Based modelling of Automation Systems, Jounal of Manufacturing Research, 1(4), pp405-420, 2007. Vyatkin V., Christensen J.H., Lastra J.L.M.: OOONEIDA: An Open, Object-Oriented Knowledge Economy for Intelligent Industrial Automation, IEEE Trans. on Industrial Informatics, vol. 1, pp. 4-17, 2005. Zhang W., Diedrich C., Halang W.A.: Specification and Verification of Applications Based on Function Blocks, Computer-Based Software Development for Embedded Systems (LNCS 3778), Springer Verlag Berlin Heidelberg, pp. 8-34, 2005.