SlideShare a Scribd company logo
1 of 23
John Liebenau
Enterprise Architecture / Software Engineering © 2017 John Liebenau 1
Automated Testing Tutorial
Foundations, Patterns, and Best Practices
John Liebenau
Enterprise Architecture / Software Engineering
2
1/27/2021
Objectives
Present spectrum of automated testing and establish context for discussing automated
testing’s place in application development
Describe various aspects of automated testing including
• different kinds of automated testing,
• motivations for using automated testing, and
• benefits of automated testing
Discuss techniques, patterns, and best practices for automated testing
John Liebenau
Enterprise Architecture / Software Engineering
3
1/27/2021
Overview
Organization
1. Context for Automated Testing
2. Definitions and Motivations
3. Patterns, Best Practices, and Examples
Assumptions
• Familiarity with object-oriented design
─ UML class diagrams
─ design patterns
• Some exposure to xUnit style testing frameworks
─ JUnit
─ NUnit
─ MSTest
John Liebenau
Enterprise Architecture / Software Engineering
Context for Automated Testing
4
John Liebenau
Enterprise Architecture / Software Engineering
5
1/27/2021
Automated
Testing Levels
Unit Testing
Integration Testing
Acceptance Testing
Manual Testing
Tests individual unit of functionality
Does not interact with environment (databases, networks, filesystems, …)
Unit Tests should execute extremely fast
Tests collaborations between components
May interact with environment (databases, networks, filesystems, …)
Integration Tests typically execute slower than Unit Tests
Tests functional scenarios for regression and user story acceptance
Attempts to test end-to-end in production-like environment
(however automated tests typically bypass GUI)
Acceptance Tests may execute slower than Integration Tests
Explores seldom exercised paths through system functionality
End-to-end testing in production-like environment
Manual Tests are most expensive to execute
John Liebenau
Enterprise Architecture / Software Engineering
Unit Testing
Manual Testing
Acceptance Testing
Integration Testing
Unit Testing
Automated Testing supports Delivery Pipeline
Version
Control
Artifact
Repository
Commit Stage
build system
run commit test suite
store build artifacts
report results
Integration Test Stage
run integration test suite
report results
Manual Test Stage
install system/prepare environment
do exploratory testing
report results
Developer Tester
build system
run commit test suite
commit changes
store build artifacts retrieve build artifacts retrieve build artifacts
select build/install system
perform testing
report results
Acceptance Test Stage
install system/prepare environment
run acceptance test suite
report results
retrieve build artifacts
BuildServer
trigger trigger
trigger
provide feedback
provide feedback
John Liebenau
Enterprise Architecture / Software Engineering 7
1/27/2021
Release Management in Delivery Pipeline
Development Pipeline
Commit Stage Integration Test Stage Acceptance Test Stage Manual Test Stage
Release Pipeline Initiator
Create Release Branch Create Release Pipeline Activate Release Pipeline
Release Pipeline
Commit Stage Integration Test Stage Acceptance Test Stage Manual Test Stage
John Liebenau
Enterprise Architecture / Software Engineering
Definitions and Motivations
8
John Liebenau
Enterprise Architecture / Software Engineering
What is Automated Testing
Writing software that tests an application's functionality at multiple levels
• Unit Testing focuses on individual classes as the test subjects
• Integration Testing focuses on collaborations of classes or components as the test
subjects
• Acceptance Testing focuses on application components that implement specific
scenarios or user stories as the test subjects
Automated tests follow a common pattern
• Specify preconditions and postconditions for each test
─ A precondition is the legal and required state of test subject instance prior to executing a test
─ A postcondition is the legal and required state of a test subject instance after executing a test
• Tests are conducted by
─ Setting up a test subject with the appropriate preconditions
─ Exercising a specific functionality of the test subject
─ Checking for the expected postconditions
• If the postconditions are correct the test subject has passed the test
John Liebenau
Enterprise Architecture / Software Engineering
Why is Automated Testing Necessary
Long Term
• Enables longer application lifetime and greater ROI
• Applications continue delivering business value for longer period of time
─ Increased ability to adapt to changes in user requirements and environment
─ Increased system quality as more tests are written
Short Term
• Enables development team to code with more confidence, increasing productivity
─ Reduction in the time spent debugging and integrating
─ More errors are discovered and fixed in development preventing them from being released into production
Automated Testing also:
• Verifies test subject semantics. Automated tests specify the exact behavior of your test subjects
and test them to ensure they conform to that specification
• Enables refactoring. Automated tests are the main tool needed for rapid and successful refactoring
• Improves code quality. Well written automated tests thoroughly exercise your code, catching errors
early in development
• Eliminates manual repetition of test plans. Automated tests can be run efficiently and faithfully
each time your code has changed freeing QA personnel to concentrate on some of the more
difficult and creative aspects of testing
John Liebenau
Enterprise Architecture / Software Engineering
Goals supported by Automated Testing
Goal Definition Support
Maximize System Quality • Establish an application architecture and
development method that increases
application quality in a cost effective manner
• Deliver applications that do not generate
production support issues due to application
logic errors or coding errors
• Automated tests repeatedly validate application
code as new functionality is added and existing
functionality is changed
• Automated tests enable development teams to
deliver more value by eliminating production
errors, freeing developers to focus on
application development and not application
support
Maximize System Adaptability • Establish an application architecture and
development method that can effectively and
efficiently adapt to changes in: user
requirements, business environment, and
technology
• Automated tests are the foundation that enables
effective application adaptation and refactoring
Minimize Development and
Operation Cost
• Establish practices and make decisions that
reduce the total cost of developing and
operating applications without
compromising quality
• Automated tests can be economical to develop
by organizing tests into levels and allocating
effort according to the cost of developing tests
at each level
• Automated tests generate significant cost
reductions over expensive manual testing
• Comprehensive automated tests prevent costly
errors from being released into production
Minimize Delivery Time • Establish practices that reduce the amount of
time to deliver applications without
compromising quality
• Automated tests reduce overall application
delivery time by dramatically reducing the time
needed for integration and debugging
John Liebenau
Enterprise Architecture / Software Engineering
Patterns, Best Practices, and Examples
12
John Liebenau
Enterprise Architecture / Software Engineering
Four Phase Test Pattern
Context
• We are designing automated tests to
test a system
Problem
• How do we structure test logic to make
what we are testing obvious
Solution
• Structure each test with four distinct
parts that are executed in sequence
─ Set Up
─ Exercise
─ Verify
─ Tear Down
Related Patterns
• Dependency Injection
─ Four Phase Test often uses Dependency
Injection during Set Up
TestCase
- subject: TestSubject
«creator»
+ setUp() : void
«destroyer»
+ tearDown() : void
«test»
+ testMethod() : void
«action»
+ runTest() : void
TestSubject
+ method(Input) : Output
Assert
«verifier»
+ assertEquals(Object, Object) : void
void
runTest()
{
setUp(); // Set Up Phase
testMethod(); // Exercise Phase (in-lines Verify Phase)
tearDown(); // Tear Down Phase
}
void
testMethod()
{
Input input = new Input( ... );
Output expected = new Output( ... );
Output actual = null;
assert...( ... ); // Verify Phase (Precondition)
actual = subject.method( input ); // Exercise Phase
assertEquals( expected,actual); // Verify Phase (Postcondition)
}
Inteface
Test Subject
Test Case
Helper
Legend
tests
John Liebenau
Enterprise Architecture / Software Engineering
Test Double Pattern
Context
• A class being tested—the test subject—depends on the interfaces of other components
Problem
• How do we isolate the test subject from the components it depends on in order to do unit testing
Solution
• Replace the components the test subject depends on with test specific equivalents—test
doubles—that mimic the components’ behavior in a way that is more suitable for testing
Variations
• Mock Object
─ Accepts and verifies inputs from test subject
─ Returns outputs to test subject
• Fake Object
─ Implements a component’s functionality in a simpler way suitable for testing
Related Patterns
• Dependency Injection
─ Often used to configure test subjects with Test Doubles
John Liebenau
Enterprise Architecture / Software Engineering
Dependency Injection Pattern
Context
• A class being tested—the test subject—depends on the interfaces of other components
Problem
• How do we design the test subject so we can replace its dependencies at runtime
Solution
• Provide mechanisms in the test subject’s interface (such as constructors or setters) that enable clients to configure
the test subject with appropriate dependent components
Variations
• Constructor Injection
─ Configure the test subject with the desired dependencies during its construction
• Setter Injection
─ Configure the test subject with the desired dependencies through setter methods
• Parameter Injection
─ Pass the desired dependency to the test subject through a parameter when a test subject method is invoked
Related Patterns
• Four Phase Test
─ Dependency Injection is used by Four Phase Test to Set Up the state of Test Subjects
• Test Double
─ Dependency Injection is often used to configure Test Subjects with Test Doubles
John Liebenau
Enterprise Architecture / Software Engineering
Best Practices
Depend on Interfaces (not Implementations)
• Types of variables and parameters should be interfaces
• Clients only know about the interfaces they expect
• Clients remain unaware of the classes that implement the objects they use
• Greatly reduces implementation dependencies between objects
Apply Single Responsibility Principle
• Design classes that each have only one overarching responsibility
• All methods of such a class are aligned to supporting its responsibility
• Complex behavior is formed by interacting networks of objects each responsible for elements of
the behavior
Favor Object Composition over Class Inheritance
• Helps keep each class encapsulated and focused on one responsibility
• Classes and class hierarchies will remain small and will be less likely to grow to be unmanageable
Isolate Unit Test Subjects with Test Doubles
• Set up test subjects with test doubles in order to isolate test subjects for unit testing
Optimize tests to run as fast as possible
• Once tests are in place, look for opportunities to improve test performance
• Faster tests mean faster feedback
John Liebenau
Enterprise Architecture / Software Engineering
17
1/27/2021
Structure of a Unit Test
OrderServiceImpl
- notifier: TraderNotifier
- repository: OrderRepository
«action»
+ processOrder(OrderRequest) : OrderResponse
«modifier»
+ setRepository(OrderRepository) : void
+ setTraderNotifier(TraderNotifier) : void
OrderServiceTest
«creator»
+ setUp() : void
«destroyer»
+ tearDown() : void
«test»
+ testProcessOrder() : void
«interface»
OrderRepository
«modifier»
+ insertOrder(Order) : void
+ removeOrder(Order) : void
«selector»
+ getOrder(OrderId) : Order
+ getOrders(OrderCriteria) : Collection<Order>
«query»
+ hasOrder(OrderId) : boolean
«interface»
TraderNotifier
«notifier»
+ notifyCreatedOrder(CreatedOrderDto) : void
+ notifyCancelledOrder(CancelledOrderDto) : void
«interface»
OrderService
«action»
+ processOrder(OrderRequest) : OrderResponse
MockTraderNotifier
InMemoryOrderRepository
Inteface
Class Being Tested
Test Case
Mock (Test Double)
Fake (Test Double)
Legend
configures
configures
uses
uses
tests
John Liebenau
Enterprise Architecture / Software Engineering
18
1/27/2021
Structure of an Integration Test
OrderServiceImpl
- notifier: TraderNotifier
- repository: OrderRepository
«action»
+ processOrder(OrderRequest) : OrderResponse
«modifier»
+ setRepository(OrderRepository) : void
+ setTraderNotifier(TraderNotifier) : void
OrderServiceTest
«creator»
+ setUp() : void
«destroyer»
+ tearDown() : void
«test»
+ testProcessOrder() : void
«interface»
OrderRepository
«modifier»
+ insertOrder(Order) : void
+ removeOrder(Order) : void
«selector»
+ getOrder(OrderId) : Order
+ getOrders(OrderCriteria) : Collection<Order>
«query»
+ hasOrder(OrderId) : boolean
«interface»
TraderNotifier
«notifier»
+ notifyCreatedOrder(CreatedOrderDto) : void
+ notifyCancelledOrder(CancelledOrderDto) : void
«interface»
OrderService
«action»
+ processOrder(OrderRequest) : OrderResponse
InMemoryOrderRepository
Inteface
Test Subject
Test Case
Mock (Test Double)
Fake (Test Double)
Legend
ActualTraderNotifier
DbOrderRepository
Can use fake or real depending on the integration test.
tests
uses
uses
configures
tests
tests
John Liebenau
Enterprise Architecture / Software Engineering
19
1/27/2021
Developing a New Class with Unit Testing
1. Declare the class interface
2. Specify each method's preconditions and postconditions (where necessary)
3. Implement each method as a stub
4. Write or generate the unit test skeleton
5. For each public method in the class, implement the test based on the preconditions
and postconditions
6. Implement a method in the class
7. Run the tests
8. If the test passes repeat with another method, else fix the method or the test (which
ever is incorrect) and rerun the test
9. Repeat this process until all methods are fully implemented and pass all of the tests
John Liebenau
Enterprise Architecture / Software Engineering
20
1/27/2021
Changing Released Code with Automated Testing
1. Identify how or where bug or enhancement affects code
2. Add test(s) that exercises bug or enhancement
• Could involve unit test, integration test, and acceptance test
3. Run test(s)
• The test (or tests) must fail
• Failure is the indication that the test exercises the bug or enhancement
4. Fix affected method(s) for a bug fix or add the necessary functionality for an
enhancement
5. Run all tests
• This includes all unit tests, integration tests, and acceptance tests
6. If all tests pass, then issue new release, else continue fixing and rerun tests until all
tests pass
John Liebenau
Enterprise Architecture / Software Engineering
Appendix
21
John Liebenau
Enterprise Architecture / Software Engineering
22
1/27/2021
Testing Tools and Frameworks
Test Level Tools Information
Acceptance Testing Fit http://fit.c2.com/
Fitnesse http://fitnesse.org/
Custom developed tools
Integration Testing JUnit http://www.junit.org/
NUnit http://www.nunit.org/
MS Testing Framework http://msdn.microsoft.com/en-us/library/ms243147.aspx
Unit Testing JUnit http://www.junit.org/
NUnit http://www.nunit.org/
MS Testing Framework http://msdn.microsoft.com/en-us/library/ms243147.aspx
HtmlUnit http://htmlunit.sourceforge.net/
JMock http://www.jmock.org/
Moq http://code.google.com/p/moq/
John Liebenau
Enterprise Architecture / Software Engineering
23
1/27/2021
Additional Information
Books
• xUnit Test Patterns
─ http://www.amazon.com/xUnit-Test-Patterns-Refactoring-Code/dp/0131495054
• Growing Object-Oriented Software Guided By Tests
─ http://www.amazon.com/Growing-Object-Oriented-Software-Guided-Tests/dp/0321503627
• Continuous Delivery
─ http://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912
Web Sites
• http://xunitpatterns.com/
• http://www.javaworld.com/javaworld/jw-05-2004/jw-0510-tdd.html
• http://www.junit.org/
• http://www.nunit.org/
• http://continuousdelivery.com

More Related Content

What's hot

Testing Types And Models
Testing Types And ModelsTesting Types And Models
Testing Types And Modelsnazeer pasha
 
Softwaretestingstrategies
SoftwaretestingstrategiesSoftwaretestingstrategies
Softwaretestingstrategiessaieswar19
 
Bruno Legeard - Model-Based Testing of a Financial Application
Bruno Legeard -  Model-Based Testing of a Financial ApplicationBruno Legeard -  Model-Based Testing of a Financial Application
Bruno Legeard - Model-Based Testing of a Financial ApplicationTEST Huddle
 
Software Testing Process, Testing Automation and Software Testing Trends
Software Testing Process, Testing Automation and Software Testing TrendsSoftware Testing Process, Testing Automation and Software Testing Trends
Software Testing Process, Testing Automation and Software Testing TrendsKMS Technology
 
Software engineering- system testing
Software engineering- system testingSoftware engineering- system testing
Software engineering- system testingTejas Mhaske
 
Testing throughout the software life cycle - Testing & Implementation
Testing throughout the software life cycle - Testing & ImplementationTesting throughout the software life cycle - Testing & Implementation
Testing throughout the software life cycle - Testing & Implementationyogi syafrialdi
 
SOFTWARE TESTING: ISSUES AND CHALLENGES OF ARTIFICIAL INTELLIGENCE & MACHINE ...
SOFTWARE TESTING: ISSUES AND CHALLENGES OF ARTIFICIAL INTELLIGENCE & MACHINE ...SOFTWARE TESTING: ISSUES AND CHALLENGES OF ARTIFICIAL INTELLIGENCE & MACHINE ...
SOFTWARE TESTING: ISSUES AND CHALLENGES OF ARTIFICIAL INTELLIGENCE & MACHINE ...ijaia
 
Validation testing
Validation testingValidation testing
Validation testingSlideshare
 
Ian Smith - Mobile Software Testing - Facing Future Challenges
Ian Smith -  Mobile Software Testing - Facing Future ChallengesIan Smith -  Mobile Software Testing - Facing Future Challenges
Ian Smith - Mobile Software Testing - Facing Future ChallengesTEST Huddle
 
Software Testing
Software TestingSoftware Testing
Software TestingAlok Ranjan
 

What's hot (17)

Cots testing
Cots testingCots testing
Cots testing
 
Testing Types And Models
Testing Types And ModelsTesting Types And Models
Testing Types And Models
 
Softwaretestingstrategies
SoftwaretestingstrategiesSoftwaretestingstrategies
Softwaretestingstrategies
 
Bruno Legeard - Model-Based Testing of a Financial Application
Bruno Legeard -  Model-Based Testing of a Financial ApplicationBruno Legeard -  Model-Based Testing of a Financial Application
Bruno Legeard - Model-Based Testing of a Financial Application
 
Software Testing Process, Testing Automation and Software Testing Trends
Software Testing Process, Testing Automation and Software Testing TrendsSoftware Testing Process, Testing Automation and Software Testing Trends
Software Testing Process, Testing Automation and Software Testing Trends
 
Software testing
Software testingSoftware testing
Software testing
 
Software engineering- system testing
Software engineering- system testingSoftware engineering- system testing
Software engineering- system testing
 
Testing throughout the software life cycle - Testing & Implementation
Testing throughout the software life cycle - Testing & ImplementationTesting throughout the software life cycle - Testing & Implementation
Testing throughout the software life cycle - Testing & Implementation
 
Paper CS
Paper CSPaper CS
Paper CS
 
Software testing
Software testingSoftware testing
Software testing
 
Manual testing
Manual testingManual testing
Manual testing
 
SOFTWARE TESTING: ISSUES AND CHALLENGES OF ARTIFICIAL INTELLIGENCE & MACHINE ...
SOFTWARE TESTING: ISSUES AND CHALLENGES OF ARTIFICIAL INTELLIGENCE & MACHINE ...SOFTWARE TESTING: ISSUES AND CHALLENGES OF ARTIFICIAL INTELLIGENCE & MACHINE ...
SOFTWARE TESTING: ISSUES AND CHALLENGES OF ARTIFICIAL INTELLIGENCE & MACHINE ...
 
Validation testing
Validation testingValidation testing
Validation testing
 
Software Teting
Software TetingSoftware Teting
Software Teting
 
Software Testing
Software TestingSoftware Testing
Software Testing
 
Ian Smith - Mobile Software Testing - Facing Future Challenges
Ian Smith -  Mobile Software Testing - Facing Future ChallengesIan Smith -  Mobile Software Testing - Facing Future Challenges
Ian Smith - Mobile Software Testing - Facing Future Challenges
 
Software Testing
Software TestingSoftware Testing
Software Testing
 

Similar to Automated Testing Tutorial

V Model in Software Testing
V Model in Software TestingV Model in Software Testing
V Model in Software TestingAbdul Raheem
 
power point presentation of software testing amravati.pptx
power point presentation of software testing amravati.pptxpower point presentation of software testing amravati.pptx
power point presentation of software testing amravati.pptxpravinjedhe3500
 
Test automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application ServerTest automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application ServerRobbie Minshall
 
Automated testing overview
Automated testing overviewAutomated testing overview
Automated testing overviewAlex Pop
 
A Comprehensive Guide to Accelerate and Strengthen Your End-to-End Testing Ap...
A Comprehensive Guide to Accelerate and Strengthen Your End-to-End Testing Ap...A Comprehensive Guide to Accelerate and Strengthen Your End-to-End Testing Ap...
A Comprehensive Guide to Accelerate and Strengthen Your End-to-End Testing Ap...kalichargn70th171
 
Manual testing concepts course 1
Manual testing concepts course 1Manual testing concepts course 1
Manual testing concepts course 1Raghu Kiran
 
Incorporating Performance Testing in Agile Development Process
Incorporating Performance Testing in Agile Development ProcessIncorporating Performance Testing in Agile Development Process
Incorporating Performance Testing in Agile Development ProcessMichael Vax
 
Software Test Automation - Best Practices
Software Test Automation - Best PracticesSoftware Test Automation - Best Practices
Software Test Automation - Best PracticesArul Selvan
 
Objectorientedtesting 160320132146
Objectorientedtesting 160320132146Objectorientedtesting 160320132146
Objectorientedtesting 160320132146vidhyyav
 
Object oriented testing
Object oriented testingObject oriented testing
Object oriented testingHaris Jamil
 
03 test specification and execution
03   test specification and execution03   test specification and execution
03 test specification and executionClemens Reijnen
 
Welingkar_final project_ppt_IMPORTANCE & NEED FOR TESTING
Welingkar_final project_ppt_IMPORTANCE & NEED FOR TESTINGWelingkar_final project_ppt_IMPORTANCE & NEED FOR TESTING
Welingkar_final project_ppt_IMPORTANCE & NEED FOR TESTINGSachin Pathania
 
SWT2_tim.pptx
SWT2_tim.pptxSWT2_tim.pptx
SWT2_tim.pptxBnhT27
 
Testing Frameworks
Testing FrameworksTesting Frameworks
Testing FrameworksMoataz Nabil
 
4&5.pptx SOFTWARE TESTING UNIT-4 AND UNIT-5
4&5.pptx SOFTWARE TESTING UNIT-4 AND UNIT-54&5.pptx SOFTWARE TESTING UNIT-4 AND UNIT-5
4&5.pptx SOFTWARE TESTING UNIT-4 AND UNIT-5hemasubbu08
 
DevOps Workshop - Addressing Quality Challenges of Highly Complex and Integra...
DevOps Workshop - Addressing Quality Challenges of Highly Complex and Integra...DevOps Workshop - Addressing Quality Challenges of Highly Complex and Integra...
DevOps Workshop - Addressing Quality Challenges of Highly Complex and Integra...Andrew Williams
 
Introduction to testing.
Introduction to testing.Introduction to testing.
Introduction to testing.Jithinctzz
 

Similar to Automated Testing Tutorial (20)

V Model in Software Testing
V Model in Software TestingV Model in Software Testing
V Model in Software Testing
 
power point presentation of software testing amravati.pptx
power point presentation of software testing amravati.pptxpower point presentation of software testing amravati.pptx
power point presentation of software testing amravati.pptx
 
Test automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application ServerTest automation lessons from WebSphere Application Server
Test automation lessons from WebSphere Application Server
 
Automated testing overview
Automated testing overviewAutomated testing overview
Automated testing overview
 
A Comprehensive Guide to Accelerate and Strengthen Your End-to-End Testing Ap...
A Comprehensive Guide to Accelerate and Strengthen Your End-to-End Testing Ap...A Comprehensive Guide to Accelerate and Strengthen Your End-to-End Testing Ap...
A Comprehensive Guide to Accelerate and Strengthen Your End-to-End Testing Ap...
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Manual testing concepts course 1
Manual testing concepts course 1Manual testing concepts course 1
Manual testing concepts course 1
 
Incorporating Performance Testing in Agile Development Process
Incorporating Performance Testing in Agile Development ProcessIncorporating Performance Testing in Agile Development Process
Incorporating Performance Testing in Agile Development Process
 
Software Test Automation - Best Practices
Software Test Automation - Best PracticesSoftware Test Automation - Best Practices
Software Test Automation - Best Practices
 
Objectorientedtesting 160320132146
Objectorientedtesting 160320132146Objectorientedtesting 160320132146
Objectorientedtesting 160320132146
 
Object oriented testing
Object oriented testingObject oriented testing
Object oriented testing
 
Testing
TestingTesting
Testing
 
03 test specification and execution
03   test specification and execution03   test specification and execution
03 test specification and execution
 
Welingkar_final project_ppt_IMPORTANCE & NEED FOR TESTING
Welingkar_final project_ppt_IMPORTANCE & NEED FOR TESTINGWelingkar_final project_ppt_IMPORTANCE & NEED FOR TESTING
Welingkar_final project_ppt_IMPORTANCE & NEED FOR TESTING
 
SWT2_tim.pptx
SWT2_tim.pptxSWT2_tim.pptx
SWT2_tim.pptx
 
Test Life Cycle
Test Life CycleTest Life Cycle
Test Life Cycle
 
Testing Frameworks
Testing FrameworksTesting Frameworks
Testing Frameworks
 
4&5.pptx SOFTWARE TESTING UNIT-4 AND UNIT-5
4&5.pptx SOFTWARE TESTING UNIT-4 AND UNIT-54&5.pptx SOFTWARE TESTING UNIT-4 AND UNIT-5
4&5.pptx SOFTWARE TESTING UNIT-4 AND UNIT-5
 
DevOps Workshop - Addressing Quality Challenges of Highly Complex and Integra...
DevOps Workshop - Addressing Quality Challenges of Highly Complex and Integra...DevOps Workshop - Addressing Quality Challenges of Highly Complex and Integra...
DevOps Workshop - Addressing Quality Challenges of Highly Complex and Integra...
 
Introduction to testing.
Introduction to testing.Introduction to testing.
Introduction to testing.
 

Recently uploaded

Agnieszka Andrzejewska - BIM School Course in Kraków
Agnieszka Andrzejewska - BIM School Course in KrakówAgnieszka Andrzejewska - BIM School Course in Kraków
Agnieszka Andrzejewska - BIM School Course in Krakówbim.edu.pl
 
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdfStrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdfsteffenkarlsson2
 
JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)Max Lee
 
The Impact of PLM Software on Fashion Production
The Impact of PLM Software on Fashion ProductionThe Impact of PLM Software on Fashion Production
The Impact of PLM Software on Fashion ProductionWave PLM
 
APVP,apvp apvp High quality supplier safe spot transport, 98% purity
APVP,apvp apvp High quality supplier safe spot transport, 98% purityAPVP,apvp apvp High quality supplier safe spot transport, 98% purity
APVP,apvp apvp High quality supplier safe spot transport, 98% purityamy56318795
 
how-to-download-files-safely-from-the-internet.pdf
how-to-download-files-safely-from-the-internet.pdfhow-to-download-files-safely-from-the-internet.pdf
how-to-download-files-safely-from-the-internet.pdfMehmet Akar
 
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdfA Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdfkalichargn70th171
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...Alluxio, Inc.
 
SQL Injection Introduction and Prevention
SQL Injection Introduction and PreventionSQL Injection Introduction and Prevention
SQL Injection Introduction and PreventionMohammed Fazuluddin
 
Workforce Efficiency with Employee Time Tracking Software.pdf
Workforce Efficiency with Employee Time Tracking Software.pdfWorkforce Efficiency with Employee Time Tracking Software.pdf
Workforce Efficiency with Employee Time Tracking Software.pdfDeskTrack
 
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...Andrea Goulet
 
Microsoft 365 Copilot; An AI tool changing the world of work _PDF.pdf
Microsoft 365 Copilot; An AI tool changing the world of work _PDF.pdfMicrosoft 365 Copilot; An AI tool changing the world of work _PDF.pdf
Microsoft 365 Copilot; An AI tool changing the world of work _PDF.pdfQ-Advise
 
CompTIA Security+ (Study Notes) for cs.pdf
CompTIA Security+ (Study Notes) for cs.pdfCompTIA Security+ (Study Notes) for cs.pdf
CompTIA Security+ (Study Notes) for cs.pdfFurqanuddin10
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...rajkumar669520
 
Crafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationCrafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationWave PLM
 
AI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in MichelangeloAI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in MichelangeloAlluxio, Inc.
 
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product UpdatesGraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product UpdatesNeo4j
 
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...naitiksharma1124
 
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdfMastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdfmbmh111980
 

Recently uploaded (20)

Agnieszka Andrzejewska - BIM School Course in Kraków
Agnieszka Andrzejewska - BIM School Course in KrakówAgnieszka Andrzejewska - BIM School Course in Kraków
Agnieszka Andrzejewska - BIM School Course in Kraków
 
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdfStrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
 
JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)
 
The Impact of PLM Software on Fashion Production
The Impact of PLM Software on Fashion ProductionThe Impact of PLM Software on Fashion Production
The Impact of PLM Software on Fashion Production
 
APVP,apvp apvp High quality supplier safe spot transport, 98% purity
APVP,apvp apvp High quality supplier safe spot transport, 98% purityAPVP,apvp apvp High quality supplier safe spot transport, 98% purity
APVP,apvp apvp High quality supplier safe spot transport, 98% purity
 
how-to-download-files-safely-from-the-internet.pdf
how-to-download-files-safely-from-the-internet.pdfhow-to-download-files-safely-from-the-internet.pdf
how-to-download-files-safely-from-the-internet.pdf
 
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdfA Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
 
SQL Injection Introduction and Prevention
SQL Injection Introduction and PreventionSQL Injection Introduction and Prevention
SQL Injection Introduction and Prevention
 
Workforce Efficiency with Employee Time Tracking Software.pdf
Workforce Efficiency with Employee Time Tracking Software.pdfWorkforce Efficiency with Employee Time Tracking Software.pdf
Workforce Efficiency with Employee Time Tracking Software.pdf
 
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
 
Microsoft 365 Copilot; An AI tool changing the world of work _PDF.pdf
Microsoft 365 Copilot; An AI tool changing the world of work _PDF.pdfMicrosoft 365 Copilot; An AI tool changing the world of work _PDF.pdf
Microsoft 365 Copilot; An AI tool changing the world of work _PDF.pdf
 
CompTIA Security+ (Study Notes) for cs.pdf
CompTIA Security+ (Study Notes) for cs.pdfCompTIA Security+ (Study Notes) for cs.pdf
CompTIA Security+ (Study Notes) for cs.pdf
 
5 Reasons Driving Warehouse Management Systems Demand
5 Reasons Driving Warehouse Management Systems Demand5 Reasons Driving Warehouse Management Systems Demand
5 Reasons Driving Warehouse Management Systems Demand
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
 
Crafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationCrafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM Integration
 
AI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in MichelangeloAI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in Michelangelo
 
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product UpdatesGraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
 
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
 
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdfMastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
 

Automated Testing Tutorial

  • 1. John Liebenau Enterprise Architecture / Software Engineering © 2017 John Liebenau 1 Automated Testing Tutorial Foundations, Patterns, and Best Practices
  • 2. John Liebenau Enterprise Architecture / Software Engineering 2 1/27/2021 Objectives Present spectrum of automated testing and establish context for discussing automated testing’s place in application development Describe various aspects of automated testing including • different kinds of automated testing, • motivations for using automated testing, and • benefits of automated testing Discuss techniques, patterns, and best practices for automated testing
  • 3. John Liebenau Enterprise Architecture / Software Engineering 3 1/27/2021 Overview Organization 1. Context for Automated Testing 2. Definitions and Motivations 3. Patterns, Best Practices, and Examples Assumptions • Familiarity with object-oriented design ─ UML class diagrams ─ design patterns • Some exposure to xUnit style testing frameworks ─ JUnit ─ NUnit ─ MSTest
  • 4. John Liebenau Enterprise Architecture / Software Engineering Context for Automated Testing 4
  • 5. John Liebenau Enterprise Architecture / Software Engineering 5 1/27/2021 Automated Testing Levels Unit Testing Integration Testing Acceptance Testing Manual Testing Tests individual unit of functionality Does not interact with environment (databases, networks, filesystems, …) Unit Tests should execute extremely fast Tests collaborations between components May interact with environment (databases, networks, filesystems, …) Integration Tests typically execute slower than Unit Tests Tests functional scenarios for regression and user story acceptance Attempts to test end-to-end in production-like environment (however automated tests typically bypass GUI) Acceptance Tests may execute slower than Integration Tests Explores seldom exercised paths through system functionality End-to-end testing in production-like environment Manual Tests are most expensive to execute
  • 6. John Liebenau Enterprise Architecture / Software Engineering Unit Testing Manual Testing Acceptance Testing Integration Testing Unit Testing Automated Testing supports Delivery Pipeline Version Control Artifact Repository Commit Stage build system run commit test suite store build artifacts report results Integration Test Stage run integration test suite report results Manual Test Stage install system/prepare environment do exploratory testing report results Developer Tester build system run commit test suite commit changes store build artifacts retrieve build artifacts retrieve build artifacts select build/install system perform testing report results Acceptance Test Stage install system/prepare environment run acceptance test suite report results retrieve build artifacts BuildServer trigger trigger trigger provide feedback provide feedback
  • 7. John Liebenau Enterprise Architecture / Software Engineering 7 1/27/2021 Release Management in Delivery Pipeline Development Pipeline Commit Stage Integration Test Stage Acceptance Test Stage Manual Test Stage Release Pipeline Initiator Create Release Branch Create Release Pipeline Activate Release Pipeline Release Pipeline Commit Stage Integration Test Stage Acceptance Test Stage Manual Test Stage
  • 8. John Liebenau Enterprise Architecture / Software Engineering Definitions and Motivations 8
  • 9. John Liebenau Enterprise Architecture / Software Engineering What is Automated Testing Writing software that tests an application's functionality at multiple levels • Unit Testing focuses on individual classes as the test subjects • Integration Testing focuses on collaborations of classes or components as the test subjects • Acceptance Testing focuses on application components that implement specific scenarios or user stories as the test subjects Automated tests follow a common pattern • Specify preconditions and postconditions for each test ─ A precondition is the legal and required state of test subject instance prior to executing a test ─ A postcondition is the legal and required state of a test subject instance after executing a test • Tests are conducted by ─ Setting up a test subject with the appropriate preconditions ─ Exercising a specific functionality of the test subject ─ Checking for the expected postconditions • If the postconditions are correct the test subject has passed the test
  • 10. John Liebenau Enterprise Architecture / Software Engineering Why is Automated Testing Necessary Long Term • Enables longer application lifetime and greater ROI • Applications continue delivering business value for longer period of time ─ Increased ability to adapt to changes in user requirements and environment ─ Increased system quality as more tests are written Short Term • Enables development team to code with more confidence, increasing productivity ─ Reduction in the time spent debugging and integrating ─ More errors are discovered and fixed in development preventing them from being released into production Automated Testing also: • Verifies test subject semantics. Automated tests specify the exact behavior of your test subjects and test them to ensure they conform to that specification • Enables refactoring. Automated tests are the main tool needed for rapid and successful refactoring • Improves code quality. Well written automated tests thoroughly exercise your code, catching errors early in development • Eliminates manual repetition of test plans. Automated tests can be run efficiently and faithfully each time your code has changed freeing QA personnel to concentrate on some of the more difficult and creative aspects of testing
  • 11. John Liebenau Enterprise Architecture / Software Engineering Goals supported by Automated Testing Goal Definition Support Maximize System Quality • Establish an application architecture and development method that increases application quality in a cost effective manner • Deliver applications that do not generate production support issues due to application logic errors or coding errors • Automated tests repeatedly validate application code as new functionality is added and existing functionality is changed • Automated tests enable development teams to deliver more value by eliminating production errors, freeing developers to focus on application development and not application support Maximize System Adaptability • Establish an application architecture and development method that can effectively and efficiently adapt to changes in: user requirements, business environment, and technology • Automated tests are the foundation that enables effective application adaptation and refactoring Minimize Development and Operation Cost • Establish practices and make decisions that reduce the total cost of developing and operating applications without compromising quality • Automated tests can be economical to develop by organizing tests into levels and allocating effort according to the cost of developing tests at each level • Automated tests generate significant cost reductions over expensive manual testing • Comprehensive automated tests prevent costly errors from being released into production Minimize Delivery Time • Establish practices that reduce the amount of time to deliver applications without compromising quality • Automated tests reduce overall application delivery time by dramatically reducing the time needed for integration and debugging
  • 12. John Liebenau Enterprise Architecture / Software Engineering Patterns, Best Practices, and Examples 12
  • 13. John Liebenau Enterprise Architecture / Software Engineering Four Phase Test Pattern Context • We are designing automated tests to test a system Problem • How do we structure test logic to make what we are testing obvious Solution • Structure each test with four distinct parts that are executed in sequence ─ Set Up ─ Exercise ─ Verify ─ Tear Down Related Patterns • Dependency Injection ─ Four Phase Test often uses Dependency Injection during Set Up TestCase - subject: TestSubject «creator» + setUp() : void «destroyer» + tearDown() : void «test» + testMethod() : void «action» + runTest() : void TestSubject + method(Input) : Output Assert «verifier» + assertEquals(Object, Object) : void void runTest() { setUp(); // Set Up Phase testMethod(); // Exercise Phase (in-lines Verify Phase) tearDown(); // Tear Down Phase } void testMethod() { Input input = new Input( ... ); Output expected = new Output( ... ); Output actual = null; assert...( ... ); // Verify Phase (Precondition) actual = subject.method( input ); // Exercise Phase assertEquals( expected,actual); // Verify Phase (Postcondition) } Inteface Test Subject Test Case Helper Legend tests
  • 14. John Liebenau Enterprise Architecture / Software Engineering Test Double Pattern Context • A class being tested—the test subject—depends on the interfaces of other components Problem • How do we isolate the test subject from the components it depends on in order to do unit testing Solution • Replace the components the test subject depends on with test specific equivalents—test doubles—that mimic the components’ behavior in a way that is more suitable for testing Variations • Mock Object ─ Accepts and verifies inputs from test subject ─ Returns outputs to test subject • Fake Object ─ Implements a component’s functionality in a simpler way suitable for testing Related Patterns • Dependency Injection ─ Often used to configure test subjects with Test Doubles
  • 15. John Liebenau Enterprise Architecture / Software Engineering Dependency Injection Pattern Context • A class being tested—the test subject—depends on the interfaces of other components Problem • How do we design the test subject so we can replace its dependencies at runtime Solution • Provide mechanisms in the test subject’s interface (such as constructors or setters) that enable clients to configure the test subject with appropriate dependent components Variations • Constructor Injection ─ Configure the test subject with the desired dependencies during its construction • Setter Injection ─ Configure the test subject with the desired dependencies through setter methods • Parameter Injection ─ Pass the desired dependency to the test subject through a parameter when a test subject method is invoked Related Patterns • Four Phase Test ─ Dependency Injection is used by Four Phase Test to Set Up the state of Test Subjects • Test Double ─ Dependency Injection is often used to configure Test Subjects with Test Doubles
  • 16. John Liebenau Enterprise Architecture / Software Engineering Best Practices Depend on Interfaces (not Implementations) • Types of variables and parameters should be interfaces • Clients only know about the interfaces they expect • Clients remain unaware of the classes that implement the objects they use • Greatly reduces implementation dependencies between objects Apply Single Responsibility Principle • Design classes that each have only one overarching responsibility • All methods of such a class are aligned to supporting its responsibility • Complex behavior is formed by interacting networks of objects each responsible for elements of the behavior Favor Object Composition over Class Inheritance • Helps keep each class encapsulated and focused on one responsibility • Classes and class hierarchies will remain small and will be less likely to grow to be unmanageable Isolate Unit Test Subjects with Test Doubles • Set up test subjects with test doubles in order to isolate test subjects for unit testing Optimize tests to run as fast as possible • Once tests are in place, look for opportunities to improve test performance • Faster tests mean faster feedback
  • 17. John Liebenau Enterprise Architecture / Software Engineering 17 1/27/2021 Structure of a Unit Test OrderServiceImpl - notifier: TraderNotifier - repository: OrderRepository «action» + processOrder(OrderRequest) : OrderResponse «modifier» + setRepository(OrderRepository) : void + setTraderNotifier(TraderNotifier) : void OrderServiceTest «creator» + setUp() : void «destroyer» + tearDown() : void «test» + testProcessOrder() : void «interface» OrderRepository «modifier» + insertOrder(Order) : void + removeOrder(Order) : void «selector» + getOrder(OrderId) : Order + getOrders(OrderCriteria) : Collection<Order> «query» + hasOrder(OrderId) : boolean «interface» TraderNotifier «notifier» + notifyCreatedOrder(CreatedOrderDto) : void + notifyCancelledOrder(CancelledOrderDto) : void «interface» OrderService «action» + processOrder(OrderRequest) : OrderResponse MockTraderNotifier InMemoryOrderRepository Inteface Class Being Tested Test Case Mock (Test Double) Fake (Test Double) Legend configures configures uses uses tests
  • 18. John Liebenau Enterprise Architecture / Software Engineering 18 1/27/2021 Structure of an Integration Test OrderServiceImpl - notifier: TraderNotifier - repository: OrderRepository «action» + processOrder(OrderRequest) : OrderResponse «modifier» + setRepository(OrderRepository) : void + setTraderNotifier(TraderNotifier) : void OrderServiceTest «creator» + setUp() : void «destroyer» + tearDown() : void «test» + testProcessOrder() : void «interface» OrderRepository «modifier» + insertOrder(Order) : void + removeOrder(Order) : void «selector» + getOrder(OrderId) : Order + getOrders(OrderCriteria) : Collection<Order> «query» + hasOrder(OrderId) : boolean «interface» TraderNotifier «notifier» + notifyCreatedOrder(CreatedOrderDto) : void + notifyCancelledOrder(CancelledOrderDto) : void «interface» OrderService «action» + processOrder(OrderRequest) : OrderResponse InMemoryOrderRepository Inteface Test Subject Test Case Mock (Test Double) Fake (Test Double) Legend ActualTraderNotifier DbOrderRepository Can use fake or real depending on the integration test. tests uses uses configures tests tests
  • 19. John Liebenau Enterprise Architecture / Software Engineering 19 1/27/2021 Developing a New Class with Unit Testing 1. Declare the class interface 2. Specify each method's preconditions and postconditions (where necessary) 3. Implement each method as a stub 4. Write or generate the unit test skeleton 5. For each public method in the class, implement the test based on the preconditions and postconditions 6. Implement a method in the class 7. Run the tests 8. If the test passes repeat with another method, else fix the method or the test (which ever is incorrect) and rerun the test 9. Repeat this process until all methods are fully implemented and pass all of the tests
  • 20. John Liebenau Enterprise Architecture / Software Engineering 20 1/27/2021 Changing Released Code with Automated Testing 1. Identify how or where bug or enhancement affects code 2. Add test(s) that exercises bug or enhancement • Could involve unit test, integration test, and acceptance test 3. Run test(s) • The test (or tests) must fail • Failure is the indication that the test exercises the bug or enhancement 4. Fix affected method(s) for a bug fix or add the necessary functionality for an enhancement 5. Run all tests • This includes all unit tests, integration tests, and acceptance tests 6. If all tests pass, then issue new release, else continue fixing and rerun tests until all tests pass
  • 21. John Liebenau Enterprise Architecture / Software Engineering Appendix 21
  • 22. John Liebenau Enterprise Architecture / Software Engineering 22 1/27/2021 Testing Tools and Frameworks Test Level Tools Information Acceptance Testing Fit http://fit.c2.com/ Fitnesse http://fitnesse.org/ Custom developed tools Integration Testing JUnit http://www.junit.org/ NUnit http://www.nunit.org/ MS Testing Framework http://msdn.microsoft.com/en-us/library/ms243147.aspx Unit Testing JUnit http://www.junit.org/ NUnit http://www.nunit.org/ MS Testing Framework http://msdn.microsoft.com/en-us/library/ms243147.aspx HtmlUnit http://htmlunit.sourceforge.net/ JMock http://www.jmock.org/ Moq http://code.google.com/p/moq/
  • 23. John Liebenau Enterprise Architecture / Software Engineering 23 1/27/2021 Additional Information Books • xUnit Test Patterns ─ http://www.amazon.com/xUnit-Test-Patterns-Refactoring-Code/dp/0131495054 • Growing Object-Oriented Software Guided By Tests ─ http://www.amazon.com/Growing-Object-Oriented-Software-Guided-Tests/dp/0321503627 • Continuous Delivery ─ http://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912 Web Sites • http://xunitpatterns.com/ • http://www.javaworld.com/javaworld/jw-05-2004/jw-0510-tdd.html • http://www.junit.org/ • http://www.nunit.org/ • http://continuousdelivery.com