Practical Tips to Speed up the Software Delivery Performance

This post will give you enough ideas to improve software delivery performance (and Automation Plays a key role here) and how to measure software delivery performance using statistical methods. I would like to share industry proven and practical tips which helps you speed up the Software Delivery Performance.

Accelerate classified the capabilities into 4 categories:

Technology & Automation capabilities:

Product and Process Capabilities:

Lean Management and Monitoring Capabilities:

Cultural Capabilities:

In next couple of articles, we will go over these capabilities one by one.

Why You Should Consider the Testing Pyramid Structure?

The purpose of the test pyramid is to provide a structure for designing and executing tests. It is also the cornerstone of testing at Google.

The test pyramid has four layers – unit tests, service tests, integration tests, end-to-end or acceptance tests. By dividing up the different types of tests into these levels, it becomes easier to decide what type of testing needs to be done when building and maintaining software.

At the bottom are unit tests. Unit tests are “white box” tests because they interact directly with product code. They typically perform operations on functions, methods, and classes. Unit tests should be concise, to the point, and focused on a single object/variation. They should be devoid of external dependencies and should instead rely on mocks/monkey-patching. These tests took less time to execute.

Integration tests are located in the center. Integration tests examine the point at which two distinct entities come together. They should be “black box” in nature, interacting with actual instances of the product being tested, rather than with code. Integration tests include service call tests (REST, SOAP, and others).

End-to-end tests are at top level. End-to-end tests trace a system’s path. They could be argued to be a multi-step integration test, and they should also be “black box.” Typically, they interact with the product in the same way that a real user would. Web UI tests are an example of integration tests, as they require the entire stack to run.

And manual testing is the cherry on top. Certain types of tests, such as exploratory or usability testing, cannot be automated, but we should always strive to minimize the number of manual tests.

You should be aware that as we progress up the pyramid, three factors begin to increase:

  • Costs associated with the development and maintenance of tests
  • Time frame for execution
  • Possibility of erroneous negatives

Key aspects relating to the software testing pyramid include the following:

Avoid conducting duplicate tests at multiple levels. There is no reason to conduct the same tests at various levels. For instance, if boundary values were validated in unit tests, they should not be repeated in the GUI – you will not obtain any new data.

One should strive to reduce the difficulty of tests whenever possible. For example, you can verify interest calculation on a negative sum at a “medium level” or even at the unit test level. Therefore, why should you do it at the UI level? Lower-level test automation is more efficient; it enables you to identify defects earlier and saves you time and money.

Automation, Containerization/Docker Interview: 14 Questions You Should Be Prepared To Answer

This is a list of awesome Containerization/Docker Interview Questions for Testers. These are shared with in one of our groups. Please email us at i.m@fullstackqe.org, we will give the credit to the awesome person who prepared this list.

Software Testing at – Google, Apple, Facebook, Amazon & Spotify

Google takes testing seriously:

To that end, Google employs a four-stage testing process for changes to the search engine, consisting of:

Testing by dedicated, internal testers (Google employees)

Further testing on a crowdtesting platform

“Dogfooding,” which involves having Google employees use the product in their daily work

Beta testing, which involves releasing the product to a small group of Google product end users

Facebook: Developer-driven testing

Facebook employs a wide variety of automated testing solutions. The tools that are used range from PHPUnit for back-end unit testing to Jest (a JavaScript test tool developed internally at Facebook) to Watir for end-to-end testing efforts.

Amazon: Deployment comes first

The feeling at Amazon is that its development and deployment processes are so mature (the company famously deploys software every 11.6 seconds!) that there is no need for elaborate and extensive testing efforts. It is all about making software easy to deploy, and, equally if not more important, easy to roll back in case of a failure.

Spotify: Squads, tribes and chapters

Testing at Spotify is taken very seriously. Just like programming, testing is considered a creative process, and something that cannot be (fully) automated. Contrary to most other companies mentioned in this article, Spotify heavily relies on dedicated testers that explore and evaluate the product, instead of trying to automate as much as possible.

Microsoft: Engineers and testers are one

Microsoft’s ratio of testers to developers is currently around 2:3 (SDETs)

Source: 5 effective and powerful ways to test like tech giants: https://bit.ly/2nkjIvy

Career Roadmap for SDET – Automation

SDET-Career-Roadmap
(image embedded in video to enable HD format readability)

Stage 1 – Starting Point:

Learn a programming language in-depth preferably one of these – Java, JavaScript, Python

Stage 2 – Front End Automation:

Key Tools:
Web — Selenium, Protractor, Webdriver.io, Puppeteer, Cypress.
Mobile — Appium, Espresso, XCUITest.
Desktop — UFT, UiPath

Stage 3 – Backend Automation:

Key Tools: SOAP — SoapUI.
RESTful, GraphQL — PostMan, RestAssured, RestSharp,Karate.
gRPC — BloomRPC

Stage 4 – DevOps Automation:

Key Tools:
Code & Build — Git, Bitbucket, Maven, Gradle, WebPack, Docker
Packaging— Docker, Ansible, Puppet, Chef
Release & Configure — Jenkins, Docker Swarm, Kubernetes, GitLab, GitHub Actions

Stage 5 – Cloud Automation:

Key Tools:
AWS Services — EC2, S3, Lambda, SNS, Glacier, RDS, VPC

Read complete details at: https://babu-manickam.medium.com/career-roadmap-for-functional-test-automation-developers-611b77f126ac

[Free Watch] Masterclass: AI and Machine Learning Skills for the Software Testing World

In this 6 Hrs long masterclass video, Tariq discusses how we can innovate and make our testing better through smarter automation and the use of artificial intelligence.

Tariq King is the senior director and engineering fellow for quality and performance at Ultimate Software. With more than fifteen years’ experience in software testing research and practice, Tariq heads Ultimate Software’s quality program by providing technical and people leadership, strategic direction, staff training, and research and development in software quality and testing practices. His primary research interest is engineering autonomous self-testing systems. He is cofounder with Jason Arbon of the Artificial Intelligence for Software Testing Association.

Here is the Video:

Finally an online Software Testing Conference with great speakers, great agenda and decent price. #testcon2020

Testcon2020 Virtual Summit on 25th & 26th September.

Register and learn https://bit.ly/Testcon2020

[Must check Speakers and Agenda, even if you don’t want to register. You will love the topics].

Register Now & Get Flat 20% Discount on tickets. Use code [STT20]

  • India: INR 1200/-
  • Other Countries: USD 16

TestCon 2020 is the Software Testing Conference that brings together hundreds of Test Professionals, who seek to improve their skills to fit new market requirements and stay tuned with the latest trends!

Check out the exciting Speaker Lineup and Agenda here: https://bit.ly/Testcon2020

Understanding Parallel Testing in Test Automation (Part 1)

Parallel testing is an automated testing process that developers and testers can launch multiple tests against different real device combinations and browser configurations simultaneously. The goal of parallel testing is to resolve the constraints of time by distributing tests across available resources.

For example, if 20 test cases take a total of 100 minutes to complete, then 10 parallel execution could run 2 test cases each and bring the total testing time down to 10 minutes. Ideally, if you have sufficient resources, say 20 real mobile devices and real browsers for simultaneous execution of 20 test cases, then you’ll be able to significantly shrink the runtime to 5 minutes.


Benefits of Parallel Testing:

Speed: Sequential testing is time-consuming, while parallel testing will allow you to divide invested time by the number of environments. In order to test your application against ten devices, all you need to do is write only ONE script and run it against all your target devices, cutting your testing time by ten times.

Cost-Efficiency: The building, maintaining and keeping your own test environment up-to-date can burn a hole in your pocket. When it comes to parallel testing, maintenance isn’t a headache anymore — in fact, you lease the needed testing environment, always updated. Plus, cloud-based testing grids allow you to run tests at high concurrency, making the cost per test significantly lower.

Better Coverage: It’s always a good idea to run your application through as many platform-device-browser combinations as possible so that no bug sneaks in. Parallel testing will take your test coverage to the next level, giving you a significant ROI boost.

Optimization of Your CI/CD Processes: Parallel testing is the best friend of continuous integration and delivery. By testing in parallel, you can run tests as soon as developers submit new code updates throughout the entire SDLC. Timely reporting and quick feedback in parallel testing will also facilitate better communication between various departments.

Improvement of Testing Practices: Parallel testing improves the QA routine in your company. The reason is crystal clear: by testing at high speed, you can test more. This gives your QA team a chance to improve their testing practices and pinpoint bugs faster.

Read Part 2: Tips for Successful Parallel Testing

Source

Meeting CI/CD Requirements: Key Factors in Test Automation We Must Consider [Video]

Automated tests are a key component of CI (continuous integration) pipelines. They provide confidence that with newly added check-ins, the build will still work as expected. In some cases, the automated tests have the additional role of gating deployments upon failure.

With such a critical responsibility, it’s important that automated tests are developed to meet the needs of continuous integration.

In this video, Angie Jones (Applitools) and Jessica Deen (Microsoft) discussed key factors that should be considered when writing tests that will run as part of CI.

Angie and Jessica also showed a live demo of integrating frontend tests to your pipeline within an Azure DevOps build — so we can see all those theories come to life.

Benefits of real device testing on AWS Device Farm (with Demo)

AWS Device Farm - Mobile Testing

Benefits of AWS Device Farm

Use the same devices your customers use:
Run tests and interact with a large selection of physical devices. Unlike emulators, physical devices give you a more accurate understanding of the way users interact with your app by taking into account factors like memory, CPU usage, location, and modifications made by manufactures and carriers to the firmware and software. We are always adding devices to the fleet.

Reproduce and fix issues faster:
Manually reproduce issues and run automated tests in parallel. Device Farm collect videos, logs, and performance data so you can dive deep and solve problems quickly. For automated tests, it will identify and group issues so you can focus on the most important problems first.

Simulate real-world environments:
Fine-tune your test environment by configuring location, language, network connection, application data, and installing prerequisite apps to simulate real-world customer conditions.

Choose the tests that work for you
Run our built-in test suite (no scripting required) or customize your tests by selecting from open-source test frameworks like Appium, Calabash, and Espresso (see supported frameworks). You can also perform manual tests with Remote Access.

Integrate with your development workflow:
Integration with CI/CD pipeline: You can use AWS CodePipeline to incorporate mobile app tests configured in Device Farm into an AWS-managed automated release pipeline. Jenkins plugin for AWS Device farm: https://github.com/awslabs/aws-device-farm-jenkins-plugin

Setup your own private device lab in the cloud
Device Farm’s private device lab offering lets you choose iOS and Android devices for your exclusive use. Device Farm provisions these devices with the exact configurations you need, and lets you persist settings between sessions. Since these devices are exclusively for your use, you don’t have to wait for other users to finish using them.

Karate Capabilities – UI Test Automation Made Simple

Karate script

Below are the capabilities of Karate UI. Gives many reasons why one should go for Karate over Selenium.

Reference: https://github.com/intuit/karate/tree/master/karate-core

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

Who is a Full Stack Quality Engineer (a.k.a Test Engineer)?

Tech Stack - Full Stack Quality Engineer

A Full Stack Quality Engineers (a.k.a. Testers) is the opposite of a traditional black box tester. In contrary, a Full Stack Tester, creates business value by giving fast feedback loops on all layers of a technical process. Full Stack Testers can provide the information about the software quality faster by automating the testing activities of each layer. They are adaptive, collaborative, responsive and culturally fit in as an agile team member.

Full Stack QEs are professionals, or “nerds”, with knowledge of operating systems, databases, web servers, server side codes, browsers and client side code. These skills and flexibility allow the tester to deliver quickly and efficient.

Full Stack Testers also go deeper and specialize in automated testing with usage of different tools e.g. Tosca, Selenium, more examples. Therefore, a base knowledge in programming languages like Java is very normal within this chapter.

Their focus is on building quality in the software rather. They gave priority to Defect Prevention over Defect detection.

How to become a Full Stack Tester:

  • Continuous Learning – Reading, Conferences, Sharing
  • Continuous Practicing – Practice new techniques
  • Continuous improvement – retrospect your practices, process being followed at set intervals and Seek for better solutions.

REMEMBER: Being technical is not enough. Understanding the need for Continuous Delivery, Continuous Integration, Continuous Testing, Its about using the right skills at right time. Technical skills can be gained easily, but change in mindset and ownership are the difficult things to adopt.

In upcoming posts, we will learn in detail about – Skills required for Full Stack Quality Engineer and How to become a Full Stack Quality Engineer.

References:
https://www.valori.nl
https://www.slideshare.net/kmstechnology/
https://www.slideshare.net/NalinGoonawardana/


API Contract Testing with example using Postman

Contract testing for API is about making sure that the API behaves according to the contract that has been agreed upon, and it can be done using different tools and frameworks.

Here’s an example of contract testing using Postman:

# Import the collection from a file
pm.test("status code is 200", function () {
    pm.response.to.have.status(200);
});
pm.test("response should be a JSON", function () {
    pm.response.to.have.header("Content-Type", "application/json");
});
pm.test("response should be not be empty", function () {
    pm.expect(pm.response.json().data).to.not.be.empty;
});

This code is a test script written in JavaScript, it check if response status is 200, if the response type is JSON and if the JSON response data is not empty. The test will fail if the API does not adhere to the contract, and the developers can use the failure message to identify and fix the issue.

Click here to learn about API Contract Testing with example using Pact framework in Python

20 Most asked API testing interview questions

Here are 20 Most asked API testing interview questions:

  1. What is API testing and why is it important?
  2. What are the common HTTP methods used in API testing?
  3. How do you test the authentication and authorization of an API?
  4. How do you test the performance of an API?
  5. How do you handle API testing in an Agile development environment?
  6. How do you test error handling in an API?
  7. What are the common tools used for API testing?
  8. How do you test the security of an API?
  9. How do you test the reliability of an API?
  10. How do you test for compatibility in an API?
  11. What are some common challenges in API testing?
  12. How do you test for data integrity in an API?
  13. How do you test for compliance in an API?
  14. How do you test for backward compatibility in an API?
  15. How do you test for documentation in an API?
  16. How do you test for maintainability in an API?
  17. How do you test for scalability in an API?
  18. How do you test for usability in an API?
  19. How do you test for accessibility in an API?
  20. How do you test for internationalization in an API?

Skills needed to make a transition from Software Test Lead to Testing Manager

To make a successful transition from a Software Test Lead to a Testing Manager, you will need a combination of technical, leadership, and project management skills. Some key skills that are important for a Testing Manager include:

  • Extensive knowledge and experience with software testing processes and methodologies
  • The ability to develop and manage a team of software testers
  • Strong agile project management skills, including the ability to create and manage budgets and schedules
  • Excellent communication and interpersonal skills, including the ability to communicate complex technical concepts to non-technical stakeholders
  • The ability to identify and mitigate project risks
  • The ability to foster collaboration and teamwork among team members
  • Strong problem-solving and critical thinking skills

In addition to these technical skills, it’s also important for a Testing Manager to have strong leadership skills, such as the ability to motivate and mentor team members, provide constructive feedback, and foster a positive and productive work environment.

How to invoke Edge browser in selenium?

To invoke the Microsoft Edge browser in Selenium, you need to use the EdgeDriver class. Here’s an example of how you can do this:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.edge.EdgeDriver;

public class EdgeTest {
  public static void main(String[] args) {
    // Set the path to the Microsoft Edge driver
    System.setProperty("webdriver.edge.driver", "path/to/MicrosoftWebDriver.exe");

    // Create a new instance of the Edge driver
    WebDriver driver = new EdgeDriver();

    // Open a new browser window and navigate to a website
    driver.get("http://www.example.com");
  }
}

Note that you need to download and install the Microsoft WebDriver server in order to use the EdgeDriver class. You can find the download link and instructions on how to install the WebDriver server on the Selenium website.

Benefits of API Test Automation over UI Test Automation? – Mostly asked Interview Question

API testing has many benefits over UI testing:

  • First, API testing is much faster than UI testing. This is because API tests do not have to wait for a page to load, as they interact directly with the application’s backend.
  • Second, API tests are more reliable than UI tests. This is because UI tests are subject to the vagaries of the user interface, such as changes in the layout or position of elements. API tests, on the other hand, are not affected by such changes.
  • Third, API tests are easier to create and maintain than UI tests. This is because UI tests often require a lot of code to simulate user interactions, whereas API tests only need to make calls to the application’s API.
  • Fourth, with API testing, one can find bugs related to functionality, reliability, performance, and security early in the SDLC and hence those are cheaper to fix.

In conclusion, API testing has many advantages over UI testing, and should be used whenever possible.

Thoughts and Ideas on Future of Software Testing.

The future of software testing is likely to be more automated and focused on artificial intelligence (AI) and machine learning. This is due to the increasing complexity of software systems and the need for faster and more accurate testing.

AI and machine learning can help to automate the testing process by generating test cases and test data. They can also help to identify errors and potential areas of improvement. In addition, AI and machine learning can be used to create virtual environments for testing, which can be more realistic and representative of the real world.

As the use of AI and machine learning in testing becomes more widespread, it is likely that the role of human testers will change. They will become more focused on overseeing the automated testing process and interpreting the results.

The future of software testing is likely to be more efficient and effective as a result of the increasing use of AI and machine learning. This will benefit both developers and users by reducing the time and cost of testing, and by improving the quality of software products.

Key Skills of a Software Tester (Part 1)

Some of the key skills of a software tester include:

-Analytical skills: The ability to think logically and critically in order to identify issues and problems.

-Attention to detail: The ability to spot errors and inconsistencies.

-Creativity: The ability to come up with new and innovative ways to test software.

-Patience: The ability to persevere in the face of challenging tasks.

-Communication: The ability to communicate effectively with both technical and non-technical staff.

9 Soft skills needed to fast-track your career

Along with the technical skills, soft skills are equally important to grow up in the career.

Below are the most important soft skills that can help fast-track your career:

1. Time management

2. Communication

3. Organization of your work

4. Teamwork

5. Problem solving

6. Critical thinking

7. Interpersonal skills

8. Flexibility

9. Stress management

TestFlix 2022 (virtual conference) – Attend for Free!!

TestFlix 2022 (virtual conference) is happening on October 8th & 9th 2022.In this virtual conference Testers from top companies (across the globe)  share their knowledge through Atomic Talks.

Atomic talks by definition are meant to be small, yet Powerful and that’s the whole idea this time, it has 60+ Global Speakers & 14 Themes

Topics: Automation, Testing, AI ML, Web 3.0, Performance, Leadership/Management, API & lot more

Recording Access: Practical demonstration based teaching, clear ‘how-tos’ (only to those who registered)I highly recommend you guys to register for this conference and attend the sessions which are relevant to you. 

Grab your free pass here: https://bit.ly/3qmuVZU