Quality For Developers
Quality For Developers
What do you think ??????
Testing Good Bad And Ugly
Understanding - Cost of test Wrong way
Understanding - Cost of test Right way
"Agile Development" is an umbrella term for several iterative and incremental software development methodologies
Basic Understanding - Unit Test
● Focused on testing behavior of a
particular class, module or method.
● Smallest part of the application.
● Fast (less than 0.1 second per test)
● No external implementation
dependencies
(filesystem, database, web services, etc.). All
dependencies are faked for the test context.
● Can easily be parallelized, since each test is atomic
Basic Understanding - Integration Test
● Focused on verifying the integration
of one or more components together.
● May have external dependencies.
● A test that takes longer than a unit
Test should
Integration Tests - with in WSO2 ● Executes on product pack created by build.
● Not depending on other product environments.
● Independent.
● Lightweight.
● Covers only scenarios related to features on individual product.
How tests really looks like
Platform - Platform Tests
Cross Platform Tests
Product - Integration Tests
Component - Unit Tests
Component - Unit Tests
Component - Unit Tests
Component - Unit Tests
Product - Integration Tests
Component - Unit Tests
Component - Unit Tests
Component - Unit Tests
Component - Unit Tests
Product - Integration Tests
Component - Unit Tests
Component - Unit Tests
Component - Unit Tests
Component - Unit Tests
Product - Integration Tests
Component - Unit Tests
Component - Unit Tests
Component - Unit Tests
Component - Unit Tests
● Platform scenarios.
● Integration scenarios.
● UI scenarios.
● Real world use cases.
● Performance and Security scenarios.
● Patches provided.
Technologies for Automation
Test Framework Build Systems
Code Coverage
Extensibility Support
UI Automation
●
●
●
○ Trigger out TestNg.
○ Control TestNG flow (Through Surefire TestNg Utils)
○ Generate reports. (Html, XML and emailable report)
Execution Started@BeforeSuite
@BeforeTest
@AfterTest
@AfterSuite
Execution Closed
@BeforeClass
@BeforeGroups
@BeforeMethod
@AfterMethod
@AfterGroups
@AfterClass
● Listeners are interfaces allows to modify TestNG's
behavior.
● Listeners are binned to a testNg execution.
● Listeners implement the interface org.testng.ITestListener○ IExecutionListener
■ Triggers at start and end of any execution.■ ISuiteListener.
○■ Triggers at suite start and end.ITestListener■ Triggers at Test start, Finish, Failure, Skip and partial failure.
● Reporters implement the interface org.testng.IReporter ○ Notified when all the suites have been run by TestNG. ○ The IReporter instance receives a summary of entire test run
●
○ Offline instrumentation
○ On fly instrumentation
●
●
○ Code coverage
○ Class coverage
○ cyclomatic complexity
● Reduces the amount of duplicated code. ● Encapsulate the internal state of a page into a single
page object.● UI changes only affect to a single Page Object, not to
the actual test codes. ● Code reuse: Able to use the same page object in a
variety of tests cases.
Page Object Class
Mapper.properties
Test Class
Questions?