7 Step process for Performance testing web applications

Important write-up for folks who are new to performance testing.

According to the Microsoft Developer Network the Performance Testing Methodology consists of the following activities:

  1. Identify the Test Environment. Identify the physical test environment and the production environment as well as the tools and resources available to the test team. The physical environment includes hardware, software, and network configurations. Having a thorough understanding of the entire test environment at the outset enables more efficient test design and planning and helps you identify testing challenges early in the project. In some situations, this process must be revisited periodically throughout the project’s life cycle.
  2. Identify Performance Acceptance Criteria. Identify the response time, throughput, and resource-use goals and constraints. In general, response time is a user concern, throughput is a business concern, and resource use is a system concern. Additionally, identify project success criteria that may not be captured by those goals and constraints; for example, using performance tests to evaluate which combination of configuration settings will result in the most desirable performance characteristics.
  3. Plan and Design Tests. Identify key scenarios, determine variability among representative users and how to simulate that variability, define test data, and establish metrics to be collected. Consolidate this information into one or more models of system usage to be implemented, executed, and analyzed.
  4. Configure the Test Environment. Prepare the test environment, tools, and resources necessary to execute each strategy, as features and components become available for test. Ensure that the test environment is instrumented for resource monitoring as necessary.
  5. Implement the Test Design. Develop the performance tests in accordance with the test design.
  6. Execute the Test. Run and monitor your tests. Validate the tests, test data, and results collection. Execute validated tests for analysis while monitoring the test and the test environment.
  7. Analyze Results, Tune, and Retest. Analyse, Consolidate and share results data. Make a tuning change and retest. Compare the results of both tests. Each improvement made will return smaller improvement than the previous improvement. When do you stop? When you reach a CPU bottleneck, the choices then are either improve the code or add more CPU.

What can disrupt mobile app testing in future?

In STC 2019 conference, pCloudy hosted a contest “What can disrupt mobile app testing in 2025?”. I participated and won the contest. Below are my thoughts on mobile app testing in 2025:

Intelligent Digital Mesh:

Intelligent Digital Mesh is the mesh of people, devices, digital content and services. It will transform the mobile businesses and apps.

1. Intelligent apps use AI and machine learning to interact in a more intelligent way with people and surroundings. A recent example is Google’s Motion Sense feature in pixel 4 (radar-based technology developed by Google) where you can control apps on mobile by moving hand/fingers in air without touching the mobile screen.

Soon this will be adopted by mobile apps and the challenge will be how to test such features. Next is what if we implement AI/ML in Motion Sense tech where system learns the user gestures.

2. Conversational platforms (like Alexa, Google Assistant, Siri) when integrated with digital twins or AR/VR and mixed reality are changing the way that people perceive and interact with the digital world and devices.

3. Block chain, event driven when combined with AI/ML and Conversational platforms will make the testing further complicated.

We need to build strong AI/ML automated algo for mobile testing to test all the above mentioned stack.

Note – Intelligent Digital Mesh is in the Gartner’s Top 10 Strategic Technology Trends for future from last couple of years.

Gartner – Top 10 Strategic Technology Trends for 2017
Gartner Top 10 Strategic Technology Trends for 2018
Gartner Top 10 Strategic Technology Trends for 2019
Gartner Top 10 Strategic Technology Trends for 2020

AI in Test Automation – Part 1

AI in Software Testing

A couple of years back, the focus of Testing was “Shift Left”. It is still the focus for the companies who are not able to adopt the Shift Left practices.

Now after Shift Left / CI/CD, Automation tool companies are now looking how to bring intelligence in Test automation which can help in better test coverage and delivering quality at speed.

In this post, we will go over some intelligent features of Functionize and how they are using AI in bringing intelligence in automation and efficiency in Quality and Delivery.

Artificial intelligence ( Machine learning, Computer Vision & Natural language processing) can help in speeding up the automation test scripting, analysis and maintenance.

Below are some of the examples of how Functionize is using AI which helps in delivering Quality@Speed:

  1. Faster test creation: Write tests in plain English (no, not Gherkin) and the framework with identify the objects by analyzing the DOM and perform actions. Example below:
    • Open xyz.com
    • Enter Username “abc”
    • Enter password “asdf123”
    • Navigate to Contact module.
    • Click in person record “Braidy”
  2. Self Healing Scripts: Framework identifies the script failure reasons(due to change in object properties) and give your suggestions on fixing the scripts or fix the script by itself?
  3. Autonomous Testing: All you need to do is – place a their tracking widget in your web app. Functionize will automatically create new test cases based on how live users interact with your site.

I am sure this short post will give you some ideas – how AI/ML can make our life easy and can help in delivering fast with quality.

What is TestOps? TestOps – Chasing the White Whale by Ioana Serban

TestOps is the reclusive member of the DevOps family. Reports of sightings have been few and far between. Although we’ve heard stories, most of us don’t know anyone who’s actually seen it in the wild. I’ve turned to my personal experience as a tester to search for clues about what TestOps is. We’ll talk about what testers have to offer in a DevOps environment and look at the magical things that happen when the worlds of testing and operations collide.

There will be real-life stories, including: simulating an environment migration under production-like traffic (+ screwing it up and learning from it)choosing an AWS architecture with actual test data to compare performance for different instance types busting the myth that you can mitigate a DOS threat by scaling horizontally. Finally, we’ll dare to look into the future at what can happen when intentionally applying a TestOps mentality to our job and what regular teams can do to get there.

Key takeaways: How getting testers involved in DevOps brings actual value.Why applying a TestOps mentality to your work can open the door to a whole new type of testing.Getting there is not as hard as you think!

Author: Ioana Serba

Taking Control Of Your Test Environment

“Taking Control Of Your Test Environment” by Ioana Serban

Most of us have had to deal with red builds blocking our testing or have been told to test on flaky environments where half the issues you find would ‘never happen in production’. As a tester, I used to think this wasn’t my problem.

What happens though when a thinking tester decides this is her problem and wants to be part of the solution?

This talk exposes some of the possible causes why builds stay red or an environment is “flaky”. For instance: 1. There are bugs in your build. 2. You are dependent on a third-party system that is not functioning correctly. 3. Your deployment may have gone awry, something may be missing. 4. Your environment is not set up in a consistent way.

We’ll look at some approaches that target each of these causes and show testers how they can acquire the skills necessary to take control of their test environment.

In case of bugs in existing functionality, you need to ask yourself: Are you running automated checks against the build? If yes, either you don’t have the right checks in place, are ignoring failed checks, or, even worse, the issue is intermittent. Testers that seek out a deep technical understanding of their product can be capable of chasing an issue down the whole technology stack without relying on a developer.

Stubbing out a third-party service can counteract uncertainty about the functionality of your own product. To deal with the real issue though, a tester can communicate directly with the third-party team, providing information to and from both sides.

Testers can get involved with the automation of both the deployment and environment setup, which are traditionally Operations roles. This is also often the realm of “magic scripts” that are not considered part of the deliverables and are not properly tested. A tester’s input can be very valuable here.

Speaker Bio: Ioana Serban started working as a Software Engineer in Test in 2011. With a strong leaning towards the more technical side of testing, she’s interested in learning all aspects of the craft and is a big fan of challenging assumptions of what a tester is or isn’t “supposed” to do. Ioana previously worked for Adobe and is currently working for eBay as an embedded tester in an agile team. She Blogs at https://medium.com/@ioanasaysgo

Foundation for Effective Test Automation

Here are 5 best practices from @testcraft.io to consider when it comes to designing tests effectively:

Test Design Rule #1 – Keep Your Tests Short and Simple

When thinking of how to design your tests, make sure that they abide by the KISS principle: Keep It Simple, Stupid.

No matter what you’re testing, we recommend keeping your automated tests between 5-15 steps so that they’re simple and easy to understand

Test Design Rule #2 – Build Your Tests From Reusable Components

One great way to keep your tests simple is by reusing the same components when building them.

Test Design Rule #3 – Every Test Should Be Independent

Keeping your tests independent also prevents unnecessary test breakage. If feature B changes in an application under test, there should be no need to update the tests for feature A to ensure that it continues to run.

Test Design Rule #4 – All Tests Should Have a Purpose

Defining a purpose at the start of the design process and identifying that as a clear goal throughout the design will make sure that your tests continue to stay relevant and helpful.

Test Design Rule #5 – Don’t Forget the End User

Keeping your end users in mind will also help when mitigating risk. When designing your tests, focus on different ways a user can break it. 

Read detailed tips at https://www.testcraft.io/

Most Exhaustive WebDriver Locators Cheat Sheet.

Download the most extensive Selenium WebDriver Locators cheat sheet. All you need to to know- the most basic locators to the most advanced ones. Contains:

  • full list of the most used CSS selectors
  • complete list of the most used XPath selectors
  • CSS and XPath locators about parent and child relations
  • most widely used XPath axes selectors
  • CSS pseudo-classes locators
  • selectors for working with HTML tables

Click here to download.

Cheatsheet provided by www.automatetheplanet.com.

Full Stack QE Competency

  • Systems thinking
  • Software Testing & Test Design
  • End User Thinking
  • Test Management to reporting, analytics, and matrices
  • Performance Engineering
    • Service Level Performance
    • Client Side Profiling
    • BFF Performance
    • DB Performance
  • UI Level Functional Testing & End to End Testing
  • Code Quality and Coverage
  • Exploratory Testing
  • Service Level Functional Testing & End to End Testing
  • CI/CD (DevOps mindset)
  • Continuous Testing Mindset
  • Product Expertise
  • Understanding System Architecture & Design
  • Security Testing
  • Unit Testing & Test-Driven Development
  • Effective Communication & Leadership

The main responsibility, however, lies a bit deeper. A full stack QE engineer should act as the driving force of Quality in a team. Working together with the Software engineers, it will be their responsibility to implement a “Quality is everyone’s responsibility” mindset.

If DevOps is the goal of your company, the person that will play a testing and quality consultant role should be the Full Stack QE.

The road from “Quality Engineer” to “full-stack QE” is a long and challenging one, but a full stack QE will find that there are more career opportunities available, and they will have the opportunity to have a much greater influence on the product, which will reach the end-user at a higher level of quality and speed than ever before.

Source: http://syscolabs.lk/blog/full-stack-quality-engineering/

Prerequisites for Payment Gateway Testing

You need to do the following before you begin testing.

  1. Gather proper data for the dummy cards, including visa, master, etc.
  2. Gather payment gateway information, like PayPal.
  3. Gather error codes related to the payment gateway.
  4. Know the parameters that are passed through the payment gateway.
  5. Know the information that are passed through query string.
  6. Check the language of the payment gateway and the application.

References – https://www.360logica.com/blog/

Payment Gateway Testing – Sample Test Cases

You can consider the following sample test cases for payment gateway testing.

  1. Change the language of the payment gateway during the payment process.
  2. Check whether the important components are retrieved or not after the payment.
  3. Check the response if the payment gateway stops responding.
  4. Check what happens in the back end and if the session ends.
  5. Check what happens if the payment fails.
  6. Check if the database stores the card details or not.
  7. Check the errors during the payment process.
  8. Check the response after turning the pop up blocker on and off.
  9. Check the buffer page between the payment gateway and application.
  10. Check what happens after successful payment.
  11. Verify the transaction process.
  12. Check the messages and verify it after successful payment process.
  13. Check the currency format of the payment.
  14. Check if the payment option opens the respective payment gateway after selection.
  15. Verify the default debit card option.

References – https://www.360logica.com/blog/