Software Testing in Science



Similar documents
How To Develop Software

TESTING FRAMEWORKS. Gayatri Ghanakota

Part I Courses Syllabus

Data Centric Systems (DCS)

Meister Going Beyond Maven

HPC Wales Skills Academy Course Catalogue 2015

Design with Reuse. Building software from reusable components. Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14 Slide 1

>

Introduction to Automated Testing

Data Analysis with MATLAB The MathWorks, Inc. 1

An Increase in Software Testing Robustness: Enhancing the Software Development Standard for Space Systems

Applications to Computational Financial and GPU Computing. May 16th. Dr. Daniel Egloff

Viewpoint. Choosing the right automation tool and framework is critical to project success. - Harsh Bajaj, Technical Test Lead ECSIVS, Infosys

Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology

Basic Trends of Modern Software Development

Problems and Measures Regarding Waste 1 Management and 3R Era of public health improvement Situation subsequent to the Meiji Restoration

Overview of HPC Resources at Vanderbilt

LECTURE 1. SYSTEMS DEVELOPMENT

Oracle Insurance Policy Administration System Quality Assurance Testing Methodology. An Oracle White Paper August 2008

Continuous integration for databases using Redgate tools

TestTrack Test Case Management Quick Start Guide

FSW QA Testing Levels Definitions

Test Data Management

Fundamentals of Measurements

Software testing. Objectives

RUN THE RIGHT RACE. Keep pace with quickening release cycles. Discover automation with the human touch. CHOOSE A TEST TO RUN BELOW

Latest Trends in Testing. Ajay K Chhokra

The Deployment Pipeline

Introduction to MATLAB Gergely Somlay Application Engineer

WHITE PAPER. Peter Drucker. intentsoft.com 2014, Intentional Software Corporation

Establishing your Automation Development Lifecycle

Continuous integration for databases using

Agile Business Suite: a 4GL environment for.net developers DEVELOPMENT, MAINTENANCE AND DEPLOYMENT OF LARGE, COMPLEX BACK-OFFICE APPLICATIONS

Introduction to MATLAB for Data Analysis and Visualization

Software Engineering. Software Testing. Based on Software Engineering, 7 th Edition by Ian Sommerville

Enabling Continuous Delivery by Leveraging the Deployment Pipeline

A Comparison of Programming Languages for Graphical User Interface Programming

Creating a Java application using Perfect Developer and the Java Develo...

Automating with IBM SPSS

Software Development with Real- Time Workshop Embedded Coder Nigel Holliday Thales Missile Electronics. Missile Electronics

Ivan Girotto a,, Axel Kohlmeyer a,b,, David Grellscheid a,c, Shawn T. Brown d

4. Software Project Management

BMC Control-M Workload Automation

DANSE Software Quality Assurance

Developing Software in a Private workspace PM PMS

Intro to scientific programming (with Python) Pietro Berkes, Brandeis University

Formal Software Testing. Terri Grenda, CSTE IV&V Testing Solutions, LLC

How To Model Software Development Life Cycle Models

Building Platform as a Service for Scientific Applications

Agenda. Overview. Federation Requirements. Panlab IST Teagle for Partners

Automated Testing Options for PL/SQL Steven Feuerstein PL/SQL Evangelist, Quest Software

GPU for Scientific Computing. -Ali Saleh

Agile SPL-SCM: Agile Software Product Line Configuration and Release Management

USING DIRECTED ONLINE TUTORIALS FOR TEACHING ENGINEERING STATISTICS

CLARIION PERFORMANCE MONITORING SCRIPTING GUEST HOME PDF

Component Based Development in Software Engineering

Testing Introduction. IEEE Definitions

How to Survive a Software Audit through Effective Software Management. By John Tomeny, Sassafras Software Inc.

Scrum: A disciplined approach to product quality and project success.

Module 2. Software Life Cycle Model. Version 2 CSE IIT, Kharagpur

Software Engineering. Software Reuse. Based on Software Engineering, 7 th Edition by Ian Sommerville

F15. Towards a More Mature Test Process. Anne Mette-Hass. P r e s e n t a t i o n

Computer Software Engineering Career, Jobs, and Employment Information

Use service virtualization to remove testing bottlenecks

Why Test Automation Fails

CHAPTER 7 Software Configuration Management

The Customer. Manual and Automation Testing for a leading Enterprise Information Management (EIM) Solution provider. Business Challenges

Case study AllianzNet

The Importance of Defect Tracking in Software Development

NVIDIA CUDA GETTING STARTED GUIDE FOR MAC OS X

SmartBear Software Pragmatic Agile Development (PAD) Conceptual Framework

Parameters for Efficient Software Certification

Efficient Verification for Avionic Product Development

Digging for Gold: Business Usage for Data Mining Kim Foster, CoreTech Consulting Group, Inc., King of Prussia, PA

Smarter Balanced Assessment Consortium. Recommendation

To install Multifront you need to have familiarity with Internet Information Services (IIS), Microsoft.NET Framework and SQL Server 2008.

Instructional Design Framework CSE: Unit 1 Lesson 1

Using Provenance to Improve Workflow Design

Custom Web Development Guidelines

Top 10 Tips for Successful Software Development Management

Good FORTRAN Programs

Your Software Quality is Our Business. INDEPENDENT VERIFICATION AND VALIDATION (IV&V) WHITE PAPER Prepared by Adnet, Inc.

REPUBLIC POLYTECHNIC AND BMC SOFTWARE UNVEIL SINGAPORE S FIRST ACADEMIC QUALIFICATION IN IT SERVICE MANAGEMENT. Pip Livingstone.

Transcription:

Software Testing in Science Dr. Axel Kohlmeyer Senior Scientific Computing Expert Information and Telecommunication Section The Abdus Salam International Centre for Theoretical Physics http://sites.google.com/site/akohlmey/ akohlmey@ictp.it

Scientific Software Development Idiosyncrasies Scientific software is developed to solve specific problems, not to generate revenue => less pressure to prove a feature is working The developer is often also the customer => superficial testing is considered adequate, since you have confidence in your capabilities => How can the software be wrong if it gives the right answer, anyway? Many developers have no formal training in software engineering, so they don't even know 2

More Scientific Software Development Idiosyncrasies There is little credit to be had for software development compared to using the software => any additional effort invested besides the minimum is reducing the competitiveness For the same reason, it is difficult to obtain funding for scientific software development The bulk of the software development work is done by inexperienced people (students, post docs); advisers are not trained in management (of software development projects) 3

Even More Scientific Software Development Idiosyncrasies The correctness of the result is not affected by the quality or efficiency of the implementation A specific application may only be needed once Goals and tasks of scientific software for research are not always well defined Applications are often a complex composite of many units and it is difficult to test this anything but the complete application Applications use inexact floating-point math 4

Why Worry About This Now? Computers become more powerful all the time and more complex problems can be addressed Use of computational tools becomes common among non-developers and non-theorists -> many users could not implement the whole applications that they are using by themselves Current hardware trends (SIMD, NUMA, GPU) make writing efficient software complicated Solving complex problems requires combining expertise from multiple domains or disciplines 5

Ways to Move Forward Write more modular, more reusable software => build frameworks and libraries Write software that can be modified on an abstract level or where components can be combined without having to recompile => combine scripting with compiled code Write software where all components are continuously (re-)tested and (re-)validated Write software where consistent documentation is integral part of the development process 6

Unit- and Regression Testing are Opportunities Gain more confidence in your application Writing unit tests helps to understand problems => conceptual problems surface before use Writing unit tests encourages modular code => more code reuse, better maintainability Automated regression testing helps discovering inconsistencies before a software is released Adding tests is easy while implementing a feature; writing a test library after is daunting 7

What to Test Many fast tests for single feature/unit Output does not have to be meaningful science; it is sufficient to get the correct wrong result Tests should be as independent as possible Tests need to cover all code paths Also need to test for all cases that should raise warnings or error conditions Few specific reference runs of the whole code Test parallel applications in serial and parallel 8