Oniyosys Agile Testing: Efficient software testing services that deliver high-quality, stable software

Agile Testing
Oniyosys

In the world of software development, the term agile typically refers to any approach to project management that strives to unite teams around the principles of collaboration, flexibility, simplicity, transparency, and responsiveness to feedback throughout the entire process of developing a new program or product. And Agile Testing generally means the practice of testing software for bugs or performance issues within the context of an agile workflow.

Testing using Agile Methodology is the buzzword in the industry as it yields quick and reliable testing results. The following course is designed for beginners with no Agile Experience. Unlike the WaterFall method, Agile Testing can begin at the start of the project with continuous integration between development and testing. Agile Testing is not sequential (in the sense it’s executed only after coding phase) but continuous.

Agile team works as a single team towards a common objective of achieving Quality. Agile Testing has shorter time frames called iterations (say from 1 to 4 weeks). This methodology is also called release, or delivery driven approach since it gives a better prediction on the workable products in short duration of time

Test Plan for Agile

Unlike waterfall model, in an agile model, test plan is written and updated for every release. The Agile test plan includes types of testing done in that iteration like test data requirements, infrastructure, test environments and test results. Typical test plans in agile includes:

  1. Testing Scope
  2. New functionalities which are being tested
  3. Level or Types of testing based on the features complexity
  4. Load and Performance Testing
  5. Infrastructure Consideration
  6. Mitigation or Risks Plan
  7. Resourcing
  8. Deliverables and Milestones

 

Agile Testing Strategies

Agile testing life cycle spans through four stages:

1. Iteration 0

During first stage or iteration 0, you perform initial setup tasks. It includes identifying people for testing, installing testing tools, scheduling resources (usability testing lab), etc. The following steps are set to achieve in Iteration 0

  • Establishing a business case for the project
  • Establish the boundary conditions and the project scope
  • Outline the key requirements and use cases that will drive the design trade-offs
  • Outline one or more candidate architectures
  • Identifying the risk
  • Cost estimation and prepare a preliminary project

2. Construction Iterations

The second phase of testing is Construction Iterations, the majority of the testing occurs during this phase. This phase is observed as a set of iterations to build an increment of the solution. In order to do that, within each iteration, the team implements a hybrid of practices from XP, Scrum, Agile modelling, and agile data and so on.

In construction iteration, agile team follows the prioritized requirement practice: With each iteration they take the most essential requirements remaining from the work item stack and implement them.

Construction iteration is classified into two, confirmatory testing and investigative testing. Confirmatory testing concentrates on verifying that the system fulfils the intent of the stakeholders as described to the team to date, and is performed by the team. While the investigative testing detects the problem that confirmatory team have skipped or ignored. In Investigative testing, tester determines the potential problems in the form of defect stories. Investigative testing deals with common issues like integration testing, load/stress testing and security testing.

Again for, confirmatory testing there are two aspects developer testing and Agile Acceptance Testing. Both of them are automated to enable continuous regression testing throughout the lifecycle. Confirmatory testing is the agile equivalent of testing to the specification.

Agile acceptance testing is a combination of traditional functional testing and traditional acceptance testing as the development team, and stakeholders are doing it together. While developer testing is a mix of traditional unit testing and traditional service integration testing. Developer testing verifies both the application code and the database schema.

3. Release End Game or Transition Phase

The goal of “Release, End Game” is to deploy your system successfully into production. The activities include in this phase are training of end users, support people and operational people. Also, it includes marketing of the product release, back-up & restoration, finalization of system and user documentation.

The final testing stage includes full system testing and acceptance testing.  In accordance to finish your final testing stage without any obstacles, you should have to test the product more rigorously while it is in construction iterations. During the end game, testers will be working on its defect stories.

4. Production

After release stage, the product will move to the production stage.

 

The Agile Testing Quadrants

The Agile Testing quadrants separates the whole process in four Quadrants and helps to understand how agile testing is performed.

  1. a) Agile Quadrant I – The internal code quality is the main focus in this quadrant, and it consists of test cases which are technology driven and are implemented to support the team, it includes:
  1. Unit Tests
  2. Component Tests
  1. b) Agile Quadrant II – It contains test cases that are business driven and are implemented to support the team. This Quadrant focuses on the requirements. The kind of test performed in this phase is:
  1. Testing of examples of possible scenarios and workflows
  2. Testing of User experience such as prototypes
  3. Pair testing
  1. c) Agile Quadrant III – This quadrant provide feedback to quadrants one and two. The test cases can be used as the basis to perform automation testing. In this quadrant, many rounds of iteration reviews are carried out which builds confidence in the product. The kind of testing done in this quadrant is:
  1. Usability Testing
  2. Exploratory Testing
  3. Pair testing with customers
  4. Collaborative testing
  5. User acceptance testing
  1. d) Agile Quadrant IV – This quadrant concentrates on the non-functional requirements such as performance, security, stability, etc. With the help of this quadrant, the application is made to deliver the non-functional qualities and expected value.
  1. Non-functional tests such as stress and performance testing
  2. Security testing with respect to authentication and hacking
  3. Infrastructure testing
  4. Data migration testing
  5. Scalability testing
  6. Data migration testing
  7. Scalability testing
  8. Load testing

In the world of software development, the term agile typically refers to any approach to project management that strives to unite teams around the principles of collaboration, flexibility, simplicity, transparency, and responsiveness to feedback throughout the entire process of developing a new program or product. And Agile Testing generally means the practice of testing software for bugs or performance issues within the context of an agile workflow.

Testing using Agile Methodology is the buzzword in the industry as it yields quick and reliable testing results. The following course is designed for beginners with no Agile Experience.

Unlike the WaterFall method, Agile Testing can begin at the start of the project with continuous integration between development and testing. Agile Testing is not sequential (in the sense it’s executed only after coding phase) but continuous.

Agile team works as a single team towards a common objective of achieving Quality. Agile Testing has shorter time frames called iterations (say from 1 to 4 weeks). This methodology is also called release, or delivery driven approach since it gives a better prediction on the workable products in short duration of time

 

Oniyosys Agile Testing Methodology and Approach

We understand the QA challenges that can arise when implementing testing in an Agile environment: Communication on larger-scale Agile projects with globally distributed teams; incorporating risk planning and avoidance; accounting for management loss of controlling time and budget; maintaining flexibility versus planning; and not getting side-tracked by speed of delivery over quality software.

Using a collaborative network-based approach, Oniyosys defines clear, shared goals and objectives across all teams both internally and client-side for improved velocity, quality software, and customer user satisfaction — resulting in stakeholder buy-in for metrics that matter.

Fully transparent updates and reports are shared with a strong focus on immediate feedback, analysis and action.

Our metrics provide:

  1. Information used to target improvements — minimizing mistakes and rework
  2. Purposeful evaluation for actionable takeaways — helping our clients utilize resources effectively
  3. Insights for process optimization — predicting possible problems; enabling clients to fix defects immediately rather than later reducing overall costs

Oniyosys DevOps Methodology Testing: Helping developers and small teams work smarter

DevOps
Oniyosys

DevOps is the offspring of agile software development – born from the need to keep up with the increased software velocity and throughput agile methods have achieved. Advancements in agile culture and methods over the last decade exposed the need for a more holistic approach to the end-to-end software delivery lifecycle.

What is DevOps?

DevOps – a combination of Development & Operations – is a software development methodology which looks to integrate all the software development functions from development to operations within the same cycle.

This calls for higher level of coordination within the various stakeholders in the software development process (namely Development, QA & Operations)

So an ideal DevOps cycle would start from:

  1. The dev writing code
  2. Building & deploying of binaries on a QA environment
  3. Executing test cases and finally
  4. Deploying on to Production in one smooth integrated flow
  5. Obviously, this approach places great emphasis on automation of build, deployment and testing. Use of Continuous Integration (CI) tools, automation testing tools become a norm in a DevOps cycle

What Is the Goal of DevOps?

Improve collaboration between all stakeholders from planning through delivery and automation of the delivery process in order to:

  1. Improve deployment frequency
  2. Achieve faster time to market
  3. Lower failure rate of new releases
  4. Shorten lead time between fixes
  5. Improve mean time to recovery
  6. According to the 2015 State of DevOps Report, “high-performing IT organizations deploy 30x more frequently with 200x shorter lead times; they have 60x fewer failures and recover 168x faster.”
  7. A Common Pre-DevOps Scenario
  8. The software team meets prior to starting a new software project. The team includes developers, testers, operations and support professionals. This team plans how to create working software that is ready for deployment.

Each day new code is deployed as the developers complete it. Automated testing ensures the code is ready to be deployed. After the code passes all the automated testing it is deployed to a small number of users. The new code is monitored for a short period to ensure there are no unforeseen problems and it is stable. The new code is then proliferated to the remaining users once the monitoring shows that it is stable. Many, if not all, of the steps after planning and development are done with no human intervention.

What Are the Phases of DevOps Maturity?

There are several phases to DevOps maturity; here are a few of the key phases you need to know.

Waterfall Development

Before continuous integration, development teams would write a bunch of code for three to four months. Then those teams would merge their code in order to release it. The different versions of code would be so different and have so many changes that the actual integration step could take months. This process was very unproductive.

Continuous Integration

Continuous integration is the practice of quickly integrating newly developed code with the main body of code that is to be released. Continuous integration saves a lot of time when the team is ready to release the code.

DevOps didn’t come up with this term. Continuous integration is an agile engineering practice originating from the Extreme Programming methodology. The terms been around for a while, but DevOps has adopted this term because automation is required to successfully execute continuous integration. Continuous integration is often the first step down the path toward DevOps maturity.

The continuous integration process from a DevOps perspective involves checking your code in, compiling it into usable (often binary executable) code and running some basic validation testing.

Continuous Delivery

Continuous delivery is an extension of continuous integration [DevOps stage 2]. It sits on top of continuous integration. When executing continuous delivery, you add additional automation and testing so that you don’t just merge the code with the main code line frequently, but you get the code nearly ready to deploy with almost no human intervention. It’s the practice of having the code base continuously in a ready-to-deploy state.

Continuous Deployment

Continuous deployment, not to be confused with continuous delivery [DevOps nirvana], is the most advanced evolution of continuous delivery. It’s the practice of deploying all the way into production without any human intervention.

At Oniyosys, we utilize continuous delivery, don’t deploy untested code; instead, newly created code runs through automated testing before it gets pushed out to production. The code release typically only goes to a small percentage of users and there’s an automated feedback loop that monitors quality and usage before the code is propagated further.