Generic API Test tool By Moshe Sapir Almog Masika.

Slides:



Advertisements
Similar presentations
Copyright © 2002 W. A. Tucker1 Chapter 1 Lecture Notes Bill Tucker Austin Community College COSC 1315.
Advertisements

Chapter 7 User-Defined Methods. Chapter Objectives  Understand how methods are used in Java programming  Learn about standard (predefined) methods and.
An Introduction to Java Programming and Object- Oriented Application Development Chapter 8 Exceptions and Assertions.
Chapter 16: Exception Handling C++ Programming: From Problem Analysis to Program Design, Fifth Edition.
Objectives In this chapter you will: Learn what an exception is Learn how to handle exceptions within a program See how a try / catch block is used to.
C++ Programming: From Problem Analysis to Program Design, Third Edition Chapter 16: Exception Handling.
FIT FIT1002 Computer Programming Unit 19 Testing and Debugging.
Software testing.
Engineering Problem Solving With C++ An Object Based Approach Fundamental Concepts Chapter 1 Engineering Problem Solving.
Inheritance and Class Hierarchies Chapter 3. Chapter 3: Inheritance and Class Hierarchies2 Chapter Objectives To understand inheritance and how it facilitates.
Generic API Test tool By Moshe Sapir Almog Masika Instructor Zvika Berkovic.
Programming Language Semantics Mooly SagivEran Yahav Schrirber 317Open space html://
The new The new MONARC Simulation Framework Iosif Legrand  California Institute of Technology.
Semantics with Applications Mooly Sagiv Schrirber html:// Textbooks:Winskel The.
C++ for Engineers and Scientists Third Edition
End-to-End Design of Embedded Real-Time Systems Kang G. Shin Real-Time Computing Laboratory EECS Department The University of Michigan Ann Arbor, MI
TIBCO Designer TIBCO BusinessWorks is a scalable, extensible, and easy to use integration platform that allows you to develop, deploy, and run integration.
Your Interactive Guide to the Digital World Discovering Computers 2012.
Chapter 1: Introduction to Visual Basic.NET: Background and Perspective Visual Basic.NET Programming: From Problem Analysis to Program Design.
The Center for Advanced Research In Software Engineering (ARISE) The University of Texas at Austin Reengineering of Large-Scale Polylingual Systems Mark.
© Janice Regan, CMPT 128, Jan CMPT 128 Introduction to Computing Science for Engineering Students Creating a program.
Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects.
Testing. Definition From the dictionary- the means by which the presence, quality, or genuineness of anything is determined; a means of trial. For software.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 23 Slide 1 Software testing Slightly adapted by Anders Børjesson.
CIS Computer Programming Logic
Software Engineering 2003 Jyrki Nummenmaa 1 CASE Tools CASE = Computer-Aided Software Engineering A set of tools to (optimally) assist in each.
Chapter 1 Introduction Dr. Frank Lee. 1.1 Why Study Compiler? To write more efficient code in a high-level language To provide solid foundation in parsing.
1 Software testing. 2 Testing Objectives Testing is a process of executing a program with the intent of finding an error. A good test case is in that.
An Introduction to Java Chapter 11 Object-Oriented Application Development: Part I.
1 Chapter 4: Selection Structures. In this chapter, you will learn about: – Selection criteria – The if-else statement – Nested if statements – The switch.
Computer Concepts 2014 Chapter 12 Computer Programming.
WSMX Execution Semantics Executable Software Specification Eyal Oren DERI
11 CORE Architecture Mauro Bruno, Monica Scannapieco, Carlo Vaccari, Giulia Vaste Antonino Virgillito, Diego Zardetto (Istat)
Lecture 1 Introduction Figures from Lewis, “C# Software Solutions”, Addison Wesley Richard Gesick.
Unit-1 Introduction Prepared by: Prof. Harish I Rathod
Property of Jack Wilson, Cerritos College1 CIS Computer Programming Logic Programming Concepts Overview prepared by Jack Wilson Cerritos College.
Modeling Component-based Software Systems with UML 2.0 George T. Edwards Jaiganesh Balasubramanian Arvind S. Krishna Vanderbilt University Nashville, TN.
The basics of the programming process The development of programming languages to improve software development Programming languages that the average user.
11 CORE Architecture Mauro Bruno, Monica Scannapieco, Carlo Vaccari, Giulia Vaste Antonino Virgillito, Diego Zardetto (Istat)
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
jFuzz – Java based Whitebox Fuzzing
User Profiling using Semantic Web Group members: Ashwin Somaiah Asha Stephen Charlie Sudharshan Reddy.
Understanding the Behavior of Java Programs Tarja Systa Software Systems Lab. Tampere Univ. Sookmyung Women’s Univ. PSLAB Choi, yoon jeong.
PROG Developing Robust Modular Software.. Objectives What do we want? Programmatic Elements in a Business System. Logic Layer. Persistence (Data)
Testing OO software. State Based Testing State machine: implementation-independent specification (model) of the dynamic behaviour of the system State:
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
Chapter 15: Exception Handling C++ Programming: Program Design Including Data Structures, Fifth Edition.
Concepts and Realization of a Diagram Editor Generator Based on Hypergraph Transformation Author: Mark Minas Presenter: Song Gu.
Inheritance and Class Hierarchies Chapter 3. Chapter Objectives  To understand inheritance and how it facilitates code reuse  To understand how Java.
Static Techniques for V&V. Hierarchy of V&V techniques Static Analysis V&V Dynamic Techniques Model Checking Simulation Symbolic Execution Testing Informal.
Chapter 1: Introduction to Visual Basic.NET: Background and Perspective Visual Basic.NET Programming: From Problem Analysis to Program Design.
CS 440 Database Management Systems Stored procedures & OR mapping 1.
Review A program is… a set of instructions that tell a computer what to do. Programs can also be called… software. Hardware refers to… the physical components.
© 2009 Artisan Software Tools. All rights reserved. Testing Solutions with UML/SysML Andrew Stuart, Matthew Hause.
Introduction to Problem Solving Programming is a problem solving activity. When you write a program, you are actually writing an instruction for the computer.
Introduction to Computer Programming Concepts M. Uyguroğlu R. Uyguroğlu.
Software Engineering Algorithms, Compilers, & Lifecycle.
 Problem Analysis  Coding  Debugging  Testing.
C++ for Engineers and Scientists Second Edition Chapter 4 Selection Structures.
CSE 1020:Using API Mark Shtern 1-1. Summary Delegation – Static Method, Object Client view vs Implementer view API, UML Errors Software Engineering Utility.
Lecture 1 Introduction Richard Gesick.
Introduction to JUnit CS 4501 / 6501 Software Testing
Object-Orientated Programming
FORMAL SYSTEM DEVELOPMENT METHODOLOGIES
An Introduction to Visual Basic .NET and Program Design
Introduction to JUnit CS 4501 / 6501 Software Testing
Review CSE116 2/21/2019 B.Ramamurthy.
CSE 1020:Software Development
COP4020 Programming Languages
Software Architecture & Design
Presentation transcript:

Generic API Test tool By Moshe Sapir Almog Masika

Agenda Testing practice in the industry The Automatic API test tool concept Attributes supplied to the developer Test coverage Design and implementation Tool demonstration

Testing practice in the industry Testing software module requires deep understanding of the module’s inner logic and its interfaces’ semantics Currently, dedicated tests are written to each software component Usually the tests do not try to retrieve functional information from the module’s code Changes in the software logic are resulted in changes in the test automation logic

Automatic API Test Tool Concept Enable the developer to add metadata to the modules code Use.NET attributes to represent the metadata The metadata should contain information which will enable automatic testing of the module Create automatic test tool that given the module and attributes can generate tests

Attributes supplied to the developer – Function level attributes Input-Output Assertion: – Assertion is defined by three expressions – If P is true before the function is run, then Q is true after the function is run, or one of the exceptions in L is thrown during execution – For double Sqrt(double x) the developer will define: P: x > 0 Q: ret ^ 2 = x L = {DivisionByZero }

Attributes supplied to the developer – Function level attributes (cont) Input Parameters attribute – Provide set of interesting assignments to the methods parameters – For double tan(double x) the developer will define the following assignments: X = pi X = 0 X = pi/2 X = *pi

Attributes supplied to the developer – Class level attributes Class Instances – Provide set of interesting instances of the class – For class Int32 the developer will define the following instances: 0 1 2^31 (-2^31)

Attributes supplied to the developer – Class level attributes (cont) Class Invariants – Define set of Boolean expressions that should be true after and before executing any member function on an instance of the class – For Account class: class Account { string Owner; int Balance; } The developer will define: Owner != string.Empty Balance >= 0

Test Coverage – Method level coverage General test – Run the method as many times as possible, using parameters supplied by the developer. If no parameters were supplied, try to generate the them Input – Output Assertion test – For each defined on the method, try to find an assignment that satisfies P, run the method and validate Q and L.

Test Coverage – Assembly level coverage Function call composition – Try to build a call graph of the functions in the assembly and generate the call paths. Validate input-output assertions and class invariants during the calls: For the classes: A, B, C, D And the functions: M1: A x B -> A M2: B x C -> D M3: A x D -> A Build the following graph: ABCD M1M2 M3

Design and implementation – Functional decomposition Test Attributes- Attributes that are available to the assembly developer. User Interface- Retrieve from the user the input required to run the test and to present him the test results. Test Engine- Responsible to run the tests and produce the test results. Results Reporting: Responsible to save the results in persistent file and redirect them to the graphic user interface.

Design and implementation – Functional decomposition Data flow between the different components:

Test Engine Design: The Algorithm design pattern

Test Attributes Hierarchy

Design and implementation – User Interface Structure

Test execution sequence diagram

Demonstration...

Conclusions.NET attributes can be used to keep information that will enable automatic testing of software The technique we have shown is limited to platforms that allow introduction of Meta data in the binary code (.NET, Java) The Syntax of defining expressive test attributes can be error prone (mainly due to the use of strings as function identifiers) The ability of such tools to verify large scale software is still to be investigated. Currently is seems can be used as first tire testing (BVT).