Jessan - Google test driven development user profiles skeleton up quickly, then flesh out scalable in many dimensions code reviews work on the hardest.

Slides:



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

Test Yaodong Bi.
1 Integration Testing CS 4311 I. Burnstein. Practical Software Testing, Springer-Verlag, 2003.
CMSC 345, Version 11/07 SD Vick from S. Mitchell Software Testing.
Integration testing Satish Mishra
Lecture 6: Testing/Quality Assurance Damien Markey.
Illinois Institute of Technology
Software Testing. “Software and Cathedrals are much the same: First we build them, then we pray!!!” -Sam Redwine, Jr.
Chapter 11: Testing The dynamic verification of the behavior of a program on a finite set of test cases, suitable selected from the usually infinite execution.
Software Testing & Strategies
BY RAJESWARI S SOFTWARE TESTING. INTRODUCTION Software testing is the process of testing the software product. Effective software testing will contribute.
CS1101: Programming Methodology Aaron Tan.
Terms: Test (Case) vs. Test Suite
1 CSE 403 System Testing Reading: various web sites about Selenium! These lecture slides are copyright (C) Marty Stepp, They may not be rehosted,
Estimation Wrap-up CSE 403, Spring 2008, Alverson Spolsky.
Software Testing Verification and validation planning Software inspections Software Inspection vs. Testing Automated static analysis Cleanroom software.
System/Software Testing
Lecture 6 Software Testing and jUnit CS140 Dick Steflik.
ECE 355: Software Engineering
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 CSE 403 System Testing and Test Plans These lecture slides are copyright (C) Marty Stepp, They may not be rehosted, sold, or modified without expressed.
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.
TESTING.
INFO 637Lecture #81 Software Engineering Process II Integration and System Testing INFO 637 Glenn Booker.
SOFTWARE TESTING STRATEGIES CIS518001VA : ADVANCED SOFTWARE ENGINEERING TERM PAPER.
CS 501: Software Engineering Fall 1999 Lecture 16 Verification and Validation.
CPIS 357 Software Quality & Testing
Object-Oriented Software Engineering, Ch. 9
CMSC 345 Fall 2000 Unit Testing. The testing process.
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.
Design and Programming Chapter 7 Applied Software Project Management, Stellman & Greene See also:
Software Development Software Testing. Testing Definitions There are many tests going under various names. The following is a general list to get a feel.
Testing. 2 Overview Testing and debugging are important activities in software development. Techniques and tools are introduced. Material borrowed here.
From Quality Control to Quality Assurance…and Beyond Alan Page Microsoft.
COMP 121 Week 1: Testing and Debugging. Testing Program testing can be used to show the presence of bugs, but never to show their absence! ~ Edsger Dijkstra.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Software Verification, Validation and Testing.
Software Construction Lecture 18 Software Testing.
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.
Quality Assurance: Test Development & Execution CSE 403 Lecture 23 Slides derived from a talk by Ian King.
Software Engineering 2004 Jyrki Nummenmaa 1 BACKGROUND There is no way to generally test programs exhaustively (that is, going through all execution.
LECTURE 19 23/11/15 Software Quality and Testing.
1 CSE 403 Testing Reading: Code Complete, Ch. 22 (McConnell) Object-Oriented Software Engineering, Ch. 9 (B. Bruegge, A. Dutoit) These lecture slides are.
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.
CSE 403, Spring 2007, Alverson Quality Assurance Pragmatic Programmer Tip Think about Your Work Turn off the autopilot and take control. Constantly critique.
What is a level of test?  Defined by a given Environment  Environment is a collection of people, hard ware, software, interfaces, data etc.
Software Quality Assurance and Testing Fazal Rehman Shamil.
Dynamic Testing.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
Software Engineering By Germaine Cheung Hong Kong Computer Institute Lecture 7.
Integrating the Code during the Development Alexander Vakrilov Telerik Corporation
CS 325: Software Engineering February 16, 2016 Designing a Design Class Diagram Design Class Diagrams DCD: Restaurant Example DCD: ATM Example Software.
SOFTWARE TESTING SOFTWARE TESTING Presented By, C.Jackulin Sugirtha-10mx15 R.Jeyaramar-10mx17K.Kanagalakshmi-10mx20J.A.Linda-10mx25P.B.Vahedha-10mx53.
Software Engineering Lecture 11 Software Testing Presenter: Josef Hallberg 1.
Ognjen Bajić Ana Roje Ivančić Ekobit Efficient Application Testing.
Software Testing Kobla Setriakor Nyomi Faculty Intern (Programming II)
Software Testing Strategies for building test group
Software Testing.
SOFTWARE TESTING Date: 29-Dec-2016 By: Ram Karthick.
PREPARED BY G.VIJAYA KUMAR ASST.PROFESSOR
Chapter 13 & 14 Software Testing Strategies and Techniques
TDD adoption plan 11/20/2018.
Testing and Test-Driven Development CSC 4700 Software Engineering
CSE 403 Lecture 13 Black/White-Box Testing Reading:
CSE 303 Concepts and Tools for Software Development
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
Software Testing Strategies
Presentation transcript:

Jessan - Google test driven development user profiles skeleton up quickly, then flesh out scalable in many dimensions code reviews work on the hardest pieces first CSE 403, Spring 2008, Alverson

Mid-quarter Assessment CSE 403, Spring 2008, Alverson Class feedback

SDS and ZFR stabilization time before release daily build in a clean environment measuring quality automated tools compiler warnings Jslint number of modules reused in the system number of designs patterns used Readability Time to fix most bugs is < value CSE 403, Spring 2008, lverson

Beta Release CSE 403, Spring 2008, Alverson basic skeleton with tracer-bullet functionality binary release source release updated docs with change tracking on

CSE 403, Spring 2008, Alverson Quality Assurance Pragmatic Programmer Tip Think about Your Work Turn off the autopilot and take control. Constantly critique and appraise your work. With material from Marty Stepp 403 lectures. John Lambert, Microsoft Test Lead Coming to Monday’s class! John Lambert, Microsoft Test Lead Coming to Monday’s class!

CSE 403, Spring 2008, Alverson Readings Pragmatic Programmer: p Ruthless Testing Code Complete, McConnell: Chapter 22 Developer Testing Summary due Monday on PP p and Code Complete p only. Summaries will always be due Mondays going forward

CSE 403, Spring 2008, Alverson Outline Quality from the get-go Test o What makes a good tester o Types of testing Bugs

CSE 403, Spring 2008, Alverson Quality Assurance Things we can do to ensure we produce a high quality (low defect) product Two main approaches to QA: o Process: Build in quality from the start o Test: Add quality through removing bugs

CSE 403, Spring 2008, Alverson How can you build in quality from the start? Spring08 says: Code reviews Build modules so they’re testable and test driven development Coding standard Building good code (good interfaces) … good design in hand Refactor as you go

CSE 403, Spring 2008, Alverson Coding style guides From Apple’s C++ Style Guide : Type names – begin with a capital letter. ie. Book Member names - begin with an f, for "field." Member function names need only begin with a capital letter. ie.: fVisible, Draw. Global names (including static members of classes) - begin with a g. ie:gApplication, TGame::gPlayingField. Local and parameter names - begin with a word whose initial letter is lower case. ie.: i, thePort, aRegion. Constant Names - begin with a k. ie: kSaveDialogResID. Multiple-word names - the first word should follow the convention for the type of the name, and subsequent words should immediately follow, with the first letter of each word capitalized. ie. TSortedListclass …

CSE 403, Spring 2008, Alverson Interesting fact Up to 4x the normal number of defects are reported for released products that were developed under excessive schedule pressure (Jones, 94)

CSE 403, Spring 2008, Alverson Test – the most common QA practice Verify: “ Did we build the system right? ” Validate: “Did we build the right system?” Two components of test:

CSE 403, Spring 2008, Alverson What makes a good tester? Analytical o Think of all the odd cases that could happen o Think of all the details, describe them o Be able to understand the system Methodical o Repeatable process, identifying all steps/all variables o Code coverage Brutally honest o Report the true data

CSE 403, Spring 2008, Alverson How do test engineers fail? Desire to “make it work” o Impartial judge, not “handyman” Trust in opinion or expertise o Trust no one – the truth (data) is in there Failure to follow defined test procedure o How did we get here? Failure to document the data Failure to believe the data

CSE 403, Spring 2008, Alverson Some testing jargon Black box testing Treats the system as atomic Best simulates the customer experience White box testing Examines the system internals Trace data flow directly (ie, in the debugger) Bug report contains more detail on source of defect May obscure timing problems (race conditions)

CSE 403, Spring 2008, Alverson Often tester driven In black box, the tests are usually intended to cover the space of behavior Often developer driven In white box, the tests are usually intended to cover the space of parts of the program

CSE 403, Spring 2008, Alverson General types of testing Functional (include boundaries) Coverage/path Performance Stress Usability Compatibility Localization Security Penetration Interoperability Integration UI

CSE 403, Spring 2008, Alverson Boundary testing boundary testing: test inputs starting from known good values and progressing through reasonable but invalid to known extreme and invalid o Is this black or white box?

CSE 403, Spring 2008, Alverson Boundary testing Imagine we are testing a Date class with a getDaysInMonth(int month, int year) method. What are some important conditions and good boundary tests for this method? o reasonable: 3, , , 2000 o unreasonable: -1 MaxInt MinInt 0 o leapyear Feb 2,2100

CSE 403, Spring 2008, Alverson Unit test tools can capture tests Capture your boundary tests in a test harness (jig) for easy, automated, running JUnit (java) and NUnit (c#), popular harnesses, plugin to eclipse, Ruby Test::Unit

CSE 403, Spring 2008, Alverson Attributes of good unit tests Well-defined inputs and outputs o Consider environment as inputs o Consider ‘side effects’ as outputs Clearly defined initial conditions Clearly described expected behavior Specific – small granularity provides greater precision in analysis Test must be at least as verifiable as feature

CSE 403, Spring 2008, Alverson Coverage testing coverage testing: an attempt to use test input that will pass once over each path in the code o Is this black or white box? o Can you describe some tests for getDaysInMonth(month, year) o int foo(int bar) { if (bar <= 0) return computationA; else return computationB; }

CSE 403, Spring 2008, Alverson Coverage analysis Shows where you have holes in your test suite Guides productive test development: try to get the most coverage with the least effort Should you aim for 100% coverage? Development Effort Code Coverage 100%

CSE 403, Spring 2008, Alverson Plugins for eclipse that work with nunit, junit. Google: nunit [junit] code coverage Coverage tools

CSE 403, Spring 2008, Alverson Integration/system testing Shows that the major subsystems that make up the project work well together. big bang: no stubs; do unit testing, then throw all parts together bottom-up: integrate upward into double, triple, quadruple module test top-down: test top layer (UI) first, then add layers to replace underlying stubs o What are some pros and cons of each? big bang:+ faster (if everything works)- can be costly, error-prone bottom-up:+ fewer stubs needed- tests UI last; UI is important! top-down:+ focuses on user experience- needs many stubs

CSE 403, Spring 2008, Alverson GUI testing Testing a product that uses a GUI, to ensure it meets its written specifications Difficulties: o Many operations to test (ie. MS Wordpad has 325) o Order of testing matters o Regression testing is hard given GUI evolution o Need to test on an array of browsers (web apps)

CSE 403, Spring 2008, Alverson Approaches to GUI testing Automated UI testing o scripts that use your app and look for failures o a black-box system test o Selenium: Manual tests o human beings click through predetermined paths o need to write down the specific tests each time o Ad-hoc tests o human beings are "turned loose" on the app to see if they can break it

CSE 403, Spring 2008, Alverson Web app compatibility testing Motivation o ensure that your web app is compatible with various browsers, platforms, etc. o ensure that your app's HTML code complies with web standards o ensure that you have no broken links or other HTML errors W3C HTML validator: W3C link checker: (let’s try it out on the 403 home page)

CSE 403, Spring 2008, Alverson Load testing Creating demand on a system or device and measuring its response o How many hits should the system be able to handle? o What should be its performance under these circumstances? o Will the system withstand abnormal load (stress testing)? tools o JMeter: o curl-loader: o Database Open-source Test Suite (DOTS): o others:

CSE 403, Spring 2008, Alverson Pragmatic Programmer Tips Test early, test often, test automatically Coding ain’t done ‘til all the tests run Find bugs once