Principles of Software Testing for Testers Module 1

  • Slides: 29
Download presentation
Principles of Software Testing for Testers Module 1: Software Engineering Practices (Some things Testers

Principles of Software Testing for Testers Module 1: Software Engineering Practices (Some things Testers should know about them)

Objectives w Identify some common software development problems. w Identify six software engineering practices

Objectives w Identify some common software development problems. w Identify six software engineering practices for addressing common software development problems. w Discuss how a software engineering process provides supporting context for software engineering practices. Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved 2

Module 1 Content Outline (Agenda) èSoftware development problems w Six software engineering practices w

Module 1 Content Outline (Agenda) èSoftware development problems w Six software engineering practices w Supporting software engineering practices with process Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved 3

Symptoms of Software Development Problems û User or business needs not met û Requirements

Symptoms of Software Development Problems û User or business needs not met û Requirements churn û Modules don’t integrate û Hard to maintain û Late discovery of flaws û Poor quality or poor user experience û Poor performance under load û No coordinated team effort û Build-and-release issues Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved 4

Trace Symptoms to Root Causes Needs not met Incorrect requirements Software Engineering Practices Develop

Trace Symptoms to Root Causes Needs not met Incorrect requirements Software Engineering Practices Develop Iteratively Requirements churn Ambiguous communications Manage Requirements Modules don’t fit Brittle architectures Hard to maintain Overwhelming Undetected complexity inconsistencies Undetected Insufficient testing inconsistencies Subjective assessment Insufficient testing Symptoms Late discovery Poor quality Poor performance Colliding developers Build-and-release Root Causes Subjective assessment Model Visually (UML) Continuously Verify Quality Waterfall development Uncontrolled change Insufficient automation Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved Use Component Architectures 5 Manage Change

Module 1 Content Outline (Agenda) w Software development problems èSix software engineering practices w

Module 1 Content Outline (Agenda) w Software development problems èSix software engineering practices w Supporting software engineering practices with process Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved 6

Practice 1: Develop Iteratively Software Engineering Practices Develop Iteratively Manage Requirements Use Component Architectures

Practice 1: Develop Iteratively Software Engineering Practices Develop Iteratively Manage Requirements Use Component Architectures Model Visually (UML) Continuously Verify Quality Manage Change Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved 7

Waterfall Development Characteristics Waterfall Process Requirements Analysis Design Code & Unit Test Integrate System

Waterfall Development Characteristics Waterfall Process Requirements Analysis Design Code & Unit Test Integrate System Test Total Elapsed Time Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved 8 w Delays confirmation of critical risk resolution w Measures progress by assessing work products that are poor predictors of time to completion w Delays and aggregates integration and testing w Precludes early deployment w Frequently results in major unplanned project extensions

Iterative Development Produces an Executable Analysis & Design Implementation Requireme nts Planning Manageme nt

Iterative Development Produces an Executable Analysis & Design Implementation Requireme nts Planning Manageme nt & Environme nt Evaluation Each iteration Deployment results in an executable release Initial Planning Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved Test 9

Risk Profiles Risk Waterfall Risk Reduction Iterative Risk Time Iterative development drives risks out

Risk Profiles Risk Waterfall Risk Reduction Iterative Risk Time Iterative development drives risks out early. Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved 10

Practice 2: Manage Requirements Software Engineering Practices Develop Iteratively Manage Requirements Use Component Architectures

Practice 2: Manage Requirements Software Engineering Practices Develop Iteratively Manage Requirements Use Component Architectures Model Visually (UML) Continuously Verify Quality Manage Change Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved 11

Manage Requirements Map of the Territory Problem Space Needs Tra cea Features Solution Space

Manage Requirements Map of the Territory Problem Space Needs Tra cea Features Solution Space bil ity Software Requirements Tests Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved The Product To Be Built Design 12 User Docs

Concepts Use cases are a rich source for identifying test scenarios Actor An actor

Concepts Use cases are a rich source for identifying test scenarios Actor An actor represents a person or another system that interacts with the system. A use case defines a sequence of actions a system performs that yields a result of observable value to an actor. Use Case Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved 13

Practice 3: Use Component Architectures Software Engineering Practices Develop Iteratively Manage Requirements Use Component

Practice 3: Use Component Architectures Software Engineering Practices Develop Iteratively Manage Requirements Use Component Architectures Model Visually (UML) Continuously Verify Quality Manage Change Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved 14

Resilient Component Based Architectures w Resilient § Meets current and future requirements § Improves

Resilient Component Based Architectures w Resilient § Meets current and future requirements § Improves extensibility § Enables reuse § Encapsulates system dependencies w Component based § Reuse or customize components § Select from commercially available components § Evolve existing software incrementally Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved 15

Purpose of a Component Based Architecture w Basis for reuse § Component reuse §

Purpose of a Component Based Architecture w Basis for reuse § Component reuse § Architecture reuse w Basis for project management § Planning § Staffing § Delivery Application specific Business specific w Intellectual control § Manage complexity § Maintain integrity Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved Componentbased Architecture with layers Middleware System software 16

Practice 4: Model Visually (UML) Software Engineering Practices Develop Iteratively Manage Requirements Use Component

Practice 4: Model Visually (UML) Software Engineering Practices Develop Iteratively Manage Requirements Use Component Architectures Model Visually (UML) Continuously Verify Quality Manage Change Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved 17

Why Model Visually? w To help manage complexity § To capture both structure and

Why Model Visually? w To help manage complexity § To capture both structure and behavior § To show system elements fit together § To hide or expose details as appropriate w To keep design and implementation consistent w To promote unambiguous communication § UML provides one language for all practitioners Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved 18

Visual Modeling Using UML Diagrams Use-case diagram Class diagram Statechart diagram Document. List File.

Visual Modeling Using UML Diagrams Use-case diagram Class diagram Statechart diagram Document. List File. Mgr Document add( ) delete( ) fetch. Doc( ) sort. By. Name( ) Use Case 1 name : int docid : int num. Field : int get( ) open( ) close( ) read( ) sort. File. List( ) create( ) fill. Document( ) File. List f. List Actor A Actor B add( ) delete( ) read() fill the code. . 1 Use Case 2 rep File Repository Use Case 3 (from Persistence) read( ) Grp. File name : char * = 0 read. Doc( ) read. File( ) Use-case diagrams outline the system scope Collaboration 9: sort. By. Name ( ) main. Wnd : Main. Wnd 1: Doc view request ( ) L 2: fetch. Doc( ) g. File : Grp. File 4: create ( ) 8: fill. File ( ) user : Clerk file. Mgr : File. Mgr 3: create ( ) diagram 6: fill. Document ( ) 7: read. File ( ) 5: read. Doc ( ) document : Document repository : Repository read( ) open( ) create( ) fill. File( ) Repository Document. List File. Manager Deployment diagram Windows 95 Document ¹®¼ °ü¸® Ŭ¶óÀ̾ðÆ®. EXE ¹®¼ °ü¸® ¾ÖÇø´ Windows NT Solaris Graphic. File ¹®¼ °ü¸® ¿£Áø. EXE File Alpha UNIX File. List ÀÀ¿ë¼ ¹ö. EXE Windows NT IBM Mainframe µ¥ÀÌŸº£À̽º¼ ¹ö main. Wnd user ƯÁ¤¹®¼ ¿¡ ´ëÇÑ º¸±â¸¦ » ç¿ëÀÚ°¡ ¿äû ÇÑ´Ù. file. Mgr : File. Mgr document : Document g. File Component diagram repository 1: Doc view request ( ) 2: fetch. Doc( ) 3: create ( ) 4: create ( ) 5: read. Doc ( ) È ÀÏ°ü¸®ÀÚ´ ÀÐ¾î¿ ¹®¼ ÀÇ Á¤º¸¸¦ ÇØ´ç ¹®¼ °´Ã¼¿¡ ¼³Á¤À» ¿äû ÇÑ´Ù. 6: fill. Document ( ) 7: read. File ( ) Sequence diagram Forward and Reverse Engineering 8: fill. File ( ) È ¸é °´Ã¼´ ÀоîµéÀÎ °´Ã¼µé¿¡ ´ëÇØ À̸§º°·Î Á¤·ÄÀ» ½ÃÄÑ È ¸é¿¡ º¸¿©ÁØ´Ù. 9: sort. By. Name ( ) Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved 19 Target System

Practice 5: Continuously Verify Quality Software Engineering Practices Develop Iteratively Manage Requirements Use Component

Practice 5: Continuously Verify Quality Software Engineering Practices Develop Iteratively Manage Requirements Use Component Architectures Model Visually (UML) Continuously Verify Quality Manage Change Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved 21

Continuously Verify Quality – in each Iteration A Software Build triggers a cycle of

Continuously Verify Quality – in each Iteration A Software Build triggers a cycle of testing Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved 22

Continuously Verify Quality – Software Models Various disciplines produce Models … Realized By Assessment

Continuously Verify Quality – Software Models Various disciplines produce Models … Realized By Assessment Artifacts are part of and present in all software each of models … those models is Assessed Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved Business Modeling Require ments Business Use Case Model B B Business Object Model Use Case Model Automated By Analysis & Design Implement ation Realized By Implemented By Design Model Implementation Model Verified By Assessment 23 Validated By

Practice 6: Manage Change Software Engineering Practices Develop Iteratively Manage Requirements Use Component Architectures

Practice 6: Manage Change Software Engineering Practices Develop Iteratively Manage Requirements Use Component Architectures Model Visually (UML) Continuously Verify Quality Manage Change Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved 24

What Do You Want to Control? w Changes to enable iterative development § Secure

What Do You Want to Control? w Changes to enable iterative development § Secure workspaces for each worker § Parallel development possible w Automated integration/build management Good CM practices help to prevent certain types of software errors Process Integration Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved Parallel Development Workspace Management 25 REPORTALERT Build Management

Software Engineering Practices Reinforce Each Other Software Engineering Practices Develop Iteratively Manage Requirements Ensures

Software Engineering Practices Reinforce Each Other Software Engineering Practices Develop Iteratively Manage Requirements Ensures users involved as requirements evolve Use Component Architectures Validates architectural decisions early on Model Visually (UML) Addresses complexity of design/ implementation incrementally Continuously Verify Quality Measures quality early and often Manage Change Evolves baselines incrementally Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved 27

Module 1 Content Outline (Agenda) w Software development problems w Six software engineering practices

Module 1 Content Outline (Agenda) w Software development problems w Six software engineering practices èSoftware engineering process and software engineering practices Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved 28

An Engineering Process Implements Engineering Practices Software Engineering Practices Develop Iteratively Manage Requirements Use

An Engineering Process Implements Engineering Practices Software Engineering Practices Develop Iteratively Manage Requirements Use Component Architectures Model Visually (UML) Continuously Verify Quality Manage Change Software Engineering Process Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved 29

A Team Based Definition of Process A process defines Who is doing What When,

A Team Based Definition of Process A process defines Who is doing What When, and How, in order to reach a certain goal. New or changed requirements Software Engineering Process New or changed system This course is about the What, When and How of Testers’ activities in the process. Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved 30

Module 1 Review w Software engineering practices guide software development by addressing root causes

Module 1 Review w Software engineering practices guide software development by addressing root causes of problems. w Software engineering practices reinforce each other. w Process guides a team on who does what when and how. w A software engineering process provides context and support for implementing software engineering practices. Principles of Software Testing for Testers Copyright © 2002 Rational Software, all rights reserved 32