Integrating the Code during the Development Alexander Vakrilov Telerik Corporation www.telerik.com.

Slides:



Advertisements
Similar presentations
Object Oriented Analysis And Design-IT0207 iiI Semester
Advertisements

Presentation by Prabhjot Singh
1 Integration Testing CS 4311 I. Burnstein. Practical Software Testing, Springer-Verlag, 2003.
Features, Advantages & Disadvantages of a Methodology.
Taking a Waterfall Project Agile REF: Paul Geberth GCSS-J Project Manager Establishment of an Agile Project.
Chapter 29: Integration Jacob Harper. The Integration Approach The order of adding components to a system is crucial Benefits to careful integration –
Roadmap to Continuous Integration Testing and Benefits Gowri Selka, Walgreens Natalie Koltun, Walgreens May 20th, 2014 ©2013 Walgreen Co. All rights reserved.
Integration testing Satish Mishra
Coding Practices. What are Coding Practices ? Coding practices are a set of informal rules that the software development community has learned over time.
Integration and System Testing CSSE 376, Software Quality Assurance Rose-Hulman Institute of Technology March 29, 2007.
Illinois Institute of Technology
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
INTEGRATION TESTING ● After or during Unit Testing ● Putting modules together in a controlled way to incrementally build up the final system. ● Start with.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Software Testing Levels Philippe CHARMAN Last update:
Software Testing & Strategies
Software System Integration
BY RAJESWARI S SOFTWARE TESTING. INTRODUCTION Software testing is the process of testing the software product. Effective software testing will contribute.
Test-Driven Development “Test first, develop later!” –OCUnit.
Test-Driven Development Gary Brown Building better software one test at a time.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
1 Software Construction Software Construction Chapter 1.
University of Palestine software engineering department Testing of Software Systems Testing throughout the software life cycle instructor: Tasneem.
Understand Application Lifecycle Management
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
INT-Evry (Masters IT– Soft Eng)IntegrationTesting.1 (OO) Integration Testing What: Integration testing is a phase of software testing in which.
 CS 5380 Software Engineering Chapter 8 Testing.
Testing Basics of Testing Presented by: Vijay.C.G – Glister Tech.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman.1.
Testing -- Part II. Testing The role of testing is to: w Locate errors that can then be fixed to produce a more reliable product w Design tests that systematically.
© 2012 About Me Doing agile since 1999 Start ups / Enterprises Planigle - Consulting and Training Qcue – VP, Engineering.
TEST-1 6. Testing & Refactoring. TEST-2 How we create classes? We think about what a class must do We focus on its implementation We write fields We write.
TESTING LEVELS Unit Testing Integration Testing System Testing Acceptance Testing.
Prof. Aiken CS 169 Lecture 21 Software Process CS169 Lecture 2.
Fundamentals of The Shot Putting It All Together Following the Shot Plan for Every Shot Mental Foundation Physical Foundation FocusReleaseAnalysis.
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
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.
Software Testing Process By: M. Muzaffar Hameed.
Software Maintenance Speaker: Jerry Gao Ph.D. San Jose State University URL: Sept., 2001.
1 Integration Testing CS 4311 I. Burnstein. Practical Software Testing, Springer-Verlag, 2003.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Chapter 7 Implementation. Implementation Approaches F Big bang –Code entire system and test in an unstructured manner F Top-down –Start by implementing.
Software Engineering Saeed Akhtar The University of Lahore.
CSC 480 Software Engineering Test Planning. Test Cases and Test Plans A test case is an explicit set of instructions designed to detect a particular class.
Integration testing Integrate two or more module.i.e. communicate between the modules. Follow a white box testing (Testing the code)
UHCS 2005, slide 1 About Continuous Integration. UHCS 2005, slide 2 Why do you write Unit Test ? Improve quality/robustness of your code Quick feedback.
1 Software Testing Strategies: Approaches, Issues, Testing Tools.
CS451 Software Implementation and Integration Yugi Lee STB #555 (816) Note: This lecture was designed.
What is a level of test?  Defined by a given Environment  Environment is a collection of people, hard ware, software, interfaces, data etc.
Test Plan: Introduction o Primary focus: developer testing –Implementation phase –Release testing –Maintenance and enhancement o Secondary focus: formal.
Software Quality Assurance and Testing Fazal Rehman Shamil.
Dillon: CSE470: SYSTEM INTEGRATION 1 Build Plan l Development or integration strategies l Decide the order in which components of the system will be developed.
Build and Deployment Process Understand NCI’s DevOps and continuous integration requirements Understand NCI’s build and distribution requirements.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
1 Software Testing & Quality Assurance Lecture 15 Created by: Paulo Alencar Modified by: Frank Xu.
Software Engineering By Germaine Cheung Hong Kong Computer Institute Lecture 7.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
CMSC 2021 Software Development. CMSC 2022 Software Development Life Cycle Five phases: –Analysis –Design –Implementation –Testing –Maintenance.
Software Engineering Zhang Shuang
1 Punishment Through Continuous Delivery If it hurts, do it more often…
Tool Support for Testing Classify different types of test tools according to their purpose Explain the benefits of using test tools.
Software Testing Strategies for building test group
Group mambers: Maira Naseer (BCS ).
Lecture 09:Software Testing
Software System Integration
Baisc Of Software Testing
Integration Testing CS 4311
Continuous Integration
Integration Reading: McConnell, Code Complete, Ch. 29
Presentation transcript:

Integrating the Code during the Development Alexander Vakrilov Telerik Corporation

 Faster bug detection  Less bugs  Improved code quality  Shorter release cycle  Accurate status quo  Better customer relations  Improved morale 2 Source:

Phased or Incremental Source:

 Steps  Develop unit by unit  Combine all units into the big system  Test and debug the whole system  Hope everything will work together 4

 Phased integration comes late to the project  Problems might come from every unit or from combination of some units  Some typical problems:  Shared global state  Weak encapsulation  Poorly documented interfaces 5

 Integrate one unit at a time  Steps  Start with a small functional part of the system. It will a skeleton for the project  Develop a single unit (code, test, debug…)  Integrate the unit into the skeleton and verify its behavior 6

 Errors surface immediately  You always have something working  Better customer relations  Improved team confidence  Improved progress monitoring  More robust unit testing  Shorter development schedule 7 Source:

Integrate “your way” Source:

 Write classes on the top of the hierarchy first  Main Module / Main Window first  Benefits:  Control flow logic is tested early on  Conceptual problems are exposed quickly  Postpone design of low-level details  Disadvantages  Tricky integration parts are exposed last  There maybe no top component  Requires large number of stubs 9 Source:

 Write classes on the bottom of the hierarchy first  Benefits:  Troublesome low level integration problems are found quickly  Disadvantages  The big picture is blurry  High level integration starts later on  The whole system before must be designed before you start integration. 10 Source:

 Steps  Write classes on the top of the hierarchy first  Write low level integration pieces after that  Write middle level components last  Benefits:  Combines benefits of both top-down and bottom-up approaches 11 Source:

 Steps  Identify problematic (risky) areas  Start from most difficult and uncertain parts first  Benefits:  Problematic areas are exposed early on  Disadvantages  Initial progress is slow 12 Source:

 Steps  Develop one feature at a time  Integrate this feature back to the skeleton when its done  Benefits:  Removes scaffolding  Progress monitoring  Works well with Object-Orientation 13 Source:

 All mention approaches have benefits and draw back  Use what works for you and your team for this specific project  Don’t be afraid to mix and match them  Golden mean is the key to success 14 Source:

Keep your project healthy Source:

 Code is checked-in to the source repository  A build is triggered on a separate build machine  Source is compiled and tests are executed  The build either succeeded or failed 16 Source:

 Build is healthy all the time  Easy defect diagnostics and bug hunting  Constant availability of a "current" build for testing, demo, or release purposes  Early warning of broken/incompatible code 17 Source: content/uploads/2010/06/Financial-Health_Small.jpg content/uploads/2010/06/Financial-Health_Small.jpg

 Build often  Fixing a broken build is top priority  Create a penalty for breaking the build  Tests are part of the build  Automate the CI Build as much as possible 18 Source:

 Establish a build group  Do CI at any cost, even under pressure  Setup a nightly build 19 Source:

Questions?