Testing Frameworks John Paul Ashenfelter CTO/Transitionpoint.

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

Software Engineering Session 14 INFM 603. Software Software represents an aspect of reality –Input and output represent the state of the world –Software.
Alternate Software Development Methodologies
Computer Engineering 203 R Smith Project Tracking 12/ Project Tracking Why do we want to track a project? What is the projects MOV? – Why is tracking.
CS 3500 SE - 1 Software Engineering: It’s Much More Than Programming! Sources: “Software Engineering: A Practitioner’s Approach - Fourth Edition” Pressman,
Mike Azocar Sr. Developer Technical Specialist Microsoft Corporation
Software Engineering. How many lines of code? Average CS1004 assignment: 200 lines Average CS4115 project: 5000 lines Corporate e-commerce project: 80,000.
Software Engineering.
Computer Science 162 Section 1 CS162 Teaching Staff.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Software Testing. “Software and Cathedrals are much the same: First we build them, then we pray!!!” -Sam Redwine, Jr.
Applied Software Project Management Andrew Stellman & Jennifer Greene Applied Software Project Management Applied Software.
Applied Software Project Management 1 Introduction Dr. Mengxia Zhu Computer Science Department Southern Illinois University Carbondale.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Introduction to Software Testing
 What is Software Testing  Terminologies used in Software testing  Types of Testing  What is Manual Testing  Types of Manual Testing  Process that.
© 2006, Cognizant Technology Solutions. All Rights Reserved. The information contained herein is subject to change without notice. Automation – How to.
“Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how.
Selenium Web Test Tool Training Using Ruby Language Discover the automating power of Selenium Kavin School Kavin School Presents: Presented by: Kangeyan.
Systems Life Cycle A summary of what needs to be done.
Effective Methods for Software and Systems Integration
Estimation Wrap-up CSE 403, Spring 2008, Alverson Spolsky.
Introduction to Programming (in C++) Conclusions Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC.
Lecture 6 Software Testing and jUnit CS140 Dick Steflik.
Background The Encyclopedio of Life (EOL) is an ROR open source project to create a free, online reference source and database for every one of the 1.8.
1 Software Testing (Part-II) Lecture Software Testing Software Testing is the process of finding the bugs in a software. It helps in Verifying and.
Applied Software Project Management Andrew Stellman & Jennifer Greenehttp:// Applied Software Project Management Chapter 1: Introduction.
Reliability Andy Jensen Sandy Cabadas.  Understanding Reliability and its issues can help one solve them in relatable areas of computing Thesis.
Chapter 8 – Software Testing Lecture 1 1Chapter 8 Software testing The bearing of a child takes nine months, no matter how many women are assigned. Many.
Incorporating Pragmatic Usability Testing Into a Software Test Plan Carla Merrill, Ph.D. Focused Design focuseddesign.com
“Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how.
1 G A A new Document Control System “A new system to manage LIGO documents” Stuart Anderson Melody Araya David Shoemaker 29 September, 2008
 CS 5380 Software Engineering Chapter 8 Testing.
Design and Programming Chapter 7 Applied Software Project Management, Stellman & Greene See also:
Software Engineering EKT 420 MOHAMED ELSHAIKH KKF 8A – room 4.
Dr. Tom WayCSC Testing and Test-Driven Development CSC 4700 Software Engineering Based on Sommerville slides.
Ethics of Software Testing Thomas LaToza CS 210 Final Presentation 12 / 2 / 2002.
From Quality Control to Quality Assurance…and Beyond Alan Page Microsoft.
Software Assurance Session 13 INFM 603. Bugs, process, assurance Software assurance: quality assurance for software Particularly assurance of security.
Debugging Strategies from Software Carpentry. Agan's Rules Many people make debugging harder than it needs to be by: Using inadequate tools Not going.
TESTING LEVELS Unit Testing Integration Testing System Testing Acceptance Testing.
Validation "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs and the Universe trying to.
CS5103 Software Engineering Lecture 02 More on Software Process Models.
MNP1163 (Software Construction).  SDLC and Construction Models  Construction Planning  Construction Measurement.
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.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
(1) Introduction to Continuous Integration Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
©2006 Sequentus LLC 1 Improving Test Groups a Dime at a Time Bob O’Brien Sequentus April 20, 2006.
Continuous Improvement. Start Simple and Continually Improve E.g., Gmail Labels 1.
CS 5150 Software Engineering Lecture 22 Reliability 3.
CompSci Today’s topics Industry Practice Software Engineering Upcoming The Killer Robot Reading Great Ideas, Chapters 7.
CS 160 and CMPE/SE 131 Software Engineering April 12 Class Meeting Department of Computer Science Department of Computer Engineering San José State University.
Lecturer: Eng. Mohamed Adam Isak PH.D Researcher in CS M.Sc. and B.Sc. of Information Technology Engineering, Lecturer in University of Somalia and Mogadishu.
CFUNITED – The premier ColdFusion conference Agile ColdFusion: Delivering Better Apps in Less Time John Paul Ashenfelter CTO/Transitionpoint.
1 Deployment Frameworks for Web Applications John Paul Ashenfelter CTO/Transitionpoint.
Performance Testing of Web Apps
TEST AUTOMATION IN BDD WAY
Testing ColdFusion Applications
Software Engineering (CSI 321)
Testing More In CS430.
Test Driven Development 1 November Agenda  What is TDD ?  Steps to start  Refactoring  TDD terminology  Benefits  JUnit  Mocktio  Continuous.
Applied Software Implementation & Testing
Introduction to Software Engineering
X in [Integration, Delivery, Deployment]
Introduction to Software Testing
What is user acceptance testing and how is it different than system testing Kusum daga.
Testing and Test-Driven Development CSC 4700 Software Engineering
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
CMPE/SE 131 Software Engineering April 11 Class Meeting
Presentation transcript:

Testing Frameworks John Paul Ashenfelter CTO/Transitionpoint

What is a Framework? … a defined support structure in which another software project can be organized and developed. A framework may include support programs, code libraries, a scripting language, or other software to help develop and glue together the different components of a software project. From

What is Testing?  Verifying the software works correctly  Validating that the reliability and stability of the software  Ensuring that the software solves the problem it is supposed to solve  Making sure the user can use the software

Why Test? There is an old saying with software that three years from now, no one will remember if you shipped an awesome software release a few months late. What customers will still remember three years from now is if you shipped a software release that wasn’t ready a few months too soon. It takes multiple product releases to change people’s quality perception about one bad release. -Scott Guthrie

Who Should Do the Testing?  Good Testers Developers QA Staff Help Desk Internal Staff  Bad Testers Users Customers The public

When Should I Test?  When you: write code change code fix a bug integrate code deploy code think of a new edge case take a coffee break…

How Should I Test?  Code: Unit testing  Application: Functional testing  System: Load/performance testing  And if possible, user acceptance testing

Rolling Your Own Framework for Tests  Testing Tools CFCUnit Selenium Grinder  Support Tools SVN Trac Ant CruiseControl

Testing Your Code Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. -Brian Kernighan

Unit Testing In A Nutshell  A developer writes a unit test to verify an extremely specific area (unit) of functionality (code) behaves as they expect  One unit test is not sufficient! Good data Bad data Edge cases

Unit Test Code Example  We’ll use one of Sean’s GGCC CFCs ggcc3 to be specific  We’ll use CFCUnit for the testing

What’s Next for Unit Tests  Test cases become test suites  Test suites can be automated Ant Commit hooks in SCC (eg SVN) Continuous integration (eg CruiseControl)  Quality of code should improve

Testing the Application The trouble with programmers is that you can never tell what a programmer is doing until it's too late. -Seymour Cray

Functional Testing in a Nutshell  Functional tests verify the application works as expected from a user’s point of view  Written by developers and/or QA staff from test cases

Test Cases  Single step (or small series of steps) with single outcome precondition (known input) postcondition (expected output)  Need at least one test per requirement/use case

Functional Test Code Example  We’ll use Selenium  We’ll drive it automatically  Example is basic login process

Scenario testing  Based on a story  Any failure would motivate the fix  Is credible in real-world usage  Involves a non-trivial task  The results are easy to evaluate

Testing the System Premature optimization is the root of all evil in programming. -C. A. R. Hoare

Load Testing in a Nutshell  Measures the performance of the application with multiple concurrent “users”  Flavors of load testing: Load testing expected usage patterns Performance testing known workloads Stress testing to the breaking point

Testing Environment  Load testing is WYTIWYM (what you test is what you measure)  Results rarely (i.e. never) scale as expected to different hardware or software configurations  Can simulate multiple servers with VMWare with same caveats

User Testing Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning. -Rich Cook

Final Thoughts  There has never been an unexpectedly short debugging period in the history of computers. -Steven Levy

More Final Thoughts  Testing IS your job  Testing needs to be integrated into the entire development process  Tests build on one another into comprehensive suite(s)  Automated testing is something computers are really good at, so take advantage of that!

Resources The average software developer, for example, doesn't own a single book on the subject of his or her work, and hasn't ever read one. That fact is horrifying for anyone concerned about the quality of work in the field, for folks like us who write books, it is positively tragic. -Tom DeMarco and Timothy Lister, "Peopleware : Productive Projects and Teams, 2nd Ed."

Booklist  The Pragmatic Programmer, Hunt/Thomas  Code Complete, Steve McConnell  Agile Software Development, Robert Martin  Writing Effective Test Cases, Alistair Cockburn

Software  CFUnit  CFCUnit  Selenium  Grinder  Subversion  Trac  Ant  Eclipse  Find tools at

Questions/Thanks!!!  John Paul Ashenfelter  Transitionpoint Consulting Training Mentoring