SlideShare a Scribd company logo
1 of 72
http://netponto.org 1ª Reunião em Coimbra - 09/04/2011 Testes? Mas isso não aumenta o tempo de projecto? Não quero...Pedro Rosa
Patrocinadores desta reunião
Pedro Rosa LinkedIn http://pt.linkedin.com/in/pedrobarraurosa Twitter http://twitter.com/pedrorosa
Agenda Why? Code Coverage Static / Dynamic Analysis Unit Testing WebTesting Load (Performance) Testing
Também disponível em vídeo... Assista! http://www.vimeo.com/22446417
The State of Application Development  ,[object Object]
 Projects cost 50% more then budgeted
 Lack of software quality cost US 	businesses $59B / year.
 Bugs account for 55% of downtime Source:  Standish Group, 2006 Third Quarter Research Report, CHAOS Research Results
Have you heard any of these? “my testers are spending too long testing the same thing” “tooling is expensive (time, licenses, people)” “the developers say the defects are useless” “when is my software ready to ship?” “developers and testers work in silos and don’t communicate/speak the same language” “we have a changed requirement, what do I need to test?”
68%
What if you could… reduce the time it takes to determine the root cause of a bug enable users to easily run acceptance tests and track their results reduce the time it takes to configure and manage test environments reduce the time it takes to verify the status of a reported bug fix repair a bug without having to reproduce it
software bugs cost the US economy an estimated $59.5 billion every year on average professional coders make 100 to 150 errors in every 1000 lines of code they write last year, canceled projects cost firms $67 billion; overruns on the other projects racked up another $21billion
Need something a little more concrete?
USS Yorktown, SmartShip crew member entered 0 in a data entry field, caused a “divide by 0” error that shut down propulsion dead in the water for 2hrs 45mins
Ariane 5 Flight 501 re-used code from ariane 4, but took a different flight path because of different booster design conversation from 64bit float to 16bit signed int caused overflow (exception handler was disabled for perf reasons) cost: > $370 million @ 1996 prices
F-22 Raptor deploying overseas to japan the first time crossed international dateline, computers crashed losing all navigation and communications systems clear weather allowed them  to follow tankers back to hawaii Raptor is likely the most advanced manned aircraft that will ever fly…
Need something a little more visual?
Still Not Convinced?
Climbing Cost of Failure Conditioning Training Training Phase
Release Cost of Bugs Test Development Software Phase
Push Quality Upstream Release Cost of Bugs Test Development Software Phase
Where does testing happen? 70% of testing happens here Majority of test tools target here Black Box Testing White Box Testing API Testing
Visual Studio 2010
Test Manager 2010 UML Modeling Manual Testing Layer Diagram Load Testing Web Testing Test Case Management IntelliTrace™ Architecture Explorer Logical Class Designer Cloud Development Office Development Windows Development New WPF Editor Customizable IDE Multi-core Development Silverlight Tools Web Development SharePoint Development Generate from Usage Static Code Analysis Database Deployment Code Metrics Database Unit Testing Test Data Generation Test Impact Analysis UI Test Automation Code Coverage Performance Profiling Database Change Mgmt Fast Forward for Manual Testing
Visual Studio 2010 Test Types ,[object Object]
 Database Unit Test
 Web PerformanceTest
 Load Test
 Manual Test (TestCase)
 Generic Test
 Ordered Test
Coded UI Test,[object Object]
Unit Test – Definition A unit test is a piece of code written by a developer that exercises a very small, specific area of functionality of the code being tested. “Program testing can be used to show the presence of bugs, but never to show their absence!” EdsgerDijkstra, [1972]
Manual Testing ,[object Object]
Manually, by hand
Manual tests are less efficient
Not structured
Not repeatable
Not on all your code
Not easy to do as it should be,[object Object]
Unit Testing  Some Facts Tests are specific pieces of code Unit testing framework is needed Visual Studio Team Test NUnit MbUnit Unit tests are written by developers, not by QA engineers Unit tests are released into the code repository along with the code they test
Unit Testing – More Facts All classes should be tested Test anything that could have bugs All methods should be tested Trivial code may be omitted  E.g. property getters and setters Ideally all unit tests should pass before check-in into the source control repository
Why Unit Tests? Unit tests dramatically decrease the number of defects in the code  Unit tests improve design  Unit tests are good documentation Unit tests reduce the cost of change Unit tests allow refactoring Unit tests decrease the defect-injection rate due to refactoring / changes
Code and Test vs. Test Driven Development
Unit Testing Approaches "Code and Test" approach Classical approach "Test First" approach Test driven development (TDD)
Code and Test Approach Write code Write unit test Run and succeed Time flow
Create a testlist Pick а test Compile and fail Write enough code to compile Run test and fail Write code to pass test  Test Driven Development Write test Time flow Remove duplication
Why Test Driven Development? Helps find design issues early and avoids rework Writing code to satisfy a test is a focused activity – less chance of error Tests will be a more comprehensive than when written after code
Unit Testing Frameworks and Visual Studio Team Test
Unit Testing Frameworks JUnit The first popular unit testing framework Based on Java Similar frameworks have been developed for a broad range of computer languages NUnit – for C# and all .NET languages cppUnit, jsUnit, PhpUnit, PerlUnit, ... Visual Studio Team Test (VSTT) Developed by Microsoft, integrated in VS
Visual Studio Team Test – Features Team Test (TT) is very well integrated with Visual Studio Create test projects and unit tests Execute unit tests View execution results View code coverage Located in the assembly Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
Visual Studio Team Test –  Attributes Test code is annotated using custom attributes ,[object Object]
[TestMethod]– denotes a unit test method
[ExpectedException]– test causes an exception
[Timeout]– sets a timeout for test execution
[Ignore]– temporary ignored test case
[ClassInitialize], [ClassCleanup]– setup / cleanup logic for the testing class
[TestInitialize], [TestCleanup]– setup / cleanup logic for each test case,[object Object]
VSTT – Assertions Assertions check condition and throw exception if condition is not satisfied Comparing values AreEqual(expected value, calculated value [,message]) – compare two values for equality Comparing objects AreSame(expected object, current object [,message])– compare object references
VSTT – Assertions (2) Checking for null value IsNull(object [,message]) IsNotNull(object [,message]) Conditions IsTrue(condition) IsFalse(condition) Forced test fail Fail(message)
The 3A Pattern Arrange all necessary preconditions and inputs Act on the object or method under test Assert that the expected results have occurred [TestMethod] public void TestDeposit() { BanckAccount account = new BanckAccount(); account.Deposit(125.0); account.Deposit(25.0); Assert.AreEqual(150.0, account.Balance,  "Balance is wrong."); }
VSTT – Example public class Account { private decimal balance; public void Deposit(decimal amount) {     this.balance += amount; } public void Withdraw(decimal amount) {     this.balance -= amount; } public void TransferFunds( Account destination, decimal amount)   { ... } public decimal Balance { ... } }
VSTT – Example (2) using Microsoft.VisualStudio.TestTools.UnitTesting; [TestClass] public class AccountTest {     [TestMethod]     public void TransferFunds()     {         Account source = new Account(); source.Deposit(200.00M);         Account dest = new Account();         dest.Deposit(150.00F);         source.TransferFunds(dest, 100.00F);         Assert.AreEqual(250.00F, dest.Balance);         Assert.AreEqual(100.00F, source.Balance);     } }
VSTT – Screenshot
Visual Studio Team Test Live Demo
Unit Testing Best Practices
Naming Standards for Unit Tests The test name should express a specific requirement that is tested Usually prefixed with [Test] E.g. TestAccountDepositNegativeSum() The test name should include Expected input or state  Expected result output or state Name of the tested method or class

More Related Content

What's hot

Grails 1.1 Testing - Unit, Integration & Functional
Grails 1.1 Testing - Unit, Integration & FunctionalGrails 1.1 Testing - Unit, Integration & Functional
Grails 1.1 Testing - Unit, Integration & Functional2Paths Solutions Ltd.
 
Testing in-python-and-pytest-framework
Testing in-python-and-pytest-frameworkTesting in-python-and-pytest-framework
Testing in-python-and-pytest-frameworkArulalan T
 
Mastering Mock Objects - Advanced Unit Testing for Java
Mastering Mock Objects - Advanced Unit Testing for JavaMastering Mock Objects - Advanced Unit Testing for Java
Mastering Mock Objects - Advanced Unit Testing for JavaDenilson Nastacio
 
Testing and Mocking Object - The Art of Mocking.
Testing and Mocking Object - The Art of Mocking.Testing and Mocking Object - The Art of Mocking.
Testing and Mocking Object - The Art of Mocking.Deepak Singhvi
 
iOS Test-Driven Development
iOS Test-Driven DevelopmentiOS Test-Driven Development
iOS Test-Driven DevelopmentPablo Villar
 
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.Wolfgang Grieskamp
 
Google test training
Google test trainingGoogle test training
Google test trainingThierry Gayet
 
Testing, fixing, and proving with contracts
Testing, fixing, and proving with contractsTesting, fixing, and proving with contracts
Testing, fixing, and proving with contractsCarlo A. Furia
 
Clean Unit Test Patterns
Clean Unit Test PatternsClean Unit Test Patterns
Clean Unit Test PatternsFrank Appel
 
Automock: Interaction-Based Mock Code Generation
Automock: Interaction-Based Mock Code GenerationAutomock: Interaction-Based Mock Code Generation
Automock: Interaction-Based Mock Code GenerationSabrina Souto
 
TDD and the Legacy Code Black Hole
TDD and the Legacy Code Black HoleTDD and the Legacy Code Black Hole
TDD and the Legacy Code Black HoleNoam Kfir
 
How to Profit from Static Analysis
How to Profit from Static AnalysisHow to Profit from Static Analysis
How to Profit from Static AnalysisElena Laskavaia
 
Software Testing for Data Scientists
Software Testing for Data ScientistsSoftware Testing for Data Scientists
Software Testing for Data ScientistsAjay Ohri
 
Applying TDD to Legacy Code
Applying TDD to Legacy CodeApplying TDD to Legacy Code
Applying TDD to Legacy CodeAlexander Goida
 

What's hot (20)

Why Unit Testingl
Why Unit TestinglWhy Unit Testingl
Why Unit Testingl
 
Grails 1.1 Testing - Unit, Integration & Functional
Grails 1.1 Testing - Unit, Integration & FunctionalGrails 1.1 Testing - Unit, Integration & Functional
Grails 1.1 Testing - Unit, Integration & Functional
 
Testing in-python-and-pytest-framework
Testing in-python-and-pytest-frameworkTesting in-python-and-pytest-framework
Testing in-python-and-pytest-framework
 
Mastering Mock Objects - Advanced Unit Testing for Java
Mastering Mock Objects - Advanced Unit Testing for JavaMastering Mock Objects - Advanced Unit Testing for Java
Mastering Mock Objects - Advanced Unit Testing for Java
 
Testing and Mocking Object - The Art of Mocking.
Testing and Mocking Object - The Art of Mocking.Testing and Mocking Object - The Art of Mocking.
Testing and Mocking Object - The Art of Mocking.
 
Parasoft fda software compliance part2
Parasoft fda software compliance   part2Parasoft fda software compliance   part2
Parasoft fda software compliance part2
 
iOS Test-Driven Development
iOS Test-Driven DevelopmentiOS Test-Driven Development
iOS Test-Driven Development
 
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
 
Rv11
Rv11Rv11
Rv11
 
Google test training
Google test trainingGoogle test training
Google test training
 
Testing, fixing, and proving with contracts
Testing, fixing, and proving with contractsTesting, fixing, and proving with contracts
Testing, fixing, and proving with contracts
 
Unit testing
Unit testingUnit testing
Unit testing
 
Clean Unit Test Patterns
Clean Unit Test PatternsClean Unit Test Patterns
Clean Unit Test Patterns
 
Automock: Interaction-Based Mock Code Generation
Automock: Interaction-Based Mock Code GenerationAutomock: Interaction-Based Mock Code Generation
Automock: Interaction-Based Mock Code Generation
 
TDD and the Legacy Code Black Hole
TDD and the Legacy Code Black HoleTDD and the Legacy Code Black Hole
TDD and the Legacy Code Black Hole
 
How to Profit from Static Analysis
How to Profit from Static AnalysisHow to Profit from Static Analysis
How to Profit from Static Analysis
 
Software Testing for Data Scientists
Software Testing for Data ScientistsSoftware Testing for Data Scientists
Software Testing for Data Scientists
 
JUnit Presentation
JUnit PresentationJUnit Presentation
JUnit Presentation
 
Python unit testing
Python unit testingPython unit testing
Python unit testing
 
Applying TDD to Legacy Code
Applying TDD to Legacy CodeApplying TDD to Legacy Code
Applying TDD to Legacy Code
 

Viewers also liked

Design: Necessidade ou desperdício de tempo
Design: Necessidade ou desperdício de tempoDesign: Necessidade ou desperdício de tempo
Design: Necessidade ou desperdício de tempoComunidade NetPonto
 
VSTO + LOB Apps Information Matters
VSTO + LOB Apps Information MattersVSTO + LOB Apps Information Matters
VSTO + LOB Apps Information MattersComunidade NetPonto
 
Arquitectura dos Serviços da plataforma Windows Azure
Arquitectura dos Serviços da plataforma Windows AzureArquitectura dos Serviços da plataforma Windows Azure
Arquitectura dos Serviços da plataforma Windows AzureComunidade NetPonto
 
Novidades Azure (Após o //BUILD)
Novidades Azure (Após o //BUILD)Novidades Azure (Após o //BUILD)
Novidades Azure (Após o //BUILD)Comunidade NetPonto
 
Desenvolvimento de Jogos em XNA para Windows Phone 7
Desenvolvimento de Jogos em XNA para Windows Phone 7Desenvolvimento de Jogos em XNA para Windows Phone 7
Desenvolvimento de Jogos em XNA para Windows Phone 7Comunidade NetPonto
 
Windows Phone 7 & XNA - Let's play?
Windows Phone 7 & XNA - Let's play?Windows Phone 7 & XNA - Let's play?
Windows Phone 7 & XNA - Let's play?Comunidade NetPonto
 
PowerShell: (Don't Fear) The Console - Bruno Lopes
PowerShell: (Don't Fear) The Console - Bruno LopesPowerShell: (Don't Fear) The Console - Bruno Lopes
PowerShell: (Don't Fear) The Console - Bruno LopesComunidade NetPonto
 
Windows Workflow Foundation 4: Introdução - C. Augusto Proiete
Windows Workflow Foundation 4: Introdução - C. Augusto ProieteWindows Workflow Foundation 4: Introdução - C. Augusto Proiete
Windows Workflow Foundation 4: Introdução - C. Augusto ProieteComunidade NetPonto
 
Novidades do SQL Server 2011, "Denali"
Novidades do SQL Server 2011, "Denali"Novidades do SQL Server 2011, "Denali"
Novidades do SQL Server 2011, "Denali"Comunidade NetPonto
 
O porque das minhas aplicações funcionarem... E o que acontece com os recurso...
O porque das minhas aplicações funcionarem... E o que acontece com os recurso...O porque das minhas aplicações funcionarem... E o que acontece com os recurso...
O porque das minhas aplicações funcionarem... E o que acontece com os recurso...Comunidade NetPonto
 
Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações
Windows Azure - Uma Plataforma para o Desenvolvimento de AplicaçõesWindows Azure - Uma Plataforma para o Desenvolvimento de Aplicações
Windows Azure - Uma Plataforma para o Desenvolvimento de AplicaçõesComunidade NetPonto
 

Viewers also liked (20)

Clean Coder
Clean CoderClean Coder
Clean Coder
 
Design: Necessidade ou desperdício de tempo
Design: Necessidade ou desperdício de tempoDesign: Necessidade ou desperdício de tempo
Design: Necessidade ou desperdício de tempo
 
VSTO + LOB Apps Information Matters
VSTO + LOB Apps Information MattersVSTO + LOB Apps Information Matters
VSTO + LOB Apps Information Matters
 
Introdução ao Lucene.net
Introdução ao Lucene.netIntrodução ao Lucene.net
Introdução ao Lucene.net
 
Arquitectura dos Serviços da plataforma Windows Azure
Arquitectura dos Serviços da plataforma Windows AzureArquitectura dos Serviços da plataforma Windows Azure
Arquitectura dos Serviços da plataforma Windows Azure
 
MAF - Managed AddIn Framework
MAF - Managed AddIn FrameworkMAF - Managed AddIn Framework
MAF - Managed AddIn Framework
 
Novidades Azure (Após o //BUILD)
Novidades Azure (Após o //BUILD)Novidades Azure (Após o //BUILD)
Novidades Azure (Após o //BUILD)
 
Desenvolvimento de Jogos em XNA para Windows Phone 7
Desenvolvimento de Jogos em XNA para Windows Phone 7Desenvolvimento de Jogos em XNA para Windows Phone 7
Desenvolvimento de Jogos em XNA para Windows Phone 7
 
Windows Phone 7 & XNA - Let's play?
Windows Phone 7 & XNA - Let's play?Windows Phone 7 & XNA - Let's play?
Windows Phone 7 & XNA - Let's play?
 
Document Databases e RavenDB
Document Databases e RavenDBDocument Databases e RavenDB
Document Databases e RavenDB
 
PowerShell: (Don't Fear) The Console - Bruno Lopes
PowerShell: (Don't Fear) The Console - Bruno LopesPowerShell: (Don't Fear) The Console - Bruno Lopes
PowerShell: (Don't Fear) The Console - Bruno Lopes
 
OData – Super Cola W3
OData – Super Cola W3OData – Super Cola W3
OData – Super Cola W3
 
SoapUI: Testes em WebServices
SoapUI: Testes em WebServicesSoapUI: Testes em WebServices
SoapUI: Testes em WebServices
 
Windows Workflow Foundation 4: Introdução - C. Augusto Proiete
Windows Workflow Foundation 4: Introdução - C. Augusto ProieteWindows Workflow Foundation 4: Introdução - C. Augusto Proiete
Windows Workflow Foundation 4: Introdução - C. Augusto Proiete
 
Novidades do SQL Server 2011, "Denali"
Novidades do SQL Server 2011, "Denali"Novidades do SQL Server 2011, "Denali"
Novidades do SQL Server 2011, "Denali"
 
O porque das minhas aplicações funcionarem... E o que acontece com os recurso...
O porque das minhas aplicações funcionarem... E o que acontece com os recurso...O porque das minhas aplicações funcionarem... E o que acontece com os recurso...
O porque das minhas aplicações funcionarem... E o que acontece com os recurso...
 
Windows Azure para Developers
Windows Azure para DevelopersWindows Azure para Developers
Windows Azure para Developers
 
Know your SQL Server - DMVs
Know your SQL Server - DMVsKnow your SQL Server - DMVs
Know your SQL Server - DMVs
 
HTML5 - Pedro Rosa
HTML5 - Pedro RosaHTML5 - Pedro Rosa
HTML5 - Pedro Rosa
 
Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações
Windows Azure - Uma Plataforma para o Desenvolvimento de AplicaçõesWindows Azure - Uma Plataforma para o Desenvolvimento de Aplicações
Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações
 

Similar to Testes? Mas isso não aumenta o tempo de projecto? Não quero...

Unit tests & TDD
Unit tests & TDDUnit tests & TDD
Unit tests & TDDDror Helper
 
An introduction to unit testing
An introduction to unit testingAn introduction to unit testing
An introduction to unit testingAdam Stephensen
 
Full Testing Experience - Visual Studio and TFS 2010
 Full Testing Experience - Visual Studio and TFS 2010 Full Testing Experience - Visual Studio and TFS 2010
Full Testing Experience - Visual Studio and TFS 2010Ed Blankenship
 
Test driven development in .Net - 2010 + Eclipse
Test driven development in .Net - 2010 + EclipseTest driven development in .Net - 2010 + Eclipse
Test driven development in .Net - 2010 + EclipseUTC Fire & Security
 
Automated Developer Testing: Achievements and Challenges
Automated Developer Testing: Achievements and ChallengesAutomated Developer Testing: Achievements and Challenges
Automated Developer Testing: Achievements and ChallengesTao Xie
 
Pragmatic Parallels: Java and JavaScript
Pragmatic Parallels: Java and JavaScriptPragmatic Parallels: Java and JavaScript
Pragmatic Parallels: Java and JavaScriptdavejohnson
 
Testing SharePoint solutions overview
Testing SharePoint solutions overviewTesting SharePoint solutions overview
Testing SharePoint solutions overviewSpiffy
 
Justmeans power point
Justmeans power pointJustmeans power point
Justmeans power pointjustmeanscsr
 
Upstate CSCI 540 Unit testing
Upstate CSCI 540 Unit testingUpstate CSCI 540 Unit testing
Upstate CSCI 540 Unit testingDanWooster1
 
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...GlobalLogic Ukraine
 
Oh so you test? - A guide to testing on Android from Unit to Mutation
Oh so you test? - A guide to testing on Android from Unit to MutationOh so you test? - A guide to testing on Android from Unit to Mutation
Oh so you test? - A guide to testing on Android from Unit to MutationPaul Blundell
 
Improving Software Quality- 2-day Tester Training
Improving Software Quality- 2-day Tester TrainingImproving Software Quality- 2-day Tester Training
Improving Software Quality- 2-day Tester TrainingAnna Russo
 
Automated Software Testing Framework Training by Quontra Solutions
Automated Software Testing Framework Training by Quontra SolutionsAutomated Software Testing Framework Training by Quontra Solutions
Automated Software Testing Framework Training by Quontra SolutionsQuontra Solutions
 
Joomla! Testing - J!DD Germany 2016
Joomla! Testing - J!DD Germany 2016Joomla! Testing - J!DD Germany 2016
Joomla! Testing - J!DD Germany 2016Yves Hoppe
 
Testing with VS2010 - A Bugs Life
Testing with VS2010 - A Bugs LifeTesting with VS2010 - A Bugs Life
Testing with VS2010 - A Bugs LifePeter Gfader
 
Lab Management with TFS 2010
Lab Management with TFS 2010Lab Management with TFS 2010
Lab Management with TFS 2010Ed Blankenship
 

Similar to Testes? Mas isso não aumenta o tempo de projecto? Não quero... (20)

Unit tests & TDD
Unit tests & TDDUnit tests & TDD
Unit tests & TDD
 
An introduction to unit testing
An introduction to unit testingAn introduction to unit testing
An introduction to unit testing
 
Unit testing - A&BP CC
Unit testing - A&BP CCUnit testing - A&BP CC
Unit testing - A&BP CC
 
Full Testing Experience - Visual Studio and TFS 2010
 Full Testing Experience - Visual Studio and TFS 2010 Full Testing Experience - Visual Studio and TFS 2010
Full Testing Experience - Visual Studio and TFS 2010
 
Test driven development in .Net - 2010 + Eclipse
Test driven development in .Net - 2010 + EclipseTest driven development in .Net - 2010 + Eclipse
Test driven development in .Net - 2010 + Eclipse
 
Automated Developer Testing: Achievements and Challenges
Automated Developer Testing: Achievements and ChallengesAutomated Developer Testing: Achievements and Challenges
Automated Developer Testing: Achievements and Challenges
 
Unit test
Unit testUnit test
Unit test
 
Pragmatic Parallels: Java and JavaScript
Pragmatic Parallels: Java and JavaScriptPragmatic Parallels: Java and JavaScript
Pragmatic Parallels: Java and JavaScript
 
Getting Started With Testing
Getting Started With TestingGetting Started With Testing
Getting Started With Testing
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Testing SharePoint solutions overview
Testing SharePoint solutions overviewTesting SharePoint solutions overview
Testing SharePoint solutions overview
 
Justmeans power point
Justmeans power pointJustmeans power point
Justmeans power point
 
Upstate CSCI 540 Unit testing
Upstate CSCI 540 Unit testingUpstate CSCI 540 Unit testing
Upstate CSCI 540 Unit testing
 
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
 
Oh so you test? - A guide to testing on Android from Unit to Mutation
Oh so you test? - A guide to testing on Android from Unit to MutationOh so you test? - A guide to testing on Android from Unit to Mutation
Oh so you test? - A guide to testing on Android from Unit to Mutation
 
Improving Software Quality- 2-day Tester Training
Improving Software Quality- 2-day Tester TrainingImproving Software Quality- 2-day Tester Training
Improving Software Quality- 2-day Tester Training
 
Automated Software Testing Framework Training by Quontra Solutions
Automated Software Testing Framework Training by Quontra SolutionsAutomated Software Testing Framework Training by Quontra Solutions
Automated Software Testing Framework Training by Quontra Solutions
 
Joomla! Testing - J!DD Germany 2016
Joomla! Testing - J!DD Germany 2016Joomla! Testing - J!DD Germany 2016
Joomla! Testing - J!DD Germany 2016
 
Testing with VS2010 - A Bugs Life
Testing with VS2010 - A Bugs LifeTesting with VS2010 - A Bugs Life
Testing with VS2010 - A Bugs Life
 
Lab Management with TFS 2010
Lab Management with TFS 2010Lab Management with TFS 2010
Lab Management with TFS 2010
 

More from Comunidade NetPonto

Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...Comunidade NetPonto
 
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...Comunidade NetPonto
 
MVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara SilvaMVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara SilvaComunidade NetPonto
 
Deep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaDeep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaComunidade NetPonto
 
The power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloThe power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloComunidade NetPonto
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoComunidade NetPonto
 
NoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor TomazNoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor TomazComunidade NetPonto
 
De Zero a Produção - João Jesus
De Zero a Produção - João JesusDe Zero a Produção - João Jesus
De Zero a Produção - João JesusComunidade NetPonto
 
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComo deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComunidade NetPonto
 
Case studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsCase studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsComunidade NetPonto
 
Aspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharpAspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharpComunidade NetPonto
 
Utilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosUtilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosComunidade NetPonto
 
Dinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de ProjectoDinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de ProjectoComunidade NetPonto
 
KnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realKnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realComunidade NetPonto
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComunidade NetPonto
 
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto ProieteWindows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto ProieteComunidade NetPonto
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIComunidade NetPonto
 
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8Comunidade NetPonto
 
Sessão Especial: PowerPivot com Alberto Ferrari
Sessão Especial: PowerPivot com Alberto FerrariSessão Especial: PowerPivot com Alberto Ferrari
Sessão Especial: PowerPivot com Alberto FerrariComunidade NetPonto
 

More from Comunidade NetPonto (20)

Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
 
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
 
MVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara SilvaMVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara Silva
 
Deep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaDeep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo Costa
 
The power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloThe power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno Cancelo
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis Paulino
 
ASP.NET Signal R - Glauco Godoi
ASP.NET Signal R - Glauco GodoiASP.NET Signal R - Glauco Godoi
ASP.NET Signal R - Glauco Godoi
 
NoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor TomazNoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor Tomaz
 
De Zero a Produção - João Jesus
De Zero a Produção - João JesusDe Zero a Produção - João Jesus
De Zero a Produção - João Jesus
 
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComo deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
 
Case studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsCase studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store Apps
 
Aspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharpAspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharp
 
Utilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosUtilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes Unitários
 
Dinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de ProjectoDinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de Projecto
 
KnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realKnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida real
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noite
 
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto ProieteWindows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
 
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
Como não entalar os dedos nas janelas: Finger-based apps no Windows 8
 
Sessão Especial: PowerPivot com Alberto Ferrari
Sessão Especial: PowerPivot com Alberto FerrariSessão Especial: PowerPivot com Alberto Ferrari
Sessão Especial: PowerPivot com Alberto Ferrari
 

Recently uploaded

SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 

Recently uploaded (20)

SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 

Testes? Mas isso não aumenta o tempo de projecto? Não quero...

  • 1. http://netponto.org 1ª Reunião em Coimbra - 09/04/2011 Testes? Mas isso não aumenta o tempo de projecto? Não quero...Pedro Rosa
  • 3. Pedro Rosa LinkedIn http://pt.linkedin.com/in/pedrobarraurosa Twitter http://twitter.com/pedrorosa
  • 4. Agenda Why? Code Coverage Static / Dynamic Analysis Unit Testing WebTesting Load (Performance) Testing
  • 5. Também disponível em vídeo... Assista! http://www.vimeo.com/22446417
  • 6.
  • 7. Projects cost 50% more then budgeted
  • 8. Lack of software quality cost US businesses $59B / year.
  • 9. Bugs account for 55% of downtime Source: Standish Group, 2006 Third Quarter Research Report, CHAOS Research Results
  • 10. Have you heard any of these? “my testers are spending too long testing the same thing” “tooling is expensive (time, licenses, people)” “the developers say the defects are useless” “when is my software ready to ship?” “developers and testers work in silos and don’t communicate/speak the same language” “we have a changed requirement, what do I need to test?”
  • 11. 68%
  • 12. What if you could… reduce the time it takes to determine the root cause of a bug enable users to easily run acceptance tests and track their results reduce the time it takes to configure and manage test environments reduce the time it takes to verify the status of a reported bug fix repair a bug without having to reproduce it
  • 13. software bugs cost the US economy an estimated $59.5 billion every year on average professional coders make 100 to 150 errors in every 1000 lines of code they write last year, canceled projects cost firms $67 billion; overruns on the other projects racked up another $21billion
  • 14. Need something a little more concrete?
  • 15. USS Yorktown, SmartShip crew member entered 0 in a data entry field, caused a “divide by 0” error that shut down propulsion dead in the water for 2hrs 45mins
  • 16. Ariane 5 Flight 501 re-used code from ariane 4, but took a different flight path because of different booster design conversation from 64bit float to 16bit signed int caused overflow (exception handler was disabled for perf reasons) cost: > $370 million @ 1996 prices
  • 17. F-22 Raptor deploying overseas to japan the first time crossed international dateline, computers crashed losing all navigation and communications systems clear weather allowed them to follow tankers back to hawaii Raptor is likely the most advanced manned aircraft that will ever fly…
  • 18. Need something a little more visual?
  • 19.
  • 20.
  • 21.
  • 22.
  • 24. Climbing Cost of Failure Conditioning Training Training Phase
  • 25. Release Cost of Bugs Test Development Software Phase
  • 26. Push Quality Upstream Release Cost of Bugs Test Development Software Phase
  • 27. Where does testing happen? 70% of testing happens here Majority of test tools target here Black Box Testing White Box Testing API Testing
  • 29. Test Manager 2010 UML Modeling Manual Testing Layer Diagram Load Testing Web Testing Test Case Management IntelliTrace™ Architecture Explorer Logical Class Designer Cloud Development Office Development Windows Development New WPF Editor Customizable IDE Multi-core Development Silverlight Tools Web Development SharePoint Development Generate from Usage Static Code Analysis Database Deployment Code Metrics Database Unit Testing Test Data Generation Test Impact Analysis UI Test Automation Code Coverage Performance Profiling Database Change Mgmt Fast Forward for Manual Testing
  • 30.
  • 34. Manual Test (TestCase)
  • 37.
  • 38. Unit Test – Definition A unit test is a piece of code written by a developer that exercises a very small, specific area of functionality of the code being tested. “Program testing can be used to show the presence of bugs, but never to show their absence!” EdsgerDijkstra, [1972]
  • 39.
  • 41. Manual tests are less efficient
  • 44. Not on all your code
  • 45.
  • 46. Unit Testing Some Facts Tests are specific pieces of code Unit testing framework is needed Visual Studio Team Test NUnit MbUnit Unit tests are written by developers, not by QA engineers Unit tests are released into the code repository along with the code they test
  • 47. Unit Testing – More Facts All classes should be tested Test anything that could have bugs All methods should be tested Trivial code may be omitted E.g. property getters and setters Ideally all unit tests should pass before check-in into the source control repository
  • 48. Why Unit Tests? Unit tests dramatically decrease the number of defects in the code Unit tests improve design Unit tests are good documentation Unit tests reduce the cost of change Unit tests allow refactoring Unit tests decrease the defect-injection rate due to refactoring / changes
  • 49. Code and Test vs. Test Driven Development
  • 50. Unit Testing Approaches "Code and Test" approach Classical approach "Test First" approach Test driven development (TDD)
  • 51. Code and Test Approach Write code Write unit test Run and succeed Time flow
  • 52. Create a testlist Pick а test Compile and fail Write enough code to compile Run test and fail Write code to pass test Test Driven Development Write test Time flow Remove duplication
  • 53. Why Test Driven Development? Helps find design issues early and avoids rework Writing code to satisfy a test is a focused activity – less chance of error Tests will be a more comprehensive than when written after code
  • 54. Unit Testing Frameworks and Visual Studio Team Test
  • 55. Unit Testing Frameworks JUnit The first popular unit testing framework Based on Java Similar frameworks have been developed for a broad range of computer languages NUnit – for C# and all .NET languages cppUnit, jsUnit, PhpUnit, PerlUnit, ... Visual Studio Team Test (VSTT) Developed by Microsoft, integrated in VS
  • 56. Visual Studio Team Test – Features Team Test (TT) is very well integrated with Visual Studio Create test projects and unit tests Execute unit tests View execution results View code coverage Located in the assembly Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
  • 57.
  • 58. [TestMethod]– denotes a unit test method
  • 60. [Timeout]– sets a timeout for test execution
  • 62. [ClassInitialize], [ClassCleanup]– setup / cleanup logic for the testing class
  • 63.
  • 64. VSTT – Assertions Assertions check condition and throw exception if condition is not satisfied Comparing values AreEqual(expected value, calculated value [,message]) – compare two values for equality Comparing objects AreSame(expected object, current object [,message])– compare object references
  • 65. VSTT – Assertions (2) Checking for null value IsNull(object [,message]) IsNotNull(object [,message]) Conditions IsTrue(condition) IsFalse(condition) Forced test fail Fail(message)
  • 66. The 3A Pattern Arrange all necessary preconditions and inputs Act on the object or method under test Assert that the expected results have occurred [TestMethod] public void TestDeposit() { BanckAccount account = new BanckAccount(); account.Deposit(125.0); account.Deposit(25.0); Assert.AreEqual(150.0, account.Balance, "Balance is wrong."); }
  • 67. VSTT – Example public class Account { private decimal balance; public void Deposit(decimal amount) { this.balance += amount; } public void Withdraw(decimal amount) { this.balance -= amount; } public void TransferFunds( Account destination, decimal amount) { ... } public decimal Balance { ... } }
  • 68. VSTT – Example (2) using Microsoft.VisualStudio.TestTools.UnitTesting; [TestClass] public class AccountTest { [TestMethod] public void TransferFunds() { Account source = new Account(); source.Deposit(200.00M); Account dest = new Account(); dest.Deposit(150.00F); source.TransferFunds(dest, 100.00F); Assert.AreEqual(250.00F, dest.Balance); Assert.AreEqual(100.00F, source.Balance); } }
  • 70. Visual Studio Team Test Live Demo
  • 71. Unit Testing Best Practices
  • 72. Naming Standards for Unit Tests The test name should express a specific requirement that is tested Usually prefixed with [Test] E.g. TestAccountDepositNegativeSum() The test name should include Expected input or state Expected result output or state Name of the tested method or class
  • 73. Naming Standards for Unit Tests Example Given the method: with requirement to ignore numbers greater than 100 in the summing process The test name should be: Sum_NumberIgnoredIfGreaterThan100 public int Sum(params int[] values)
  • 74. When Should a Test be Changed or Removed? Generally, a passing test should never be removed These tests make sure that code changes don’t break working code A passing test should only be changed to make it more readable When failing tests don’t pass, it usually means there are conflicting requirements
  • 75. When Should a Test be Changed or Removed? (2) Example: New features allows negative numbers [ExpectedException(typeof(Exception), "Negatives not allowed")] void Sum_FirstNegativeNumberThrowsException() { Sum (-1,1,2); }
  • 76. When Should a Test be Changed or Removed?(3) New developer writes the following test: Earlier test fails due to a requirement change void Sum_FirstNegativeNumberCalculatesCorrectly() { int sumResult = sum(-1, 1, 2); Assert.AreEqual(2, sumResult); }
  • 77. When Should a Test be Changed or Removed? (4) Two course of actions: Delete the failing test after verifying if it’s valid Change the old test: Either testing the new requirement Or test the older requirement under new settings
  • 78. Tests Should Reflect Required Reality What’s wrong with the following test? A failing test should prove that there is something wrong with the production code Not with the unit test code int Sum(int a, int b) –> returns sum of a and b public void Sum_AddsOneAndTwo() { int result = Sum(1,2); Assert.AreEqual(4, result, "Bad sum"); }
  • 79. What Should Assert Messages Say? Assert message in a test is one of the most important things Tells us what we expected to happen but didn’t, and what happened instead Good assert message helps us track bugs and understand unit tests more easily Example: "Withdrawal failed: accounts are not supposed to have negative balance."
  • 80. What Should Assert Messages Say? (2) Express what should have happened and what did nothappen “Verify() did not throw any exception” “Connect() did not open the connection before returning it” Do not: Provide empty or meaningless messages Provide messages that repeat the name of the test case
  • 81. Avoid Multiple Asserts in a Single Unit Test void Sum_AnyParamBiggerThan1000IsNotSummed() { Assert.AreEqual(3, Sum(1001, 1, 2); Assert.AreEqual(3, Sum(1, 1001, 2); Assert.AreEqual(3, Sum(1, 2, 1001); } Avoid multiple asserts in a single test case If the first assert fails, the test execution stops for this test case Affect future coders to add assertions to test rather than introducing a new one
  • 82. Unit Testing – The Challenge The concept of Unit Testing has been around for many years New methodologies in particular XP, have turned unit testing into a cardinal foundation of software development Writing good & effective Unit Tests is hard! This is where supporting integrated tools and suggested guidelines enter the picture The ultimate goal is tools that generate unit tests automatically
  • 83.
  • 84. Load tests run software unit tests, database unit tests, and web performance tests
  • 85.
  • 86. Create and debug Web Performance Tests
  • 87. Use Coded UI tests to measure end user performance
  • 91.
  • 92. Throttles bandwidth, introduces latency and errors at the network layer
  • 94. Single user testing over slow network
  • 95.
  • 96. Web Test Recorder Plugin WebTestRecorderPlugins Visual Studio Launches Internet Explorer RecorderListener Browser Recorder Wininet Recorder Merging Recorder Internet Explorer Visual Studio Recorder BHO Browser events Recorded Web Test Record events Browser Control Wininet Shim Recorder Result Wininet Record events Intercept s wininet calls Record events
  • 97. Load Test Agent Architecture Test agents run tests and collect data Test agent #1 Test agent #2 Test agent #3 Test Agent Run Tests Visual Studio Ultimate 2010 Test Controller Target Server Collector Agent Asp.Net Profiler Test Controller manages test agents
  • 98. Visual Studio Team Test Live Demo
  • 99. ? ? ? ? ? Questions? ? ? ? ? ?
  • 101. Próximas reuniões presenciais 09/04/2011 - Abril (Coimbra) 16/04/2011 - Abril (Lisboa) 21/05/2011 - Maio (Lisboa) 18/06/2011 - Junho (Lisboa)Reserva estes dias na agenda! :)
  • 102. Obrigado! Pedro Rosa http://pt.linkedin.com/in/pedrobarraurosa http://twitter.com/pedrorosa

Editor's Notes

  1. These are some of the comments that we have heard from our customers. Are any of these being said by your testers?Broken down another way, can you answer these affirmatively?Do you know consistently when your software will ship?Are the defects created by your tester truly effective?No? <click to next>
  2. All of the previous slides boils down to the fact that 68% of projects are challenged or FailNote that all of this is not due to testing, but good quality almost always ensures a successful release.According to Forrester Research, based on time, budget and delivering specified functionality 68% of projects never made it into production or were cancelled. The numbers tell the story with only 32% of projects being classified as successful with 44% being classed as challenged and 24% failed.The Standish Groups Extreme Chaos study tells a similar story with the average Cost overrun for projects being 45%, the average Time overrun at 63% and the average functionality delivered at 67%Considering that software development accounts for on average 25% of software spend for a company and is growing can organizations afford to continue to see these levels of failure? Identifying and addressing the root causes of software development failure makes business sense. Source: Extreme Chaos, The Standish Group International, Inc., 2000, 2004, 2006, 2009
  3. Does this sound like a wish list? How much money is lost in the time that it takes to track down a bug?How much money is lost in the time it takes to isolate the differences between your development in test environments?
  4. http://en.wikipedia.org/wiki/USS_Yorktown_(CG-48)#Smart_ship_testbed
  5. http://en.wikipedia.org/wiki/Ariane_5_Flight_501
  6. It is also important to understand where most testing happens in the spectrum of general testing to the more technical specialist testing.The Generalist Testers are usually professional testers with no coding background. Often these testers are experts in the business process or tool that is being developed. On the opposite side of the spectrum is the Specialist. This is a tester with strong coding skills.A fun side note: Microsoft’s testers are usually converted developers and tend to be on the specialist side of the graph.Black-box testing is a method of testing software that tests the functionality of an application as opposed to its internal structures or workings (see white-box testing). Specific knowledge of the application's code/internal structure and programming knowledge in general is not required. Test cases are built around specifications and requirements, i.e., what the application is supposed to do. It uses external descriptions of the software, including specifications, requirements, and design to derive test cases. These tests can be functional or non-functional, though usually functional. The test designer selects valid and invalid inputs and determines the correct output. There is no knowledge of the test object's internal structure.White-box testing (a.k.a. clear box testing, glass box testing, transparent box testing, or structural testing) is a method of testing software that tests internal structures or workings of an application as opposed to its functionality (black-box testing). An internal perspective of the system, as well as programming skills, are required and used to design test cases. The tester chooses inputs to exercise paths through the code and determine the appropriate outputs. It is analogous to testing nodes in a circuit, e.g. in-circuit testing (ICT). While white-box testing can be applied at the unit, integration and system levels of the software testing process, it is usually done at the unit level. It can test paths within a unit, paths between units during integration, and between subsystems during a system level test. Though this method of test design can uncover many errors or problems, it might not detect unimplemented parts of the specification or missing requirements. White-box test design techniques include: Control flow testing Data flow testing Branch testing Path testingAPI testing (application programming interface) – is a specific type of White Box testing of the application focusing on public and private APIs<Question to Audience>Looking at this spectrum, where does most testing happen today? <collect answers and click>Where do most testing tools target today? <collect answers and click>
  7. This is the fully animated slide.
  8. Let me drill down into the capabilities in each product. For a more extensive list of capabilities, please go to www.microsoft.com.vstudio.Microsoft Visual Studio 2010 Professional is the essential tool for basic development tasks to allow developers to implement their ideas easily. This includes core capabilities for Windows, Web, and Office development, along with new capabilities for Cloud and SharePoint development. There are also new tools for Silverlight and Multi-core development. With Visual Studio 2010 the IDE and editor were refreshed using Microsoft Windows Presentation Foundation.[CLICK]Microsoft Visual Studio 2010 Premium is a complete toolset for developers to deliver scalable, high quality applications. This includes support for offline database development, unit testing and change management, static code analysis, performance profiling and code coverage and code metrics. New capabilities including UI test automation (aka Coded UI Tests) and Test Impact Analysis are available in premium.[CLICK]Microsoft Visual Studio 2010 Ultimate is the comprehensive suite of application lifecycle management tools for teams to ensure quality results from design to deployment. This includes IntelliTrace – the new historical debugger which enables debugging events that ran previously on your machine, or another machine. Microsoft Test Manager 2010 is included in Ultimate enabling complete Test Case Management and test execution. Additionally the new architecture and modeling tools are included in Ultimate, including support for authoring UML diagrams (Activity, Use Case, Sequence, Component and Class diagrams are supported).[CLICK]