2016 Archives - Codoid
Select Page

Blog

Category Selected: 2016

66 results Found

QA Automation

Cucumber Lambda expressions

2016

Exploring the Exploratory Testing

2016

Automated Testing catalyzes working Agile

2016

What is Regression Testing?

Test Automation

List of Cucumber Reporting Jenkins Plugins

2016

Top Software Testing Priorities for 2017


People also read

OTT Testing

How to Perform Android TV Automation Testing using Appium?

Accessibility Testing
Blog

The Importance of QA Testing in eLearning Development

Cucumber Lambda expressions

Cucumber Lambda expressions

As we all know, jvm-Cucumber has introduced maven dependency for Java 8. With the new API, you can write your step definitions with lambda expressions. It is very easy to setup and creates new step definitions for your feature using Lambda expressions, but understanding Lambda expression is vital.

What is Lambda Expression?

Are you able to create a Java function without a name and belonging to any class? If anyone says “Yes” then it can be done only with Lambda Expression. A lambda expression is an anonymous function and nameless.

See the below step definition. The Lambda expression is passed as a parameter in Given method. By introducing Lambda expression in Java 8, Java language has stepped into functional programming.

Given("I login as (.*)$",(String name)-> System.out.println(name));
  
How to setup?

Step 1: Add Cucumber Java 8 Maven Dependency

<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java8</artifactId>
<version>1.2.5</version>
<scope>test</scope>
</dependency>

Step 2: Add Maven compiler plugin

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>  

That’s it.

Step Definition with Lambda Expression
package steps;

import cucumber.api.java8.En;

public class MyStepdefs implements En {

    public MyStepdefs() {
       Given("I login as (.*)$",(String name)-&gt; System.out.println(name));
    }
}
  

Exploring the Exploratory Testing

Testing is cognitively challenging, skilled, multidisciplinary work. Testing is a search for Information – unearth bugs, help managers make realistic decisions, block premature product releases, certify product on standards, Improve product quality, and usability.

In modern software development processes, Maximizing Quality is a shared responsibility between developers, managers, product owners and others teams. Exploratory testing (ET) is more useful in complex testing situations where little is known about a product and there is a need to go beyond the obvious.

Though most testers have been invariably performing ET, maybe even unconsciously most of the times, it is, but essential to recognize ET as an approach. This will help realize the benefits of ET.

What is exploratory testing and how it’s done –

The standard definition states –

It’s a hands-on approach in which testers are involved in minimum planning and maximum test execution. The planning involves the creation of a test charter, a short declaration of the scope of a short time-boxed test effort, the objectives and possible approaches to be used.

According to James Bach –

The plainest definition of exploratory testing is test design and test execution at the same time.

According to Cem Kaner –

Exploratory testing is an approach to software testing that is concisely described as simultaneous learning, test design and test execution.

Unlike the scripted test, ET is not defined in advance or carried out according to plan.
Cem Kaner coined the phrase “exploratory testing”, which he refers to a sophisticated, thoughtful approach. The richness of ET process is limited only by our imagination and emerging insights of the product which is being tested. The essence of ET is learning and incorporate new ideas into the tests.

The tester will explore using heuristics for rapid learning about a product and its risks, Following and investigating the specification documents that may serve as a guide. The exploratory tester manages the value of his/her own time, by – reusing old test cases, creating new tests, creating test-supportive artifacts like failure point list. Writing down test scripts and following them may tend to disrupt the intellectual processes that help testers find important problems quickly.

There are few Myths as well, around Exploratory testing –

  • ET is un-structured
  • You cannot use documents while performing ET
  •  
    Benefits of Exploratory testing –

  • ET focuses on the need to adapt to the changing project with the available information.
  • Enhances tester’s productivity, as he explores maximum part of application in minimum time.
  • Live review and quick feedback
  • ET is compatible to traditional as well as Agile testing methodology
  • helps uncover the unknown defects that may have been missed out during structured testing
  •  
    How ET is different from Ad-hoc testing –

    Exploratory testing
    Approach
    In Ad-hoc testing, the tester learns the application, then tests it. In ET, you can test the application while learning.
    Exploratory testing
    Knowledge
    In Ad-hoc testing, the tester may or may not have application knowledge. In ET, you gain application knowledge as you explore the application.
    Exploratory testing
    Frequency
    There could be multiple rounds of Ad-hoc testing before, during and after the main test cycle. ET is conducted only once before the main testing.

    Automated Testing catalyzes working Agile

    We often hear testers talk about how difficult it is to find time for Regression tests because most of the testing is performed manually. Needless to say, all the tests are of equal importance.

    Automated Testing Fits in Agile Development

    ‘Agile’ and ‘Test Automation’ have been the most spoken buzz words in today’s IT scenario for obvious reasons – Systems are trending towards agility to accommodate frequent changes & Testing are being automated to fix issues sooner and save time. Automated tests applied on frequently changing systems will produce no value as it will cost more in maintaining the test cases. Automation is more successful when the system to which it’s applied is not prone to change often.

    Now, the question is How do we Automate testing on Agile systems where the test objects are constantly changing with refinement over several sprints? OR; how do we create a sustainable architecture for automation which works well even in agile development. Frequent and High-quality deployments can be achieved only by automated testing.

    With each sprint comes new functionality and consequently the test cases for System testing and Regression testing will grow and need to be revisited. Hence, it’s important to ensure unmodified code /functionalities are not affected by new changes going into the system. Receiving high-quality rapid feedback is something that drives Agility. And you will agree that performing comprehensive tests manually in every sprint is a herculean task.

    It is important to understand that we cannot automate everything right away. Instead, it’s recommended to strategize and focus on what’s worthwhile to automate.

    Let’s address a common question – How to identify what needs to be automated and how do we prioritize the factors?

  • Business critical functions – the ones that directly have an impact on business operations
  • Functions frequently used by many users – the ones that affect user experience
  • Functionalities or test cases that need to run several times under different conditions
  • Functionalities or test cases that are easy and give you the expected results
  •  
    The benefits of automated testing are manifold –

  • Time that’s saved is the most significant advantage
  • Confidence in the system as you can now run comprehensive tests more often
  • You do not have to postpone adding complex functionalities in your release cycles just because you earlier ran out of time performing tests manually
  • You can now plan frequent releases of your software thereby making your product Agile and reducing the time to market
  • The quick feedback from the tests help fix issues at a faster rate
  • Resource dependability does not affect your software quality. Your testers and developers can now be available for other tasks.
  • What is Regression Testing?

    The Testing life cycle is not something new to people who have a fair understanding of the various tests being carried out on the software. Regression test, which is part of the release cycle, is so important that it needs to be considered in test estimation.

    It’s possible that newer bugs are introduced when you fix a known /reported bug. Testers perform Functional tests to verify if the new changes work as expected. It’s also equally important to check that existing functionalities work as expected.

    Regression testing is an essential part of software development and Test cycle, which enforces quality measure to check that new code complies with existing code and that unmodified code does not get affected.

    Automating Regression tests provides you with the flexibility to – Run test cases after every change, include new test cases, no manual intervention or overhead in test case execution or unnecessary resource dependability. It is recommended to carry out regression test after a sanity/smoke testing or at the end of Functional testing, for Shorter releases. You may also choose to run automated regression test towards the end of each day to catch bugs early and fix them in the next build.

    Regression testing suite /tool helps you to package and execute all the test cases automatically. Some of the third party/open-source regression testing tools available in the market are –

  • Selenium-Web browser Automation
  • UFT-Unified Functional Testing
  • Test Complete-Automated Software Testing Made Simple
  • Protractor – end to end testing for AngularJS
  • Tricentis Tosca Testsuite
  • Squish-Automated GUI Regression Testing Tool
  • While you evaluate multiple tools, it will be worthwhile to create a scorecard on various parameters such as – Ease of scripting, Integration, Usage, Reporting. Some of these parameters are listed below –

  • How easy it is to add /modify test cases, Ease of adoption
  • Does the tool support all development environment (like Java, .Net, Ruby, Python)
  • Do you need to test multiple operating systems (Windows, Andriod, iOS, etc.)
  • Skill set available in your organization
  • The quality of technical support provided
  • Along with the product pricing, consider Support fee, Training, Upgrade, etc.
  • List of Cucumber Reporting Jenkins Plugins

    List of Cucumber Reporting Jenkins Plugins

    Publishing HTML test results after Cucumber feature execution is an essential one. In this blog post, we would like to list Cucumber reporting Jenkins plugins.

    Cucumber reports

    This plugin allows Jenkins to publish the results as pretty html reports hosted by the Jenkins build server. In order for this plugin to work you must be using the JUnit runner and generating a json report. The plugin converts the json report into an overview html linking to separate feature file htmls with stats and results.

    Link: https://github.com/jenkinsci/cucumber-reports-plugin

    Cucumber Living Documentation Plugin

    The plugin first looks for Cucumber json files, generated by your BDD tests, on your build workspace. After it parses the files and transforms them into html and pdf documentation making them available into your Jenkins build.

    Link: https://wiki.jenkins-ci.org/display/JENKINS/Cucumber+Living+Documentation+Plugin

    Cucumber Trend Reports

    Generate the trending reports for cucumber project. The reports include the failing rate, duration, number of test scenarios, top stable and unstable test scenarios.

    Link: https://wiki.jenkins-ci.org/display/JENKINS/Cucumber+Trend+Report+Plugin

    Cucumber Performance Reports Plugin

    A plugin for the Jenkins continuous integration tool which allows for reporting over time of the performance of tests executed using the Cucumber-JVM framework.

    Link: https://wiki.jenkins-ci.org/display/JENKINS/Cucumber+Performance+Reports+Plugin

    Cucumber Test Result Plugin

    This plugin allows you to show the results of Cucumber tests within Jenkins.

    Link: https://wiki.jenkins-ci.org/display/JENKINS/Cucumber+Test+Result+Plugin

    Cucumber Slack Notifier Plugin

    A plugin to send a summarized cucumber report to a slack channel.

    Link: https://wiki.jenkins-ci.org/display/JENKINS/Cucumber+Slack+Notifier+Plugin

    Top Software Testing Priorities for 2017

    Before we delve into discussing the priorities for 2017, it will be worthwhile spending few minutes looking at what made the headlines in the IT world, many Testing front.

    In fact, it will not be all correct to segregate milestones across years, since there is so much improvements happening and Tools & practices are calibrated, enhanced, simplified and adopted with a 1-3 year horizon. So, let’s re-word it by saying – the most talked about stuff in testing world in 2016.

    Moreover, since testing is an important part of any software development, the trends in software development is closely connected with trends in software testing.

    Automation & Dev-Ops continue to top the list. With a close conjunction with Agility, IT departments are looking at lean practices such as eliminating manual effort on Regression, Shorter builds, etc.

    Continuous Security testing has been looked at as a key strategy and differentiator among products.

    Predictive analysis testing, Big data, Cloud, IoT & Mobile app testing, Open source tools were all the most spoken topics on testing. The trends talk volumes on the fact that – Testing has increasingly become a priority and no more an afterthought.
    There is no doubt that successes and learnings from 2016 will have a big impact on focus areas of 2017 –

    Test automation continues to be on priority as organizations go lean on IT spending and embrace agility. The need for continuous integration, faster and frequent quality delivery can be achieved only automating testing and build processes.

    Mobility and Device testing: According to Gartner, by 2017, over 260 billion downloads of mobile apps will generate cumulative revenue of over $ 70 billion.

    Digital platforms: The application environment has moved beyond PC, desktops, tablets and mobiles to just every connectable device one can imagine. API’s will play a big part in embracing true digital transformation.
    The digital landscape is fast widening. With m-wallets and mobile banking getting popular, there will be a constant demand for mobile app and device testing.

    Shift Left
    IT departments have realized the benefits of this strategy and have aligned developers and testers on the same level to ensure quality from day one. The roles of developer and tester have been slowly fading, with the Testing responsibilities co-owned and focus on quality & value-driven delivery.

    Virtual Reality
    The ‘Google Cardboard’, ‘Samsung Gear VR’ headset enables end user to experience virtual reality in a simple, fun and affordable way. This attracts testing of the mobile networks, platforms, battery stability, specific mobile apps, etc. Pokémon-Go was one of the sensation of 2016 in virtual reality. This will pave the way for numerous gaming companies. The mainstream shift toward AR (Augmented reality) and VR (Virtual reality) provides new ways to connect with customers and offer unique and memorable interactions.

    IoT, AI (Artificial intelligence) and Smart Things: The moment we see the term ‘Smart things’, we are reminded of robots, drones and other unmanned machinery. Enabled with AI, these devices are ready to take IoT to the next level and will dominate Manufacturing, Retail, Hospital, Workplaces and homes. IoT is all about robust and responsive solutions. Developers, Architects, Business analysts and Security experts need to work together to devise ways to integrate all the components flawlessly. This, in turn will directly affect the testing requirements.

    With an estimated 50 billion IoT sensors by 2020 and more than 200 billion “things” on the internet by 2030, IoT continues to transform or disrupt business models.

    Big data and analytics
    In the age of digital transformation, almost everything can be measured. Analyzing the exponentially growing heterogeneous data has been a concern for a while.

    Adaptive and robust security architecture: Multi-layered security is becoming increasing critical.
    Centene Corporation, in January 2016 announced that close to 1 million members had potentially been impacted due to a data breach caused by loss of hard drives including personal health information of members. LinkedIn reported a breach in 2012 which affected 150 plus million accounts.

    Innovative Open source: When it comes to cost-effectiveness, organizations look for new and innovative open source tools that can be engaged and customized at various levels of testing.