top of page

My Items

I'm a title. ​Click here to edit me.

QA Engineer Must-have 2 Qualities

QA Engineer Must-have 2 Qualities

2 qualities that let you be considered one of the finest QA engineers in front of your clients. Quality 1: Capability to understand anyone's developed test automation code, no matter how complex it can be or how big it can be. Even with millions of lines of developed code written by other engineers in the past, you need to develop skills that let you have full ownership of developed architecture at some point and optimize the test automation to the next level. Not all test automation projects in the industry give you an opportunity to work from scratch. At times you landed into much more stable test architectures, and still, you have a lot of opportunities to execute at the workplace. Quality 2: Ability to write extremely complex test solutions in easy-to-understand code. Writing complex code never made anyone a great test automation engineer, but how effectively you handle complex test scenarios with easy solutions is what clients look for in today's IT. As a QA engineer, sooner or later you need to grab both the mentioned qualities while working in the industry over the next 5 to 10 years. Ankur C Founder, NGA

More
Why it's important when you perform Automation Testing, you should not perform manual testing?

Why it's important when you perform Automation Testing, you should not perform manual testing?

Why it's important when you perform Automation Testing, you should not perform manual testing same time? Read my detailed experience sharing in this post. Most Companies these days ask testers to split the day into 2 parts: Part 1: Manual Testing Part 2: Automation Testing
This practice looks very good on paper but in real projects, it's not going to work so easily unless you are extra ordinary talented while at work. It's always recommended you should perform functional and automation on a week-to-week basis rather than combining both on any given day. The situation is similar you are dating 2 ladies same time and when you date 1st lady you think about 2nd lady and when you date with 2nd lady you think about 1st lady. Combining both functional and automation test every day not only makes your day hectic but also significantly impact your productivity while at work.
While I perform automation for any of my clients, I make sure there should not be any other tasks with me same time. The more I try to multi-tasking, the more difficult for me to deliver the best quality code. And if this happens to me, it can happen to most QA Engineers in real-time. The approach I followed is as below: Assuming I need to functional test 200 test cases and do automation for 50 test cases. I make sure first I execute 50 test cases that are part of automation in functional tests. And if 50 test cases are subsets then I accordingly divide my automation development into multiple phases depending on my functional test execution.
I find myself more engaged in the later part of the week, so most times I start the week with a manual testing on Monday to Wednesday and Thursday and Friday focusing only on automation in any given week. And in some scenarios, I stretch the work during the weekend as I am already in automation flow at the end of Friday. Again, it varies from the QA Engineer's perspective on how he can plan his work but whatever works with me effectively while working with major clients like Mercedes-Benz, Germany and many others I have mentioned the same as part of this post.
If you need any guidance for anything related to testing, you can send me a mail at ankur.chaudhry@nextgenerationautomation.com . I will try to respond to your query whenever I get some time. --------------------------------------------------------------------------------------------------------------------------- Next Generation Automation Learn Enterprise Level Test Automation Program Live Now. Interested QA Engineers can subscribe program and Learn enterprise level test development from scratch. And once you master the contents of program, I take your responsibility to brand you as expert QA Engineers at global level which no other learning program offer till date to any of its members. Program URL: https://www.nextgenerationautomation.com/learn-enterprise-level-test-automation
Ankur Chaudhry Founder, Next Generation Automation Munich, Germany

More
Test Automation Framework Design Guidelines

Test Automation Framework Design Guidelines

In this post, I share important test automation framework design guidelines that helps you develop test automation project with better test coverage and less maintenance effort. Design Principle 1: Test Configuration Configurable items like Application Url, Username, Password, Browser type, Secret key, Driver.exe path should be kept in an external file. This will make sure while you change any configuration there should be minimum effort involved. Design Principle 2: Test Setup Information Any kind of test setup must be done by the @BeforeSuite, @BeforeClass TestNG annotations. Similar manner test clean up should be done by the @AftersSuite, @AfterClass TestNG annotations if you are using Test NG Based automation framework in your project. Design Principle 3: Test Folder and Main Folder All Test classes should be saved inside a folder called “test” and it MUST be a kind of mirror of main folder, meaning it will follow the same structure of the main project folder, but it will only contain tests. As shown, com.nga will be the group-id for both test and main folder. And all test class methods part of src/test/java package. Design Principle 4: Maintain Object identification repository Most common issues faced during automation are object identification changes. Framework should be able to patch such changes easily. Good design approach creates Object identifiers in page class and also map the object identifiers with page interaction methods in the same Page Class. Example Snapshot Design Principle 5: Status monitoring using debug logs and Exception Handling A framework should allow monitoring of the test execution status in real time and should be capable of sending alerts in case of failure using exception handling. This design approach ensures quick turnaround time in event of a test scripts failure. Example Logging Snapshot Design Principle 6: Reporting The framework should support html/Excel/Pdf report formats with details about test pass/fail for each test case/suite/test run. Example Report Snapshot Design Principle 7: Test Scripts and Test Data Test scripts and test data should always be separate from each other. Test data input can be in various forms like Excel, Ini, database inputs, hash maps etc. Example Test Scripts and Test Data Snapshot Design Principle 8: Creation of Utility Methods Utility method contain all reusable components. It includes both generic functions, and application specific functions. Tests should be exposed only to the implemented utility methods and tests should be performed by invoking these utility methods only. Example Utility Class Methods Snapshot Design Principle 9: Right code placement Automation projects tend to grow fast. Along with new tests, new shared code like page objects and data models keep adding during the test development. Maintaining a good, organized structure is necessary for project scalability and teamwork. Test cases should be organized by feature area. Common code should be abstracted from test cases and put into shared libraries. Example Multiple Test Classes Snapshot Design Principle 10: Avoid Code Duplication Many testing operations are inherently repetitive. QA Engineers sometimes just copy-paste code blocks, rather than seek existing methods or add new helper methods, to save development time. Such Coding practice must be strictly avoided as it not only makes code base in huge size but also result maintenance effort extremely high. Design Principle11: Multi-Platform Support Today's business applications run on multiple platforms same time: Multiple Web Browsers, Android Device, IOS Device and some cases Windows Version of application also available Automation framework must have capability to add on new platform if required by application in future Browser Factory design pattern provide multi-platform support once implemented in the framework. To implement all mentioned Test Automation Framework design principles, you can subscribe NGA in house developed Learn Enterprise Level Test Automation program. Also, Full mentorship support will be made available to understand development concepts as covered in the program with help of prerecorded videos. For more details about program, Visit below URL: https://www.nextgenerationautomation.com/learn-enterprise-level-test-automation Ankur Chaudhry Founder, Next Generation Automation

More
Learn Enterprise Level Test Automation

Learn Enterprise Level Test Automation

Learn Enterprise Level Automation program from Next Generation Automation helps QA Engineers to master test automation development in support with Next Generation Automation Founder, Ankur Chaudhry. Program Salient features as below: Program give QA Engineers enterprise level Automation experience Phase 1 of Program lets QA Engineers build framework architecture in a multi-threaded environment using Java as a programming language and Selenium as an automation API. Program let QA Engineers understand pain areas which automation engineers face while at work and how to fix the same. Program gives real world Automation Experience to QA Engineers and all automation exercises covered during program based on enterprise level automation scenarios Program helps QA Engineers build a developer mindset. How to approach complex business flow for automation and what should be QA Engineer design and coding approach while at work. Successful course completion and evaluation gives Star awards to all certified members. Star awards helps QA Engineers to brand them self both at international & domestic level and help them chase Overseas QA Automation jobs at very attractive salary packages. Block Diagram Learn Enterprise Level Automation program as below: Image shown above subject to copyright of Next Generation Automation and for learning purpose only. Learn Enterprise Level Automation Program divided into multiple sections to reduce the complexity and build scale able automation architecture as per enterprise needs. Section 1: Execution Engine This will be the start point for test scripts execution and execute test scripts in multiple Java threads. Each test class will be assigned 1 Thread for execution at run time by Execution Engine. Multi threading feature helps executing huge numbers of test scripts in a smaller time frame without compromising test quality. Section 2: Test Data Factory Modern business applications require a lot of data to be entered or verified. Such test data requirements will be served by the Test Data factory design pattern developed by NGA. At this point multiple storage formats are already integrated with developed architecture that includes Excel, Ini and MySQL. QA Engineers depending on project requirements can scale the test data factory to other storage formats as well in future. Section 3: Test Container Test container section holds actual test scripts that need to be developed as per application functionality. This section is specific to projects assigned to QA Engineers. Learn Enterprise Level Automation program let QA Engineers build test scripts for NGA Website. Later based on expertise gained, they can automate any other business application as part of working live projects. Section 4: Browser Factory Browser Factory will be the core of Automation Architecture and determines which browser to consider for test execution and how to maintain driver instances in case of multi-threading based / parallel test execution. Also, it sets up initial project environment like initializing Logging, Reporting and Configuration Files.

Browser Factory independent of application under test and will be a reusable component across multiple applications under test. Section 5: Business Layer Business Layer holds actual business workflows that need to be developed based on Application functionality. Learn Enterprise Level Automation Program takes into consideration NGA business workflows as part of this layer. This layer is specific to the project and depending on the application under test this layer can be developed. Section 6: Logging Logging keeps a log of all test execution steps and helps QA Engineers debug the test scripts for any failures and verify whether results generated as per written test scripts or not. Log files keep updating in real time based on test steps execution both at development console and text file format. Section 7: Reporting Reporting section generate test scripts pass and fail count in real time along with test dashboard creation in HTML format. If test execution in parallel, this module will fetch the results from all test scripts and generate consolidate test execution report once entire test execution get completed. For each thread class, separate report instance assigned at run time to capture test execution steps along with failures or exceptions generated from application if any. Section 8: Page Classes Page classes hold information about specific web pages. This includes building page elements along with page interaction methods. Page Class layer specific to project and depending on application under test this layer can be further developed. Section 9: Utility Classes Utility classes hold information about common utilities methods required for test script execution. Common Utilities include Excel Reader, Data Base Reader, Element Finder, Working with Frames, Buttons, Check Box, Drop Down components of application and many others.
Utility classes independent of application under test and will be a reusable component across multiple applications under test.

Both utility classes and Page Classes at end of program are going to integrate with Spring Dependency injection Framework to provide ease of test scripts development and without worry to initialize every page and utility class object during test execution. Overall framework architecture and course contents developed keeping in mind IT Industry latest testing trends and development in Automation field over the last few years. Architecture developed as part of a program subject to upgrades in future even after its Phase 1 release. Interested QA Engineers can subscribe for program as per below link: https://www.nextgenerationautomation.com/learn-enterprise-level-test-automation For any details, you may connect with NGA at trainings@nextgenerationautomation.com. Ankur Chaudhry Founder, Next Generation Automation Building better QA for tomorrow

More
Commonly Asked Questions from Overseas Employers

Commonly Asked Questions from Overseas Employers

Dear Job Seeker, While looking for any new job, it's very important to put some effort into understanding which Questions Employers look for while hiring the candidates. And if you are well prepared to answer questions from Employers, you are in a good position to chase Overseas High paying jobs without any significant efforts. Now you can discover all such jobs at NGA Platform as part of Overseas Hiring Model. Link to know more about the service offered below and if you have any questions you can call at 91-95883-35889 to discuss about your queries or if you need any support once you become a member of Overseas Hiring model. Overseas Hiring Model URL: https://www.nextgenerationautomation.com/overseas-hiring-model Commonly asked Questions from Overseas Employers as below: Question 1: Overall working experience as QA developer or SDET a) less than 5 years b) 5-10 years c) more than 10 years Question 2: Please describe your latest QA and/or SDET project? Answer: Mention more details here Question 3: Did you develop test plans and test cases that approximate real-world environments and scenarios. a) YES b) NO Question4: Ability to write effective code: a) Java b) Spring c) HTML d) Java Script e) XML f) AJAX g) Microservices h) SOA i) REST j) JSON k) Python l) C# m) Ruby Question 5: Different Types of Testing types you have worked? a) Accessibility testing b) Acceptance testing c) Black box testing d) End to end testing e) Functional testing f) Interactive testing g) Integration testing h) Load testing i) Non functional testing j) Performance testing k) Regression testing l) Sanity testing m) Security testing n) Smoke testing o) Stress testing p) Unit testing q) White-box testing Question 6: Experience and good knowledge of a) Object Oriented Analysis and Design(OOAD) b) Development of software using UML Methodology c) J2EE design patterns and Core Java design patterns Question 7: Do you have expertise in Docker? a) No experience b) Yes, but less than a year c) Yes,1-3 years d) Yes, 3-5 years e) Yes, more than 5 years Question 8: Do you have expertise in Kubernetes? a) No experience b) Yes, but less than a year c) Yes,1-3 years d) Yes, 3-5 years e) Yes, more than 5 years Question 9: Do you have expertise in XCUITest? a) No experience b) Yes, but less than a year c) Yes,1-3 years d) Yes, 3-5 years e) Yes, more than 5 years Question 10: Do you have expertise in Espresso? a) No experience b) Yes, but less than a year c) Yes,1-3 years d) Yes, 3-5 years e) Yes, more than 5 years Question 11: Do you have expertise in Gherkin? a) No experience b) Yes, but less than a year c) Yes,1-3 years d) Yes, 3-5 years e) Yes, more than 5 years Question 12: Do you have expertise in Protractor? a) No experience b) Yes, but less than a year c) Yes,1-3 years d) Yes, 3-5 years e) Yes, more than 5 years Question 13: Do you have expertise in GIT? a) No experience b) Yes, but less than a year c) Yes,1-3 years d) Yes, 3-5 years e) Yes, more than 5 years Question 14: Do you have expertise in Cucumber? a) No experience b) Yes, but less than a year c) Yes,1-3 years d) Yes, 3-5 years e) Yes, more than 5 years Question 15: Do you have expertise in Newman? a) No experience b) Yes, but less than a year c) Yes,1-3 years d) Yes, 3-5 years e) Yes, more than 5 years Question 16: Do you have expertise in Postman? a) No experience b) Yes, but less than a year c) Yes,1-3 years d) Yes, 3-5 years e) Yes, more than 5 years Question 17: Do you have expertise in Jenkins? a) No experience b) Yes, but less than a year c) Yes,1-3 years d) Yes, 3-5 years e) Yes, more than 5 years Question 18: Do you have expertise in Spinnaker? a) No experience b) Yes, but less than a year c) Yes,1-3 years d) Yes, 3-5 years e) Yes, more than 5 years Question 19: Do you have expertise in Datadog? a) No experience b) Yes, but less than a year c) Yes,1-3 years d) Yes, 3-5 years e) Yes, more than 5 years Question 20: Do you have expertise in Continuous Integration and Continuous Delivery? a) No experience b) Yes, but less than a year c) Yes,1-3 years d) Yes, 3-5 years e) Yes, more than 5 years Question 21: Experience in QA with exposure to: a) white box testing b) API Testing using REST c) none of above Question 22: Do you have expertise in Selenium ? a) No experience b) Yes, but less than a year c) Yes, 1-3 years d) Yes, 3-5 years e) Yes, more than 5 years Question 23: Do you have expertise in Cypress? a) No experience b) Yes, but less than a year c) Yes, 1-3 years d) Yes, 3-5 years e) Yes, more than 5 years Question 24: Do you have expertise in Appium? a) No experience b) Yes, but less than a year c) Yes,1-3 years d) Yes, 3-5 years e) Yes, more than 5 years Ankur Chaudhry Founder, NGA

More
Python Test Automation Frameworks

Python Test Automation Frameworks

In this post, NGA will walk you through major Python frameworks that can be used for test automation and building robust test automation frameworks for your clients. UI Automation Frameworks: selenium webdriver - Browser automation tool. robotframework-selenium2library - Web testing library for Robot Framework. selene - Concise UI tests in Python + Ajax support + PageObjects + Widgets seleniumbase - A simple Python framework for building test automation with Selenium WebDriver. It depends on pytest or noose modules to run. When used with noose a HTML report can be generated in the end of the test run. Toolium - Toolium is a Python wrapper tool of Selenium and Appium libraries to test web and mobile applications in a single project. It provides a way of choosing and configuring the driver through a configuration file, implements a Page Object pattern and includes a simple visual testing solution. webdriver_manager - The main idea is to simplify managemet of binary drivers for different browsers. gauge - Gauge is a light weight cross-platform test automation tool. It provides the ability to author test cases in the business language, actually written in golang with python language driver. Pylenium.io - Pylenium brings the best of Selenium, Cypress and Python into one package. Playwright - Playwright is a Python library to automate Chromium, Firefox and WebKit browsers with a single API. Playwright delivers automation that is ever-green, capable, reliable and fast. splinter - A tool for test web applications with a simple for find elements, form actions, and others browser actions. testutils sst - A web test framework that uses Python to generate functional browser-based tests. wtframework - Framework for configurable Web Tests in Python. webium - A Page Object pattern implementation library for Python elementium - jQuery-style syntactic sugar for highly reliable automated browser testing in Python slickqa - The slick-webdriver-python project is a wrapper around the python webdriver client bindings. hitch - A high level integration testing framework for service based applications. Needle - Needle is a tool for testing visuals with Selenium and nose. It checks that CSS renders correctly by taking screenshots of portions of a website and comparing them against known good screenshots. It also provides tools for testing calculated CSS values and the position of HTML elements. PyPOM - PyPOM is a Python Page Object Model library for Selenium and Splinter tests. pypom_form - PyPOM based page object model for schema based forms. POM - POM is Page-Object-Model microframework to develop web UI tests easy, quickly and with pleasure. websmith - A Domain Specific Language (DSL) for Web Testing. pages - lightweight page object and component Python library for UI tests. Golem - Golem is a complete test automation tool and framework for end-to-end testing. It creates powerful, robust and maintainable test suites, it's easy to learn even without a lot of programming knowledge. It is based on Selenium Webdriver and it can be extended using Python Pylenium.io - Pylenium brings the best of Selenium, Cypress and Python into one package. Mailosaur - Python client for email testing/automation via Mailosaur. Rest API Automation Frameworks: Rester - Framework for testing (RESTful) HTTP APIs pyresttest - A REST testing and API microbenchmarking tool siesta - Python REST Client play_requests - pytest-play plugin driving the famous python requests library for making HTTP calls using plain YAML files gabbi - a tool for running HTTP tests where requests and responses are expressed as declarations in YAML files. Schemathesis - Schemathesis is a tool for property-based testing of applications based on Open API & Swagger specs. It reads the application schema and generates test cases which will ensure that your application is compliant with its schema. Includes pytest & unittest integrations. Mobile Automation Frameworks: appium - An open source test automation framework for use with native, hybrid and mobile web apps. It drives iOS and Android apps using the WebDriver protocol. Airtest - Airtest is a cross-platform automated testing framework focusing mainly on games, but can also be used for native apps. robotframework-androidlibrary - A Robot Framework test library for all your Android automation needs. robotframework-appiumlibrary - An appium testing library for RobotFramework. robotframework-ioslibrary - A Robot Framework test library for all your iOS automation needs. uiautomator - Python wrapper of Android uiautomator test tool, it works on Android 4.1+ simply with Android device attached via adb. ATX - Smart phone automation tool. Support iOS, Android, WebApp and game. Reporting Frameworks: allure pytest - Allure adapter for PyTest framework. HTMLTestRunner - An extension to the Python standard library's unittest module. It generates easy to use HTML test reports. unittest-xml-reporting - A unittest test runner that can save test results to XML files that can be consumed by a wide range of tools, such as build systems, IDEs and continuous integration servers. PrettyTable - Python library to generate nice table reports right in console. Unit Testing Frameworks: unittest - is a library to make unit testing distributed with python out of the box. unittest2 - is a backport of the new features added to the unittest testing framework in Python 2.7 and onwards. pytest - is a mature full-featured Python testing tool that helps you write better programs. plugincompat - Test execution and compatibility checks for pytest plugins test-junkie - Highly configurable modern testing framework. nosetests - is a nicer testing for python. slash - is a testing framework written in Python. lemoncheesecake - is a Python framework intended to functional testing, it provides fixtures, matchers, test organization through test suites hierarchy and metadata (test/suite name, description, tags, properties, links), rich reporting features and various report formats (JSON, XML, HTML, Junit) Extension Frameworks: proboscis - is a Python test framework that extends Python’s built-in unittest module and Nose with features from TestNG. grail - is a library which allows test script creation based on steps. testify - unit test framework, provides Enhanced test fixture setup, Split test suites into buckets for easy parallelization, PEP8 naming conventions & Fancy color test runner with lots of logging / reporting option. trial - Extension of unittest to support writing asynchronous unit tests using Deferreds and new result types ('skip' and 'todo'). Includes a command-line program that does test discovery and integrates with doctest and coverage. subunit - Transparently adds support for running unittest test cases/suites in a separate process : prevents system wide changes by a test destabilising the test runner. It also allows reporting from tests in another process into the unittest framework, giving a single integrated test environment. testresources - Provides a mechanism for managing 'resources' - expensive bits of infrastructure - that are needed by multiple tests. Resources are constructed and free on demand, but with an optional TestSuite?, the test run order is optimised to reduce the number of resource constructions and releases needed. Compatible with unittest. testtools - Useful extensions to unittest derived from custom extensions by projects such as Twisted and Bazaar. Sancho - Sancho 2.1 runs tests, and provides output for tests that fail; Sancho 2.1 does not count tests passed or failed; targets projects that do not maintain failing tests zope.testing - Powerful test runner that includes support for post-mortem debugging of test failures. Also includes profiling and coverage reporting. This is a standalone package that has no dependencies on Zope and works just fine with projects that don't use Zope. pythoscope - Tool that will automatically, or semi-automatically, generate unit tests for legacy systems written in Python. testlib - Gives more power to standard unittest. More assert* methods; support for module level setup/teardown; skip test feature... dutest - An object oriented interface to retrieve unittest test cases out of doctests. Hides initialization from doctests by allowing setUp and tearDown for each interactive example. Allows control over all the options provided by doctest. Specialized classes allow selective test discovery across a package hierarchy. green - Green is a clean, colorful test runner for Python unit tests. Compare it to nose or trial. ddt - Data-Driven tests with unittest pytractor is an extension to the Selenium bindings for Python. Its goal is to make testing of angular.js applications easier with Python. stestr - A parallel Python test runner built around subunit. AddOns: Editors, IDE, consoles: pycharm - Smart code editor provides first-class support for Python pydev - Full featured python ide based on eclipse sublime - A sophisticated text editor for code, markup and prose. ipython - A command shell for interactive computing in multiple programming languages, originally developed for the Python programming language VSCode - Very Neat Editor for python with loads of plugins #NGAutomation

More
Design patterns for test automation frameworks

Design patterns for test automation frameworks

In this post QA Automation Engineers will understand most commonly used design pattern for test automation frameworks. Lets first understand how poorly designed automation frameworks will lead to projects failures in long run. A poorly designed architecture is a major reason why test automation frameworks fail. Engineers need to identify problems and adopt the right design patterns upfront. Common factors that result in bad design are: Those implementing the work are new to or unfamiliar with test automation tactics. The project’s timeline is strict. The scale is unclear. Engineers lack basic programming knowledge and, as a result, don’t use the right principles. Design patterns: A better software testing technique and must take into consideration by every Automation Engineer. Design patterns provide a general reusable solution for the common problems that occur in software design. Design patterns are like collections of best practices as they provide a concept but not particular implementations. Design patterns help reduce code complexity as well as make code more extensible, and maintainable. Basically Design patterns are grouped into three categories: Structural patterns explain how to assemble objects and classes into larger structures while keeping these structures flexible and efficient. Creational patterns provide various object creation mechanisms, which increase flexibility and reuse of existing code. Behavioral patterns are concerned with algorithms and the assignment of responsibilities between objects. In this post, I’ll go over the most popular structural, creational, and behavioral design patterns, outlining what they are, why they’re useful, and how to structure them. Before diving into design patterns, it’s important to become familiar with SOLID principles that help make software design more understandable, flexible, and maintainable. The Single Responsibility Principle - A class should have one, and only one reason to change. The Open Closed Principle - You should be able to extend a class behavior without modifying it. The Liskov Substitution Principle - Derived classes must be substitutable for its base classes. The Interface Segregation Principle - Make fine grained interfaces that are client-specific. The Dependency Inversion Principle - Depend on abstractions, not on concretions. Structural design patterns Page Object Models (POM) What are they? This is the most popular structural design pattern and is commonly used in building test automation frameworks to automate UI test cases. The pattern abstracts any page information away from the actual tests. Why are they useful? POM’s are beneficial because: Developers don't need to write duplicate code. They create page components (e.g., input fields, buttons, etc.) which are used when building other page objects. The pattern provides encapsulation and abstraction. Page objects encapsulate web elements, or other class members and provide access to wrapper methods that hide all the logic (i.e., the mechanics used to locate or change data). Creating and organizing page objects makes it easier for developers to understand the structure of the automation solution via usage, new test creations, creation of new page components, and readability of tests. How are they structured? Page objects are like interfaces for web pages or web page components, also known as loadable components. These components support the same interaction with other web pages and should consist of: preferably encapsulated web elements other page objects methods to operate with page object and return other page objects by design no assertions should be used on page objects Below Block Diagram shows how commonly used POM looks like: To implement POM effectively, follow a folder and file structure to organize and keep page objects easily accessible. Page objects can be implemented in a functional or structural manner, depending on the approach and need.
Composite patterns What are they? This pattern composes objects into tree structures to represent part-whole hierarchies. Composites let clients treat individual objects and compositions of objects uniformly. Why are they useful? A composite pattern is beneficial because: The simplified representation of a complex tree structures components as branches with the help of polymorphism and recursion. Implementing new items to the structure without altering the code (Open/Close principle) is easy. How are they structured? Composite patterns in automation solutions stem from a collection of page objects built up, forming a tree structure. While true, the main point of a composite pattern is to treat individual objects and compositions of objects uniformly. The structure gives the client control to operate through abstract the component interface. Engineers use a composite pattern to create components that benefit from a tree structure (e.g., menus needing sub-menus, sub-sub-menus, etc.) to get, select, or print all the items via recursion. For more complex needs, include custom iterators. In the image above, the TreeItem could be implemented as an interface or as an abstract class (if one would like to add default methods implementation). TreeLeaf is a basic element with most of the time all the code lives in these elements and does not feature other elements. TreeBranches hold other TreeItems and delegate all the work to child elements (i.e., tree leaves). Facade patterns What are they? The facade pattern provides a unified interface to a set of interfaces in a subsystem. The facade defines a higher-level interface that makes the subsystem easier to use. Why are they used? A façade pattern is beneficial because: Developers are able to create structure, consisting of layers of subsystems. Developers are able to simplify/hide code complexity from consumers. How are they structured? Facade is another structural design pattern that helps hide the complexity of one or more classes and provide one or more reasonable interfaces. The pattern still leaves direct access to the complex classes in case the user needs advanced functionality. Besides simplifying the interface, a facade pattern also decouples the client from inner system components. In test automation, a facade is mostly used to combine a few page objects/actions and provide uniform actions for consumers. For example, when a complex API needs to be executed in a specific order, create a facade for the designated functionality and provide a simplified interface for operating. Decorator patterns What are they? This pattern attaches additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality. Why are they useful? A decorator pattern is beneficial because: Developers are able to add new functionality to already existing objects without modifying its code (Open/Closed Principle). Developers are able to follow the single-responsibility principle allowing them to have multiple smaller classes divided by functionality. How are they structured? Decorators attach new behaviors to objects by placing the objects inside special wrapper objects that contain new behaviors. For example, to add logging functionality without a lot of changes to test automation solution using Webdriver, simply wrap (i.e., decorate) the Webdriver into EventFiringWebDriver. IWebdriver, IWebElement, INavigation, IOptions, ITargetLocator, and ITimeouts wrap with multiple new responsibilities. As a result, EventFiringWebDriver fires events on the main actions attached and listen to. With EventFiringWebDriver implemented, engineers easily access screenshots and logging on every exception or other action. To assemble: Create a listener class. Implement a method to capture screenshot and logging. Call that method on a specific event. Register the event listener to EventFiringWebDriver. Creational design patterns Factory method patterns What are they? This pattern defines an interface for creating an object but allows subclasses to decide which class to instantiate. Factory methods let a class defer instantiation to subclasses. Why are they useful? A factory method pattern is beneficial because: Having all objects initialization in a single place makes support much easier later (Single Responsibility Principle). The pattern is easily extendable without altering existing code (e.g., open/close principle). Scalability is easy to handle for tests runs (e.g., using Selenium Grid/ Docker containers). How are they structured? A factory method pattern is a creational pattern used for encapsulating the instantiation of concrete types, avoiding tight coupling between the creator and concrete products. Engineers don’t need to modify any code to extend the codebase. One of the best examples of a test automation framework is with the Selenium WebDriver initialization. While most of the initializations require some kind of setup afterward, when all Webdrivers share the same "IWebDriver" interface, refer Webdrivers through that interface. Adding another Webdriver (if necessary) is easy. Simply extend the factory method, which does not modify already existing code. The Webdriver includes a builtin factory method called PageFactory responsible for all page element initialization. To implement, declare the web elements and provide additional attributes if needed. Builder patterns What are they? This creational design pattern lets developers construct complex objects step by step. The pattern produces different types and representations of an object using the same construction code. Why are they useful? A builder pattern is beneficial because: Developers are able to create multiple representations of an object. The pattern isolates complex and the repetitive construction code in an object. How are they structured? As with any automation solution for software, a builder pattern is used to create an object needing many different representations. Representations with telescopic constructors are hard to maintain with difficulties generating readable code. Use the builder pattern to create fluent page objects. A builder pattern is easy to implement and understand. For example, when orchestrating a data transfer objects (DTO), like permissions for an object, with permissions such as read, create, update, and delete or any other object permission that needs to be built dynamically. When engineers need to build already predefined objects, consider introducing a director-class responsible for wrapping the builder defined steps in some kind of order (e.g., buildCRUD(Builder builder) which calls addCreate(), addRead(), addUpdate(), and addDelete() builder steps). Singleton patterns What are they? This pattern ensures a class has only one instance and provides a global point of access. Why are they useful? A singleton pattern is beneficial because: There’s only one instance of an object. In most cases, the pattern is used for Logger, Connections, or External Resources. Developers need a global access point to a class instance. How are they structured? Behavioral design patterns Strategy patterns What are they? This pattern defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy patterns let the algorithm vary independently from the clients that use it. Why are they used? A strategy pattern is beneficial because: Engineers have various algorithms to complete a task, and that can switch depending on the specific task at the run time. Developers are able to easily add new strategies without altering the code (Open/Close principle). How are they structured? In test automation, strategy patterns are useful in various fields. For example, an application includes multiple payment methods on a checkout page or a different implementation on the same action, like account creation. One pattern uses UI, and another uses RESTful calls. These algorithms (strategies) are easily defined, encapsulated, and used for various needs. Engineers take all the logic from page objects and lets page objects delegate all the work to the strategy objects. Summary Design patterns and its application is an exceptionally worthwhile investment, despite the initial learning curve. To ease and speed up development test automation: Constantly evaluate and identify potential issues. Review the current design before implementing a new feature Keep engineers up to date on current objectives and future plans. Document most of the agreements on paper Have a backlog and actively work on corresponding tasks. Take time to understand the problem at hand and what design pattern solves the problem. Remember, constantly evaluate and identify problems to keep code clean. Needs change. Be mindful. Add a pattern when there’s a practical need for one. Sometimes the simplest solution is no pattern at all. Adding a pattern without just cause adds unnecessary complexity to an automation solution. When designing, address problems in the simplest way possible. Just keep it simple. #NGAutomation

More
Javascript Test Automation Frameworks

Javascript Test Automation Frameworks

Javascript based test automation frameworks in a lot of demand from Employers all across the globe. A major reason for the popularity of Javascript based frameworks is that most web applications front end or User interface have Javascript components and it's going to automate such web applications more easily with Java script than any other programming language. In this article, NGA will walk you through major frameworks commonly used for test automation. You should learn as much frameworks as possible mentioned in the article. UI Automation Frameworks: WebdriverJS - Nodejs webdriver language bindings official implementation from authors of selenium, includes only basic features and commands. Uses Control Flow to syncrhonize async actions. WebdriverIO - Nodejs webdriver language bindings unofficial implementation. Has own handling of async actions using Fibers and rich set of features Protractor - End-to-end test framework for Angular applications, comes with JasmineWD included, and built on top of WebdriverJS CodeceptJS - Supercharged end 2 end testing for NodeJS Nightwatch.js - Easy to use Node.js based End-to-End (E2E) testing solution for browser based apps and websites. Dalek.js - Automated cross browser testing with JavaScript. Nemo - Nemo provides a simple way to add selenium automation to your NodeJS web projects. With a powerful configuration ability provided by krakenjs/confit, and plugin architecture, Nemo is flexible enough to handle any browser/device automation need. Frisby - Is a REST API testing framework built on node.js and Jasmine that makes testing API endpoints easy, fast, and fun. TestCafe - Automated browser testing for the modern web development stack. Puppeteer - Puppeteer is a Node library which provides a high-level API to control headless Chrome over the DevTools Protocol. It can also be configured to use full (non-headless) Chrome. Built with <3 by the Chrome team. Playwright - Playwright is a Node library to automate the Chromium, WebKit and Firefox browsers with a single API. It enables cross-browser web automation that is ever-green, capable, reliable and fast. CasperJS - CasperJS is a navigation scripting & testing utility for PhantomJS and SlimerJS (still experimental). It eases the process of defining a full navigation scenario and provides useful high-level functions, methods & syntactic sugar for doing common tasks Cypress.io - Fast, easy and reliable testing for anything that runs in a browser. Runs on Mac, Linux, Windows and any CI. Serenity/JS - Serenity/JS makes acceptance and regression testing of modern web apps faster, more collaborative and easier to scale. Sakuli - An awesome Node.js based End-to-End (E2E) testing solution which combines Selenium based web testing with full desktop automation. It's custom DSL allows to write complex scenarios which seamlessly switch between the browser and your desktop. It's built-in monitoring support allows to measure performance data from a user perspective. BackstopJS - BackstopJS automates visual regression testing of your responsive web UI by comparing DOM screenshots over time. Taiko - A Node.js library to test and automate chromium browsers. QA Wolf - A Node.js library to create browser tests 10x faster with Puppeteer and Jest. Mock Automation Frameworks: Sinon.JS - Standalone test spies, stubs and mocks for JavaScript. No dependencies, works with any unit testing framework. API Automation Frameworks: SuperTest - Super-agent driven library for testing node.js HTTP servers using a fluent API. Frisby - Frisby is a REST API testing framework built on Jest that makes testing API endpoints easy, fast, and fun. PactumJS - REST API Testing Tool for all levels in a Test Pyramid. Mobile Automation Frameworks: WebdriverIO's Appium implementation - nodejs bindings implemeting Appium commands. Detox - Gray Box End-to-End Testing and Automation Framework for Mobile Apps Code Analysis Frameworks: ESLint - Pluggable JavaScript linting tool. Custom rules can be added to extend the existing functionality. JSHint - Community driving js code analysis tool supported by twitter, facebook, wiki, jquery, mozilla, yahoo and others. JsLint - JavaScript syntax checker and validator. BDD Frameworks: CucumberJS - Cucumber is a tool for running automated tests written in plain language.Cucumber.js is the JavaScript implementation of Cucumber and runs on both Node.js and modern web browsers. MochaJS - feature-rich JavaScript test framework running on node.js and the browser. Jasmine - Behavior Driven Development testing framework for JavaScript. It does not rely on browsers, DOM, or any JavaScript framework. Thus it's suited for websites, Node.js projects, or anywhere that JavaScript can run. Intern - is a complete test stack for JavaScript designed to help you write and run consistent, high-quality test cases for your JavaScript libraries and applications. It can be used to test any JavaScript code. Its functional testing capabilities can even be used to test non-JavaScript Web and mobile apps, if you really want. Chai - Chai is a BDD / TDD assertion library for node and the browser that can be delightfully paired with any javascript testing framework Performance & stress & load k6 - Like unit testing, for performance. A modern load testing tool, using Go and JavaScript. artillery - Artillery is a modern, powerful & easy-to-use load testing toolkit. Use it to build scalable applications that stay performant & resilient under high load.

More
Moving Beyond Selenium

Moving Beyond Selenium

In this article, NGA will walk you through a list of tools and libraries that are commonly used in test automation nowadays other than Selenium. Many QA Engineers asked this question, We know Selenium library very well. What shall we learn next that is helpful for us as QA Automation Engineer. So this is the best post to answer that commonly asked question from QA Engineers.
Since the list is huge, NGA suggests QA Engineer should select any particular tool or library at a time, do significant hands-on work like downloading the library code from a shared link, integrate with an already developed automation framework, understand library methods and once hold good expertise start exploring the next available library.
This approach let QA Engineers learn a lot more things other than selenium over a period of time and stay competitive in the Job Search market. So go ahead and start exploring the test automation world beyond Selenium. Web UI Based Test Automation Frameworks: Language: Java SikuliX - SikuliX automates anything you see on the screen of your desktop computer running Windows, Mac or some Linux/Unix. It uses image recognition powered by OpenCV to identify and control GUI components. This is handy in cases when there is no easy access to a GUI's internals or the source code of the application or web page you want to act on. Selenide - Concise API around Selenium to write stable and readable UI tests. Selenified - An open source framework to simplify Selenium Testing. It provides a wrapper for Selenium calls to add detailed reporting, error handling, simple test setup in a thread-safe manner, and can run either locally or in the cloud (Grid or SauceLabs). Serenity BDD (Thucydides) - An innovative open source library that helps you write more effective automated acceptance tests, and uses these acceptance tests to generates rich documentation and reports about your product and project. htmlelements - A Java framework providing easy-to-use way of interaction with web-page elements in web-page tests. atlassian-selenium - An open-source (BSD) project that aims at facilitating development of functional tests in Selenium/WebDriver libraries. stevia - Open Source QA Automation Testing Framework by Persado darcy - An open source Java 8 framework for modeling user interfaces as page objects with a declarative, automation-library-agnostic DSL Satisfy - An open source Java framework based on Thucydides + Jbehave. Supports to work with WebUI, SOAP, REST, emails, files and generate random data out of the box. JDI Light - is the test Framework for UI test automation that helps to makes your tests fast and sustainable and provide obvious and predictable test run result. Geb Framework - A groovy test automation framework designed for the use with the Webdriver Page Object model and the Spock Framework for (BDD). FluentLenium - FluentLenium helps you writing readable, reusable, reliable and resilient UI functional tests for the browser. FluentLenium provides a Java fluent interface to Selenium, and brings some magic to avoid common issues faced by Selenium users. Selion - builds on top of TestNG and Selenium to provide a set of capabilities that get you up and running with WebDriver in a short time. It can be used for testing web and mobile applications. Frameworkium - automation framework for web, app, and API testing. Integrates: saucelabs, allure, rest-assured, jackson, gson. Published on Jitpack repository. Carina - Carina is a Java-based test automation framework that unites all testing layers: Mobile applications (web, native, hybrid), WEB applications, REST services, Databases. NoraUi - NoraUi, for NOn-Regression Automation for User Interfaces, is a Java framework based on Selenium, Cucumber and Gherkin stack to create GUI testing projects that can be included in the continuous integration chain of single/multi applications web solution builds. Cubano - Cubano is a test automation framework written in Java that provides a structure for developing acceptance and regression tests so your team can hit the ground running and not have to waste time needlessly building and maintaining your own framework. Jalenium - Jalenium is a Java Selenium API which can be easily integrated to any maven Selenium Java project which uses Selenium JAR files. BrowserMob Proxy - Is a simple utility that makes it easy to capture performance data from browsers, typically written using automation toolkits such as Selenium and Watir. Selenoid - Selenium Hub successor running browsers within containers. Scalable, immutable, self hosted Selenium-Grid on any platform with single binary. Selenium-Grid-Extras - Simplify the management of the Selenium Grid Nodes and stabilize said nodes by cleaning up the test environment after the build has been completed Selenium Grid Extensions - Extend Selenium grid with extra functionality. Execute Sikuli tests in combination with Selenium. Selenium Grid Router is a lightweight server that routes and proxies Selenium Wedriver requests to multiple Selenium hubs. Docker Selenium Grid - A project to provide native video recording support for Selenium Grid and was initially designed to be used with docker-selenium project. Video Recorder Java - This library allows easily record video of your UI tests by just putting couple annotations. Zalenium - Allows anyone to have a disposable and flexible Docker-based Selenium Grid infrastructure featuring video recording, live preview and online/offline dashboards. SikuliFactory - A based PageFactory model for SikuliX. Mailosaur - Java client for email testing/automation via Mailosaur. TrueAutomation.IO - One of the main tasks of TA is to solve problem of working with unstable locators. Mobile Based Test Automation Frameworks: Language: Java Appium - An open source test automation framework for use with native, hybrid and mobile web apps. It drives iOS and Android apps using the WebDriver protocol. Calabash - A cross-platform test automation framework for Android and iOS native and hybrid applications. Calabash’s easy-to-understand syntax enables even non-technical people to create and execute automated acceptance tests for apps on both of these mobile platforms. Robotium - An Android test automation framework that fully supports native and hybrid applications. Robotium makes it easy to write powerful and robust automatic black-box UI tests for Android applications. With the support of Robotium, test case developers can write function, system and user acceptance test scenarios, spanning multiple Android activities. UIautomator - Provides an efficient way to test UIs. It creates automated functional test cases that can be executed against apps on real Android devices and emulators. It includes a viewer, which is a GUI tool to scan and analyze the UI components of an Android app. Espresso - A pretty new test automation framework that got open-sourced just last year, making it available for developers and testers to hammer out their UIs. Espresso has an API that is small, predictable, easy to learn and built on top of the Android instrumentation framework. You can quickly write concise and reliable Android UI tests with it. API Test Automation Frameworks: hikaku - A library that tests if the implementation of a REST-API meets its specification. Karate-DSL - Karate is a BDD javascript framework which enables you to script a sequence of calls to any kind of web-service and assert that the responses are as expected. It makes it really easy to build complex request payloads, traverse data within the responses, and chain data from responses into the next request. Karate's payload validation engine can perform a 'smart compare' of two JSON or XML documents without being affected by white-space or the order in which data-elements actually appear, and you can opt to ignore fields that you choose. Retrofit - A type-safe HTTP client for Android and Java. REST-Assured - A library for testing and validation of REST services in Java. Windows UI Test Automation Frameworks: SikuliX - SikuliX automates anything you see on the screen of your desktop computer running Windows, Mac or some Linux/Unix. It uses image recognition powered by OpenCV to identify and control GUI components. This is handy in cases when there is no easy access to a GUI's internals or the source code of the application or web page you want to act on. Winium for Desktop - Winium.Desktop is an open source test automation tool for automated testing of Windows application based on WinFroms and WPF platforms. WinAppDriver - Windows Application Driver (WinAppDriver) is a service to support Selenium-like UI Test Automation on Windows Applications. This service supports testing Universal Windows Platform (UWP), Windows Forms (WinForms), Windows Presentation Foundation (WPF), and Classic Windows (Win32) apps on Windows 10 PCs. Server Side Test Automation Frameworks: Language: Java Citrus - Test framework written in Java that is able to create fully automated end-to-end use case tests for enterprise SOA applications. Citrus simulates surrounding interface partners supporting a huge set of different transports and protocols like HTTP, JMS, TCP/IP, FTP, SOAP, XML and JSON. Mocking Frameworks: Language: Java WireMock is a flexible library for stubbing and mocking web services. Unlike general purpose mocking tools it works by creating an actual HTTP server that your code under test can connect to as it would a real web service. MockServer can be used for mocking any system you integrate with via HTTP or HTTPS (i.e. services, web sites, etc). Mockito is a mocking framework that lets you write beautiful tests with a clean & simple API. PowerMock is a Java framework that allows you to unit test code normally regarded as untestable. Assertion Frameworks: Language: Java AssertJ - Powerful fluent assertion framework. Compatible with any xUnit framework. Truth - Fluent assertion framework for Java and Android from Google. JSONassert - JSON assertion library. Reporting Frameworks: Language: Java ReportPortal - powerful server-client reporting tool. Reduce the effort to work with results. Powered with Machine Learning, Providing historical data (statues) of executions in on click, logs, screenshost and any binary attachement. Trends, flaky test, most failed, longest test via custom widgets and dashboards, which give visibility to the team, leads, managers and falcon-eye view for VPs. Provide ability to categorize fails by custom defect types and utilize power of Machine Learning to detect fails, based on collected patterns. Give benefits of real-time integration: no need to wait execution ending. Any language, any platform. Free, Open Sourced. Java integrations Allure - Open-source framework designed to create test execution reports clear to everyone in the team. Gradle Allure Plugin - 3rd-party Gradle Allure Plugin allows you to integrate Allure into spock, testing and junit tests. ExtentReports - HTML reporting library for .NET and Java which is extremely easy to use and creates beautiful execution reports. It shows test and step summary, test steps and status in a toggle view for quick analysis. ReportNG - ReportNG is a simple HTML reporting plug-in for the TestNG unit-testing framework. Zafira - Zafira is central automation reporting system that is build on the top of Java Spring Framework. It dramatically increases the transparany of test automation results and provides better undestanding of product quality. Difido-reports - This project aims to provide a generic implementation for HTML test reports. cucumber-reporting - This is a Java report publisher primarily created to publish cucumber reports on the Jenkins build server. It publishes pretty html reports with charts showing the results of cucumber runs. It has been split out into a standalone package so it can be used for Jenkins and maven command line as well as any other packaging that might be useful. Generated report has no dependency so can be viewed offline. Unit Testing Frameworks: Language: Java JUnit - Common testing framework. TestNG - TestNG - Testing framework. Test Data Supplier - TestNG DataProvider wrapper which helps to supply test data in a more flexible way. Sunshine - Sunshine is a wrapper on Java xUnit test runners (such as TestNG, Junit...) which allows automatically find classes with tests within the jar file, passes them to desired test runner and reports an execution status. XMLUnit - testing and comparing XML output for Java and .NET TDD \ ATDD \ BDD Based Testing Frameworks: Language: Java JBehave - A framework for Behaviour-Driven Development (BDD). BDD is an evolution of test-driven development (TDD) and acceptance-test driven design, and is intended to make these practices more accessible and intuitive to newcomers and experts alike. Cucumber-JVM - A pure Java implementation of Cucumber that supports the most popular programming languages for the JVM. JGiven - A developer-friendly and pragmatic BDD tool for Java. Developers write scenarios in plain Java using a fluent, domain-specific API, JGiven generates reports that are readable by domain experts. easyb - A behavior driven development framework for the Java platform. By using a specification based Domain Specific Language, easyb aims to enable executable, yet readable documentation. Robot Framework - A generic test automation framework for acceptance testing and acceptance test-driven development (ATDD). Spectrum - A BDD-style test runner for Java 8. Inspired by Jasmine, RSpec, and Cucumber. Gauge - Gauge is a light-weight cross-platform test automation tool with the ability to author test cases in the business language. Spock - Specification testing framework for Java and Groovy. Concordion - Flexible, extensible BDD/SBE tool that creates beautiful living documentation using business language cucumber-report-db - Stores results of BDD tests with Cucumber-JVM in a database and provides reporting capabilities. Code analysis and coverage Frameworks: Language: Java SonarQube - Open source project to manage code quality. Gradle Quality Plugin - Static code analysis for Java and Groovy projects using Checkstyle, PMD, FindBugs and CodeNarc. Plugin implements unified console output for all quality plugins which greatly simplifies developer workflow: only console is required for working with violations and makes it feel the same as java compiler errors. Qulice - Qulice is a static analysis quality control instrument for Java projects. It combines all the best static analysis instruments and pre-configure them. You don't need to use and configure them individually any more. JaCoCo - JaCoCo is a free code coverage library for Java, which has been created by the EclEmma team based on the lessons learned from using and integration existing libraries for many years. #NGAutomation

More
Selenium Locator Strategies

Selenium Locator Strategies

Check commonly used locator strategies to find web elements while working complex web applications. XPATH Selectors CSS Selectors #NGAutomation

More
Selenium Commonly Used Commands

Selenium Commonly Used Commands

Check commonly used selenium commands which can be referred by UI Automation Developers anytime WebDriver Initialization Finding Web Elements Basic Browser Operations Basic Element Operations Advance Element Operations Advance Browser Operations Advance Browser Configurations #NGAutomation

More
Next Generation Automation Whats App Broadcast feed Live Now

Next Generation Automation Whats App Broadcast feed Live Now

Silent features of Whats App Broadcast feed from Next Generation Automation: 1. Feed let QA Engineers get latest technology updates related to testing as shared by NGA 2. Sharing Grow India Model updates and how its performing 3. Sharing Training Programs Updates where team actively working 4. Sharing Webinar invite links to let maximum QAs join the interactive sessions live hosted by NGA Academy 5. Sharing project openings where NGA is working actively for Clients 6. Participate in Proof of Concepts where NGA Academy actively working Membership free for a lifetime unless any QA like to quit by his choice. Click below URL and launch in your chrome browser to join the group: Group Join Invite link Click here #NGAutomation Building better QA for tomorrow

More
Evaluation Criteria to Hire Automation QAs now a days

Evaluation Criteria to Hire Automation QAs now a days

In this post, I will share 4 important parameters that every QA Engineer must worked before appearing for any Automation Interview: Parameter1: Knowledge about Testing Tools Automation, API Testing, Selenium, Rest Assured, Jmeter We obsess on giving the best error and bug-free experience to our user. And therefore, you will be assessed on your skills in automation testing and using Frameworks like Selenium, Appium, Espresso to do so. Parameter 2: Scenario Assessment Automation Knowledge, Scenario Creation, Testing Concepts, Blackbox Testing Techniques, Linux basics. You will be assessed in detail on automation and on your ability to create positive/negative scenarios for testing. We also expect you to be well informed testing concepts like Blackbox testing techniques and Linux basics. Parameter 3: Project Experience Past Projects, Real Time Assessment, Simulation Exercise After thoroughly assessing your testing skills, we will now deep dive into your previous projects and understand their synergy and relevance with the projects where we are working currently. We will also challenge you with some real time simulation exercises. Brace up for some testing, folks! Parameter 4: Team Fitment Behavioral Assessment, Culture Fit, Project Knowledge, Role Operation Be yourself. It works out better for everyone if we're genuinely and can see if we're a cultural fit for each other. Everyone here is focused on our mission, so you should figure out what it is. #NGAutomation

More
LinkedIn Resume Star Strategies

LinkedIn Resume Star Strategies

1. Choose the right profile picture for LinkedIn Your profile picture is your calling card on LinkedIn – it’s how people are introduced to you and (visual beings that we are) it governs their impressions from the start. 2. Add a background photo Your background photo is the second visual element at the top of your profile page. It grabs people’s attention, sets the context and shows a little more about what matters to you. More than anything, the right background photo helps your page stand out, engage attention and stay memorable. 3. Make your headline more than just a job title There’s no rule that says the description at the top of your profile page has to be just a job title. Use the headline field to say a bit more about how you see your role. You can check top linked in profiles with maximum followership on LinkedIn to get more thoughts how to create your LinkedIn Headline. 4. Turn your summary into your story Your summary is your chance to tell your own story – so don’t just use it to list your skills or the job titles you’ve had. Try to bring to life why those skills matter – and the difference they can make to the people you work with. This is your most personal piece of content marketing – and it’s worth the effort. 5. Let your buzzwords describe your work as well Buzzwords are adjectives that are used so often in LinkedIn headlines and summaries. Just using these words won’t convince people that you have these qualities. You need to demonstrate them as well – both in the way you describe yourself, and in the way you use LinkedIn profile features to show what you’re about. 6. List your relevant skills It’s one of the quickest of quick wins on LinkedIn – scroll through the list of skills and identify those that are relevant to you. Doing so helps to substantiate the description in your Headline and Summary, and provides a platform for others to endorse you. However, the key here is staying relevant. A long list of skills that aren’t really core to who you are and what you do, can start to feel unwieldy. Take time for a spring clean of your skills list every now and then. 7. Get maximum endorsements Endorsements from other members substantiate your skills and increase your credibility. How do you get endorsed on LinkedIn? For starters, go through your network and identify connections who you feel genuinely deserve an endorsement from you – that’s often the trigger for people to return the favour. Don’t be afraid to reach out with a polite message asking for endorsement for a few key skills as well. Remember though – relevance matters. Reach out to people whose endorsement you’d really value. 8. Take a skills assessment A skills assessment is an online test that enables you to demonstrate the level of your skills, and display a Verified Skills badge on your profile. Data shows that candidates with verified skills are around 30% more likely to be hired for the roles they apply for – and displaying proof your abilities strengthens your personal brand more generally as well. Displaying the results of your skills assessments is entirely voluntary, and you can retake the tests as often as you like before showing that you’ve passed. 9. Request recommendations Endorsements give people viewing your profile a quick, visual sense of what you’re valued for. Recommendations take things a step further. They are personal testimonials written to illustrate the experience of working with you. There’s a handy drop-down menu in the Recommendations section of your profile that makes it easy to reach out to specific contacts and request recommendations. Take the time to think about who you would most value a recommendation from – and personalize your request. It’s worth the extra effort. 10. Showcase your passion for learning When you complete a course on LinkedIn Learning, you’ll have the opportunity to add a course certificate to your LinkedIn profile. You do this from within the Learning History section of your LinkedIn Learning account – where you can also send updates about your learning to your network if choose. 11. Share media and knowledge collateral The knowledge collateral that you produce for your business can add an extra dimension to your own profile as well. Sharing case studies, white papers and other knowledge content helps to show what the level you work for is all about – and helps people understand what makes you tick. It demonstrates passion and commitment as well. For Automation QAs, sharing blogs or write own LinkedIn Articles describing Automation principles related to tools & technologies helpful. 12. Get credit for your thought-leadership with Publications The Publications section is one of the most under-used elements in LinkedIn profiles – and that means that you can really stand out from the crowd when you use this feature to draw attention to existing thought-leadership content. Have you helped to write an eBook or a White Paper? Or written a post on your company’s blog? The Publications section links your profile to these assets. You can also participate in Next Generation Automation Publications in form of blogs and update your resume with the generated Blog URL. 13. Highlight your Professional Experience All your job experiences should be mentioned on your LinkedIn profile in the same way as in your CV. This is an essential segment for the reader to understand what you do currently and what have you accomplished so far. So, ensure that you describe your current role well enough! NGAutomation Building better QA for tomorrow

More
Rest Assured Coding Exercises

Rest Assured Coding Exercises

1. Write Code using Rest Assured API to verify API Response Code 200. Here is JSON file to simulate the API 2. Write Code using Rest Assured API to verify API Response Code 404 Here is JSON file to simulate the API 3. Write Code using Rest Assured API to verify Content Type of API response Use JSON File as mentioned in Exercise 1 to simulate the API response. 4. Write Code using Rest Assured API to verify AP Response Body Contents Use JSON File as mentioned in Exercise 1 to simulate the API response. 5. Write Code using Rest Assured API to perform POST Operation using Model Class and check API Response code 200 Model class to use as below: Use JSON File as below to simulate the API response. 6 . Write Code using Rest Assured API to perform POST Operation and check contents of Response Body using Model Class Use JSON File as below to simulate the API response. Use Model Class as shown in Exercise 5. 7. Write Code using Rest Assured API to perform Data driven testing and verify contents of Response Body Use JSON File as below to simulate API Response along with Exercise 1 JSON:

More
Learn Selenium Web Driver Architecture

Learn Selenium Web Driver Architecture

Selenium Web Driver Architecture every QA Engineer must know if he is looking forward to start career as Automation QA. In this post will share architecture of Selenium Web Driver and how your test script start performing multiple operations on Web browser. Behind the scenes its not as easy as it looks. As there is web driver server specific to every browser running who actually responsible for converting test scripts commands into http commands and communication of messages exchanged via json wire protocol. Selenium Web Driver Architecture contains 4 main components: Selenium Client Library JSON WIRE PROTOCOL Over HTTP ClientBrowser Drivers Browsers Block Diagram 1. Selenium Client Libraries/Language Bindings Selenium supports multiple libraries such as Java, Ruby, Python, etc. Selenium Developers have developed language bindings to allow Selenium to support multiple languages. If you wish to know more about libraries, kindly refer to the official site for Selenium libraries. 2. JSON WIRE PROTOCOL Over HTTP Client JSON stands for JavaScript Object Notation. It is used to transfer data between a server and a client on the web. JSON Wire Protocol is a REST API that transfers the information between HTTP server. Each BrowserDriver (such as FirefoxDriver, ChromeDriver, etc.) has its own HTTP server. 3. Browser Drivers Each browser contains a separate browser driver. Browser drivers communicate with the respective browser without revealing the internal logic of the browser’s functionality. When a browser driver has received any command then that command will be executed on the respective browser and the response will go back in the form of an HTTP response. 4. Browsers Selenium supports multiple browsers such as Firefox, Chrome, IE, Safari, etc. Demo In real time, you write a code in your UI (say Eclipse IDE) using any one of the supported Selenium client libraries (say Java). Example: // System Property for IEDriver System.setProperty("webdriver.ie.driver", "D:\\IE Driver Server\\IEDriverServer.exe"); // Instantiate a IEDriver class. WebDriver driver=new InternetExplorerDriver(); driver.get("https://www.nextgenerationautomation.com"); Once you are ready with your script, you will click on Run to execute the program. Based on the above statements, the IE browser will be launched and it will navigate to Next Generation Automation website. Once you click on ‘Run’, every statement in your script will be converted as a URL, with the help of JSON Wire Protocol over HTTP. The URL’s will be passed to the Browser Drivers. Here, in this case, the client library (Java) will convert the statements of the script into JSON format and further communicate with the IE Driver. Every Browser Driver uses an HTTP server to receive HTTP requests. Once the URL reaches the Browser Driver, then it will pass that request to the real browser over HTTP. Once done, the commands in your Selenium script will be executed on the browser. In the case of Chrome browser, you can write your Selenium script as shown below: // System Property for ChromeDriver System.setProperty("webdriver.chrome.driver", "path of the exe file\\chromedriver.exe"); // Instantiate a ChromeDriver class. WebDriver driver = new ChromeDriver(); driver.get("https://www.nextgenerationautomation.com"); If the request is POST request, then there will be an action on the browser. If the request is a GET request then the corresponding response will be generated at the browser end. It will be then sent over HTTP to the browser driver and the Browser Driver over JSON Wire Protocol and sends it to the UI (Eclipse IDE). So, that was all about Selenium WebDriver Architecture. Additional Information: Automation in Selenium: Page Object Model and Page Factory Learn How to start career as Automation QA . #NGAutomation

More
Factory Design Pattern Coding Exercise

Factory Design Pattern Coding Exercise

Factory Design Pattern very common pattern used for framework development using Selenium. Automation QAs must know about this pattern if they are going to develop automation framework based on Selenium APIs. In this post we will share coding exercise that help you understand about pattern in more details. A Factory Pattern or Factory Method Pattern says that just define an interface or abstract class for creating an object but let the sub classes decide which class to instantiate. In other words, sub classes are responsible to create the instance of the class. The Factory Method Pattern is also known as Virtual Constructor. Advantage of Factory Design Pattern Factory Method Pattern allows the sub-classes to choose the type of objects to create. It promotes the loose-coupling by eliminating the need to bind application-specific classes into the code. That means the code interacts solely with the resultant interface or abstract class, so that it will work with any classes that implement that interface or that extends that abstract class. Usage of Factory Design Pattern When a class doesn't know what sub-classes will be required to create When a class wants that its sub-classes specify the objects to be created. When the parent classes choose the creation of objects to its sub-classes. Learn Factory Pattern by Example and Video Here is You tube video that will talk about the project that we going to develop using Factory Pattern Here is sample problem which need to be solved using Factory Pattern: Here is project structure which need to be developed. Try to write your own code before downloading the shared code. Here is Download link to download project source code : Click here to download

More
Abstract Factory Design Pattern Coding Exercise

Abstract Factory Design Pattern Coding Exercise

In this post we will share information regarding Abstract Factory Pattern. Abstract Factory Pattern very important for Automation QAs to understand if need to develop complex automation frameworks in high performing business applications testing. Brief Introduction about Abstract Factory Design Pattern The Abstract Factory Pattern is one of the creational design patterns. We can say Abstract Factory patterns acts as a super-factory which produces other factories. The role of the Abstract Factory is to provide an interface for creating families of related or dependent objects without specifying their concrete classes. If we are using an abstract factory pattern, then the client program will never create platform objects directly, they ask the factory to perform this task for them. So the factory object has the total responsibility for proving this service for the entire platform family. You can use this pattern if- You need your application to be independent of how its objects are created. To decouple classes and way its objects are created. If your business logic involves families of related or dependent objects. The pattern is great when creating predefined objects and providing abstraction, and automation projects majorly comes into picture when all interfaces have developed and need to be tested. That's why Abstract Factory Pattern significantly used across complex business applications test automation. Learn Abstract Factory Pattern by Example and Video Here is You tube video that will talk about the project that we going to develop using Abstract Factory Here is sample problem which need to be solved using Abstract Factory: Here is project structure which need to be developed. Try to write your own code before downloading the shared code. Here is Download link to download project source code : Click here to download

More
Database Utilities Creation Coding Exercises

Database Utilities Creation Coding Exercises

Data connectivity one major requirement for test engineers to test along with data correctness. And this can be made possible if you have right set of Database Utilities in your automation framework which can be extended as per your data testing needs. In this post, We are sharing common Database Utilities which can be used in live projects and also same can be used while solving coding exercises as given by overseas employers to test coding skills of Automation QAs. Exercise 1: Write method to Get all data from table in vector format Exercise 2: Write method to Get list of all available tables in database Exercise 3: Write method to Get list of column names for particular table Exercise 4: Write method to Get Column List for all available tables from data base Exercise 5: Write method to Establish Connection for given username and password Exercise 6: Write method to Execute database query for given username and password Exercise 7: Write method to Execute Update Query for given username and password Exercise 8: Write method to Execute Procedure Call for given username and password #NGAutomation Building better QA for tomorrow

More
Excel Utilities Creation Coding Exercises

Excel Utilities Creation Coding Exercises

Excel utilities creation very much required for any QA Engineer as all test scripts require some level of interaction with Data and excel utilities help you get interacted with excel sheets where many enterprises maintains its test data. In this post we will share common utilities that will be helpful for QA Engineers to use both live projects and to solve coding exercises which sometimes given by Overseas employers while hiring Automation QAs. Exercise 1: Write method to returns the row count in a sheet Exercise 2: Write method to returns the data from a cell based on Column Name and Row Number Exercise 3: Write method to returns the data from a cell based on Column Number and Row Number Exercise 4: Write method to write cell data based on colName and rowNumber with given data Exercise 5: Write method to write cell data based on colName and rowNumber with given data and URL Exercise 6: Write method to addsheet in given excel Exercise 7: Write method to remove sheet in given excel Exercise 8: Write method to add column in given sheet Exercise 9: Write method to remove column in given sheet Exercise 10: Write method to find whether sheets exists Exercise 11: Write method to returns number of columns in a sheet Exercise 12: Write method to add hyper link for given sheetname and screen shot column name #NGAutomation Building better QA for tomorrow

More
Selenium Coding Exercises

Selenium Coding Exercises

lps QA to walk through sample selenium coding exercise which will be helpful both for interviews preparation and working as Automation QA to use shared code in live projects. Exercise 1: Write a script to open google.com and verify that title is Google and also verify that it is redirected to google.co.in Exercise 2: Write a script to open google.co.in using chrome browser (ChromeDriver) Exercise 3: Write a script to open google.co.in using internet explorer (InternetExplorerDriver) Exercise 4: Write a script to create browser instance based on browser name NGA Overseas Hiring Model Live Now. Model helps connect QA Automation Engineers directly with Overseas Employers for high growth Software Testing Jobs both Remote and Onsite. To know more about the offered service, click here . Exercise 5: Write script to login Next Generation Automation Exercise 6: Write a script to search for specified option in the listbox Exercise 7: Write a script to print the content of list in sorted order. Exercise 8: Write a script to print all the options.For duplicates add entry only once. Hint: Use HashSet Exercise 9: Write a script to close all the browsers without using quit() method. Exercise 10: Write generic method in selenium to handle all locators and return web element for any locator. Exercise 11: Write generic method in selenium to handle all locators containing dynamic wait and return web element for any locator. #NGAutomation

More
Understand Node JS Single Thread Event Loop Work Flow

Understand Node JS Single Thread Event Loop Work Flow

Node JS Single Threaded Event Loop Model Node JS applications uses “Single Threaded Event Loop Model” architecture to handle multiple concurrent clients. There are many web application technologies like JSP, Spring MVC, ASP.NET, HTML, Ajax, jQuery etc. But all these technologies follow “Multi-Threaded Request-Response” architecture to handle multiple concurrent clients. In this article we focus on Single Threaded Event Loop Model which is latest request and response model to process client request and generate response utilizing lesser memory resources compare to traditional request and response model which is based on multi threaded. Node JS Platform does not follow Request/Response Multi-Threaded Stateless Model. It follows Single Threaded with Event Loop Model. Node JS Processing model mainly based on Javascript Event based model with Javascript callback mechanism. As Node JS follows this architecture, it can handle more and more concurrent client requests very easily. The main heart of Node JS Processing model is “Event Loop”. Here are Single Threaded Event Loop Model Processing Steps: Clients Send request to Web Server. Node JS Web Server internally maintains a Limited Thread pool to provide services to the Client Requests. Node JS Web Server receives those requests and places them into a Queue. It is known as “Event Queue”. Node JS Web Server internally has a Component, known as “Event Loop”. Why it got this name is that it uses indefinite loop to receive requests and process them. (See some Java Pseudo code to understand this below). Event Loop uses Single Thread only. It is main heart of Node JS Platform Processing Model. Even Loop checks any Client Request is placed in Event Queue. If no, then wait for incoming requests for indefinitely. If yes, then pick up one Client Request from Event Queue Starts process that Client Request If that Client Request Does Not requires any Blocking IO Operations, then process everything, prepare response and send it back to client. If that Client Request requires some Blocking IO Operations like interacting
with Database, File System, External Services then it will follow different approach Checks Threads availability from Internal Thread Pool Picks up one Thread and assign this Client Request to that thread. That Thread is responsible for taking that request, process it, perform Blocking IO operations, prepare response and send it back to the Event Loop Event Loop in turn, sends that Response to the respective Client. Diagram Description Here “n” number of Clients Send request to Web Server. Let us assume they are accessing our Web Application concurrently. Let us assume, our Clients are Client-1, Client-2… and Client-n. Web Server internally maintains a Limited Thread pool. Let us assume “m” number of Threads in Thread pool. Node JS Web Server receives Client-1, Client-2… and Client-n Requests and places them in the Event Queue. Node JS Even Loop Picks up those requests one by one. 1. Even Loop pickups Client-1 Request-1 Checks whether Client-1 Request-1 does require any Blocking IO Operations or takes more time for complex computation tasks. As this request is simple computation and Non-Blocking IO task, it does not require separate Thread to process it. Event Loop process all steps provided in that Client-1 Request-1 Operation (Here Operations means Java Script’s functions) and prepares Response-1 Event Loop sends Response-1 to Client-1 2. Even Loop pickups Client-2 Request-2 Checks whether Client-2 Request-2does require any Blocking IO Operations or takes more time for complex computation tasks. As this request is simple computation and Non-Blocking IO task, it does not require separate Thread to process it. Event Loop process all steps provided in that Client-2 Request-2 Operation and prepares Response-2 Event Loop sends Response-2 to Client-2 3. Even Loop pickups Client-n Request-n Checks whether Client-n Request-n does require any Blocking IO Operations or takes more time for complex computation tasks. As this request is very complex computation or Blocking IO task, Even Loop does not process this request. Event Loop picks up Thread T-1 from Internal Thread pool and assigns this Client-n Request-n to Thread T-1 Thread T-1 reads and process Request-n, perform necessary Blocking IO or Computation task, and finally prepares Response-n Thread T-1 sends this Response-n to Event Loop Event Loop in turn, sends this Response-n to Client-n Internal Advertisement: NGA Overseas Hiring Model Live Now. Model helps connect QA Automation Engineers directly with Overseas Employers for high growth Software Testing Jobs both Remote and Onsite. To know more about the offered service, click here . Here Client Request is a call to one or more Java Script Functions. Java Script Functions may call other functions or may utilize its Callback functions nature. So Each Client Request looks like as shown below: function(other-function call, callback-function) Node JS Architecture – Single Threaded Event Loop Advantages Handling more and more concurrent client’s request is very easy. Even though our Node JS Application receives more and more Concurrent client requests, there is no need of creating more and more threads, because of Event loop. Node JS application uses less Threads so that it can utilize only less resources or memory Event Loop Pseudo code: public class EventLoop { while(true){ if(Event Queue receives a JavaScript Function Call){ ClientRequest request = EventQueue.getClientRequest(); If(request requires BlokingIO or takes more computation time) Assign request to Thread T1 Else Process and Prepare response } } } #NGAutomation Building better QA for tomorrow

More
The Art of Story Telling to chase best Job Offers

The Art of Story Telling to chase best Job Offers

The Art of Story Telling plays very important role now a days as every employer need staff who is smart, energetic and full of confidence. Showing all above mentioned traits can be made possible if Candidate knows the art of story telling and which can be master easily with some practice and home work. Before we share more details about the art of story telling, lets first understand: What People remember most during conversation? People remember best those things that are stored in their minds as pictures. In fact, some brain research indicates that memories are stored as holograms. This means that if words pass from your mouth and do not create any images or emotions in the minds of employers, those words will literally pass through one ear and out the other – there will be no impact or long-term memory. Consider what happens when a person is asked to describe herself. She may declare that she is hard working, energetic, a true leader, and a person who can successfully juggle multiple tasks. The problem here is that she is trying to sell too many things at once and doesn't do a good job with any of them. Because she doesn't back up any of the claims with examples, none of the points will be remembered after she leaves the interview. Telling stories has become so important that an entire form of interviewing has been built around it known as behavior-based interviewing. In this rapidly growing style of interview, each question actually demands the sharing of a specific experience. Questions might include, "Give me an example of a time when you solved a difficult problem," or "Describe an experience where you had to deal with an angry customer." The interviewer will not allow you to go on to the next question until a specific example has been provided. Stories Have Impact Stories are important because they can say so much about you in a concentrated way. Ankur Chaudhry, the founder of Next Generation Automation who successfully runs Overseas placement model for QA Engineers shares an excellent example of how telling stories in an interview can make a difference. While conducting an interview, Employer asked the candidate for an example that would demonstrate a strong commitment to completing tasks. Here instead of stressing someone do 16 Hours job might be first choice which employer looks but there is more to this. Here Candidate need to explain how his 8 to 10 Hours Job Effort deliver returns worth 2 or 3 times more than any individual can generate. And this need to be supported with nice story providing key information along with required data. Telling Stories Is Important To Interviewing Success Today's interviewers are demanding examples and not just generalities. Behavior-based interviewing growing rapidly now a days all across globe. A smart interviewee is prepared. Telling effective stories definitely requires practice. You must take time recalling many of your past experiences, particularly your accomplishments, before you enter the interview room. Without that previous recall, you will be unlikely to remember the experience during the tremendous pressure of an interview. Not only should you tell stories when the question demands it, but you should look for opportunities to share examples because that is the best way to really impact employers. Effective story telling will yield more job offers. How To Tell A Story When telling stories, provide all of the key information. Describe the situation and the challenges you faced. Then describe your analysis and the recommendations you made. Next, describe what you implemented and the results you obtained. Complete the story by describing how your work benefited the organization. As you end the story, remind the interviewer of the skills you demonstrated. Even though many questions do not invite stories, you need to be prepared so that when an opportunity to tell a story presents itself, you'll be ready with your best example. To tell effective stories: + Provide all of the key information + Describe the situation as you came into it – problems and challenges included + Describe your analysis and recommendations + Describe what you implemented and the results you obtained + Create vivid images + Provide interesting details, but keep the story concise + Make the story interesting Example: If QA Engineer claims he is good in automation, it need to be supported with required data like number of test scripts automated in past projects, major challenges solved while working automation enabled areas, what level of ROI your scripts have generate in your projects and so on Last, Employers Will Remember You For Weeks if you are good in Story telling Using anecdotes to describe job skills is a highly effective interview technique. In less than three minutes you can tell a powerful story that will cause interviewers to remember you favorably for weeks. Since employers know that the best predictor of future success is past success, tell stories which vividly describe your successes Hope this article helps our registered members to chase Go Europe Model Job Openings more effectively. #NGAutomation Building better QA for tomorrow

More
How Self Healing Automation works?

How Self Healing Automation works?

Before we dive deep into architecture of Self healing automation lets first understand current state of manual maintenance Current state of manual maintenance Unfortunately, “fragile” is a word all-too-commonly associated with test automation scripts. When a script breaks, manual object identification maintenance can take up to 15 minutes per occurrence. A script breaks when object properties change, and an automation engineer must stop developing new scripts to troubleshoot and fix the broken one. The team manually inspects or spies the object to see the new property value or find new properties to use, then updates the script or object repository accordingly and reruns the script. The math is daunting: One application deployment per week could encounter around 35 object changes (which varies greatly based on application maturity, development methodology, size of project, etc.). At 15 minutes per manual fix, the result is more than one person’s full workday — 8.75 hours — spent per week on basic automation maintenance. Self-healing automation But it doesn’t have to be that way. Self-healing automation is a solution that addresses the No. 1 cause of test automation script maintenance: object changes. The “object,” in this context, is an item in a script — such as a button or text box on a webpage — that the script (or the user) would interact with to perform tasks. Scripts must be able to unique identify which object it needs to perform an action on — which text box should it put your username into? Just as a person can be identified by physical attributes such as size, hair color or eye color — or by other relative means (“that person we saw at the store yesterday”) — objects must also be uniquely identified in some way. And, just as people’s appearances can change to the point that they aren’t recognizable to others, objects that no longer fit their original “description” can confuse traditional automation scripts. When that happens, scripts break and downtime accumulates. Self-healing employs data analytics to identify objects in a script even after they have changed. The result is a system that goes far beyond the “Band-Aid” approach often written into scripts, such as the use of wildcards or regular expressions to handle variation in object names or identifiers. Rather than relying on those methods — and allowing productivity to grind to a halt anytime they fail — the self-healing approach introduces a higher level of intelligence and analysis. When your script fails due to being unable to find the object it expected, the self-healing mechanism provides a fuller understanding and analysis of options. Rather than shutting down the process, it examines objects holistically, evaluates attributes and properties of all available objects and uses a weighted scoring system to select the one most similar to the one previously used. Self-healing can scrape, evaluate and choose among 10 objects in less than 0.05 seconds. Stopand-go syndrome is effectively cured. The self-healing difference can be fully realized as it: • Changes the mindset regarding automation approaches • Allows automation efforts to start earlier as fears of maintenance subside • Automates the maintenance process itself in real time • Improves or preserves the return on investment Lets dive deep now into architecture part of Self Healing Automation Framework developed by Next Generation Automation Academy experts for US Clients. How self-healing works? With self-healing automation, the same number of object changes per week mentioned earlier (35) — which could take more than a full workday to handle manually — can be remediated in a fraction of a second. When an object’s properties change, the self-healing tool springs into action, scraping similar objects on the page and comparing them to the previously stored historical data on that object. Data analytics and custom property weighting are deployed, enabling the tool to predict the most probable object being sought. The automation script continues running, using new object properties and an automatically updated object repository to head off future errors. The default weights assigned to each property name can be modified. Ultimately, empowered automation engineers will turn their attention to use cases that seemed too aspirational in the past. They can: • Create generic scripts regardless of application or objects, resulting in much higher reusability • Reduce the effort to update automation scripts to work after application upgrades • Reuse more automation scripts based on out-of-the-box (OOTB) functionality • Use the same scripts between environments • Use the same scripts between clients/projects (important for consulting firms and our clients to accelerate testing by reducing initial ramp-up time for automation efforts!) The self-healing process The process is straightforward. When an object cannot be found (due to a property name or value change), the failed object is fetched from a historical object repository file, along with all its property names and values. All similar objects (such as all other text boxes) that do exist on the page are scraped, including all their properties and values and saved into an “Object Capture” table. Self-healing will use various similarity scoring algorithms to evaluate how similar each property is between the missing historical object and the available objects on the page. Each property is given a similarity score (while also considering customizable weightage so you could say that “name” is more useful to identify a match than “color,” for example) and ultimately each possible match is given a total score. Self-healing will return the object and its properties with the highest score for use. The script can then attempt to identify the new object, continue on in execution and update framework repositories with the new object information, as long as everything works. Some common questions which clients ask to Next Generation Automation related to Self Healing Automation? How does it handle objects that are extremely similar, such as Address 1 and Address 2 fields? The first thing to try is adding more properties to compare that may help differentiate these objects. In this example, they are both text boxes, have similar names and sizes and locations — but what is different about them? Perhaps considering which is mandatory would help correctly identify them, or more heavily weighting location. How configurable can be Self Healing Automaiton Framework? It is entirely configurable, either by using config files or by directly editing the code. In the configuration files, you can configure properties to scrape and determine their weight. In the code, you can change the similarity scoring mechanism, the input/output formats (JSON by default) and other mechanisms Other tools claim to have self-healing capabilities. How is this different? Other tools are proprietary and siloed — they must be purchased from the vendor, with everything done the vendor’s way. To use their “self-healing” mechanisms, you must totally transition to their tool, which is a significant effort for large organizations. Many of these tools, while more modern in their approach and capabilities, are lacking the robustness needed by most large organizations. Next Generation Automation self-healing utility can be integrated with existing tools, reused and customized. It provides a more direct, scalable solution that has the flexibility to work differently with other tools or applications. Are there any known limitations or issues? The primary application is for web-based applications, so further adaptation would need to be done to apply to other platforms (native mobile apps, desktop, etc.). In concept, this applies to those as well as robotic process automation (RPA), since they identify objects in similar ways for the most part (some tools support image cognition-based identification that would not be covered here). However, most RPA tools are proprietary and closed off and do not allow for integration of external utilities such as this. Even if they allow custom code to be run, that code cannot manipulate their internal object repository information. Why not use machine learning or other concepts for self-healing? While it could be accomplished using machine learning, it introduces a greater level of complexity to the process. Machine learning (ML) requires large amounts of training data to be accurate and then is only accurate based on that training data. Different applications, projects and automation frameworks will have different quirks — or “features” as they are called in the data science world — that the ML model may not adapt well to. If a new property needs to be assigned to an object, machine learning requires a change to its model, new training data and a comparatively cumbersome procedure. The selfhealing automation solution, by contrast, provides a lighter-weight, more direct approach that is eminently more controllable and flexible. What if it doesn’t work? While we’ve found that our self-healing mechanism is accurate more than 80% of the time, much depends on the application, the scripts and other factors. It’s flexible enough to add more properties to aid in comparison accuracy, as well as weight the importance of properties (such as determining that a similar name is more important than a similar color). In a worst-case scenario, if self-healing identifies the wrong object, you are no worse off than before — you’ll have to perform maintenance manually for that one instance. So why not try it? We have not encountered this, but even if it worked only 25% of the time, that’s 25% less manual maintenance. #NGAutomation Building better QA for tomorrow

More
How to make IT Job more interesting?

How to make IT Job more interesting?

IT Job looks very boring to many QA Engineers after few years of work and they start looking other areas for work. Which sometimes becomes better solution but many times such QA Engineers would like to join back IT Career. In this post we will share you some of best strategies that let you make your Job more interesting and make you feel proud to be part of IT field. 1. Keep Note of all your daily tasks while at work Start your day with pre defined tasks that you look to work at for rest day. This will keep you engaged with work and not feel like your job not worth. 2. Prioritize your tasks and update as needed At middle of day, revisit your predefined tasks and do required prioritization if needed. Also keep most important tasks to complete at start of day and rest day assign tasks that not very important to execute with in same day. 3. Spend less time talking with your co workers other than work at office Office defined for work and not for personal talks for longer periods of time. Avoid spending too much time with your co workers in talking about which does not relate to your work. 4. Add time slot for your learning every day Learning key for any job success and for your career as well. Hence you must have time slot available every day for your learning. 5. Talk at least 10 mins and not more than 30 mins with your best co worker Talking with co workers with whom you more comfortable not only strengthen your work relationship but also keep yourself motivated at work. 6. Take short breaks of 5 to 10 mins every 1 hr Taking short breaks not only refresh you but also make your physically fit. 7. Take fresh air at least during lunch break for 10 to 15 mins Fresh air very much needed for every human being and it not only refresh you but also stimulates your brain cells for executing complex tasks while at work. Also it helps you digest your lunch more easily and not let you feel sleepiness during post lunch hours at work. 8. Reward yourself after achieving small milestones Don't wait for others to send you appreciation mail. If you feel very low while at work send yourself " You have done great job" when you achieve some thing at work. It builds self confidence and let you be more productive at your work. 9. Don't shout during office hours. Keep yourself calm and avoid any shouting. Shouting not only breaks your relationship with co workers at work but it also let you feel down as you need to spend 8 to 10 hours every day of your life same work area and need to work with same co workers to whom you have shouted some time back. 9. Keep your mobile phone in silent mode while at work Smart phones become every one life style now a days. But when at work keep smart phone away and use only to accept any urgent calls from family or others. Avoid accepting calls at work like Personal Phones, Buy Credit Card, Buy Property, Buy Insurance, Buy Health Cover and others. 10. Avoid browsing personal websites during office hours unless urgent like paying utility bills or transferring monthly rents or things which very much needed to do Browsing personal websites not only waste your time at work but if some one find you browsing personal web sites it also mark you as not effective worker in eyes of others. If you really like browsing personal website come home right time and use your time at home to browse personal websites which you like. 11. Last love yourself and respect yourself Never try to punish yourself if things not turning well in your job. Instead look for opportunities to improve. Even if you asked to quit the job that does not mean end of your life or your career. Many employers today hire people who are immediate joiners and even willing to pay more salary than last drawn. So always have feeling of love and respect about yourself. Treat your body well and have right eating habits and perfect sleep at night. Remember if you are healthy than only becomes wealthy. Hope these best practices let you reward yourself in long run and you always feel proud at your work place. Also remember no company is big or small as all companies made of people only. Any company that treats you well and take care about your living cost timely in form of monthly cheques should always be loved and deserve your respect. #NGAutomation Building better QA for tomorrow

More
Read some one written programming code more effectively

Read some one written programming code more effectively

As you get enter into programming job, its very rare you get the project where every thing needs to be develop from scratch. Many times you hired for ongoing project and major code already developed by the rest team members. Hence its very important to develop good programme reading skills and it helps you settle down in your assigned project earliest and let you productive with less effort. In this post we are sharing some of best practices adopted by developers and automation engineers when they asked to join the ongoing project: 1. Run the code Well, this is the first step in reading code. This might not give you a lot of details about the project, however, you will know how to build it and run it, and you will get to learn about the libraries it uses, the framework(s) it depends on, etc., which is a great way to improve your understanding of a particular project. If you want to write your own piece of software similar to the particular project you are exploring, you might get some ideas about the possible framework or libraries you should use. 2. Find the high-level logic You may not jump into each detail when you start reading a project. Rather, you should focus on the high-level structure. Start from the entry point. Most projects have a main method, start from there. Besides, if this is a web application, start looking into different packages, like where the business logic is housed, where the UI code is kept, where the controllers are, etc. Basically, walk through the whole project and gain a primary idea, and then ask yourself where you want to focus and which part you want to read first. You may not read the entire code base, rather, just a portion of it may interest you. When you find your spot, you can start by method calling and see where it leads you. 3. Use/ know tools There are plenty of tools out there for reading and exploring source code that can help to visualize code. For example, IntelliJIdea has the capability to navigate source code, allowing you to search by words, part of a word, or even an abbreviation. You should learn the keyboard shortcuts as well. Navigating source code with the mouse can be pretty boring and slow where working with the keyboard shortcuts can be faster. You can jump from one part of the source code to another quickly. 4. Know the language/ conventions Knowing a particular language deeply helps you to improve your code reading skill. Every language has its own set of conventions, styles, and syntax. Knowledge of those helps you to be familiar with a particular piece of code, quickly. For example, in Java, method names start with a lower case letter, whereas in C# they start with an uppercase letter. Knowing this distinction helps you to identify the methods from the source code. 5. Read the best practices/ design patterns The code you are reading, or a certain construct of it, may seem obscure or you may not be familiar with it, which is natural. There are plenty of good practices and design patterns that people use to do things correctly and optimally. For example, there is a pattern called Singleton where the constructor is kept private. You may ask, why on earth someone want to keep a constructor private, I have always seen it is as public, otherwise, how would I create an instance out of a class. Well, there is a reason behind it. Singleton patterns prevent you from instantiating a class more than once, which has many practical use cases. If you know the pattern, you would not bang your head against the wall for that. 6. Code Review Software development is a very collaborative effort. No one can build a large or a significant software alone. Every software is built by a team. In a team, everyone contributes to shaping a project. At the end of the day, everyone’s contributions get merged and become a good piece of work which has a real value to the customers. Besides doing the actual coding, there is another practice that every team these days does, which is, review each other’s code while making observations, suggestions, and learning from one another. This is a powerful tool for building knowledge of a code base, creating strong bonds in a team, and improving code quality that leads to fewer bugs in the system, and happy customers. Doing code reviews, you are forced to read someone else’s code in your team which ends up improving your code reading skills. 7. Temporary Refactoring Temporary refactoring also can help you improve your code reading skill. You can start taking a long method and then keep breaking the method into multiple pieces. Keep doing that until you get a sense of what the intent behind the larger method was. After that, you can take a few notes on what the method does and then rollback the changes. This can help your understanding of the method construct and improve your knowledge of refactoring as well. #NGAutomation Building better QA for tomorrow

More
Starting your new job, Must read this

Starting your new job, Must read this

A new job, a different role, and bigger responsibilities can mark the beginning of a major career transition, especially if it's a dream project that you had been eyeing. It is important to prepare oneself in order to avoid being overwhelmed by change.
Abilities and strengths can help overcome the fear and nervousness of being a newbie. Having self-confidence will not only help you perform your business tasks efficiently but will empower you to become a well-rounded individual. There are specific ways to increase self-confidence at your workplace and make every day even more productive than yesterday.
Here are eight important tips to keep those rattling nerves at bay, ease the fear of uncertainties, and feel confident in your new job:
Tip 1: Prepare Before You Turn Up
Research is the key to any job as much as it is a new project or assignment. Know your company well, its stakeholder, products, and most importantly, its culture. The first few days in the office is going to be about orientation and a blur of names, rules, HR formalities and regulations. Give yourself a bit of a head start by reading the company website followed by its LinkedIn page. Get to know the company values by researching about the top management and the board of directors through published material on the Internet. Ask your manager to share study material, case studies, client briefs etc. with you. Tip 2: Talk Less, Listen More
When in team meetings listen more and imbibe the knowledge imparted. Take notes during meetings and do not hesitate to ask questions. Keep the questions short and make a note of the answers you get to the questions. While your opinion matters during part of group discussions and brainstorming sessions emphasise listening over speaking. The most rookie mistake that people make during their first few days in a company is to come under the impulse of "taking the stage," of speaking before the other one could say what he intends to or very often say something generic and clichéd without giving any actual insight. Tip 3: Be Polite to Support Staff
Office administration or the support staff is the backbone of any organisation. It becomes absolutely imperative for you to be warm and nice to them. This staff is your best bet to understand the office atmosphere best and make your transition in a new environment smooth. In a non-technical environment, support staff is usually the one who helps an employee adjust to the applications used, processes followed, supported by periodical assistance and instruction.
Tip 4: Dress for Success
When moving to a new organisation, it is important to understand culture and dress accordingly. It is not only important to wear what is followed by code, but it is important to look the part that you are hired for. Do not over­dress or under­dress. This could have a negative influence on your employer and team members and could even overshadow your efficiency and personality. Grooming is a part of any workplace. Whether your office follows a formal dress code or casual dressing, being well­-kept is key to making a good impression. Tip 5: Volunteer
Take a fresh look at your company's programmes by volunteering in projects and assignments. Volunteer to do a little grunt work and do something other people don't want to do. It creates an avenue to network and even helps establish connect with those who are not from your department. Apart from enjoying the social aspect of being part of a group initiative, it also helps you gain perspective into the workings of an organisation. Your contribution and intelligence will be measured and that will help you gain the respect of your peers and bosses, which, in turn, will make you feel a lot more confident. Tip 6: Be Confident, Not Over­confident
If you don't have confidence in yourself to understand your abilities and the value you add, it could be holding you back from reaching your full potential. At the same time, over­confidence, also termed as 'star sickness', presupposes that we are absolutely pleased with ourselves which means that there is no need to grow. Star sickness lowers the level of self-criticism. It seems to you that you make everything ideally. You just do not have any shortcomings! Tip 7: Ask for Help
Many people feel asking for help is a sign of weakness. That's especially true when you don't feel confident. The secret is asking the right person the right question. Find that person in your team or organisation who is willing to help. You may assume talking to your supervisor or boss may not be the best idea, but that's often not your best course of action.
Tip 8: Use Official Mails only when required Initial few months avoid sending any group mails or mails that shows your superiority and richness about subject for which you are hired to your co workers. Use official mails majorly to receive communication to start work in your new office on positive note. Summarizing: When you are starting new at a job, instead of anticipating and projecting, stay in the moment. Focus on the task at hand, if you attend to the building blocks which is the learning processes, getting to know your team, then everything else will fall into place. #NGAutomation Building better QA for tomorrow

More
5 Popular AI-powered tools for test automation

5 Popular AI-powered tools for test automation

5 Popular AI-powered tools for test automation AI Powered tools for test automation next buzzing theme in world of automation and surely this theme going to last more than decade as enterprise applications becomes complex and automation suite contains 1000s of test scripts. Biggest advantage which AI Powered tools gives compare to traditional tools like Selenium is ease of maintenance. AI Enabled Tools have in built self healing capabilities, any changes in the application let the tool heal the test scripts and this makes AI powered tools so exciting to look at. Maintaining automation suite with 100 plus test scripts never easy task even for skilled automation engineers as application tends to change with time due to ever changing business requirements and unless self healing capabilities not get added in automation life cycle any significant investment may look not very much promising for your product quality in long run. In this post, we will share some of buzzing AI Enabled tools right now in market but yes there will be strong competition in this area as enterprises look forward to enable AI in automation life cycle. 01: TestCraft TestCraft is an AI-powered test automation platform for regression and continuous testing that works on top of Selenium. It is also used for monitoring of web applications. The role of artificial intelligence (AI) technology is to eliminate maintenance time and cost by automatically overcomes changes in the app. And the best thing about TestCraft is that testers can visually create automated, Selenium-based tests using a drag and drop interface, and run them on multiple browsers and work environments, simultaneously. No coding skills required. Website: https://www.testcraft.io/ 02: Applitools Applitools is an application visual management and AI-powered visual UI testing and monitoring software. It provides an end-to-end software testing platform powered by Visual AI and can be used by professionals in engineering, test automation, manual QA, DevOps, and Digital Transformation teams. Also, the AI and machine learning algorithm are entirely adaptive — it scans the apps’ screens and analyze them like the human eye and brain, but with the power of a machine. Website: https://applitools.com/ Internal Advertisement: NGA Overseas Hiring Model Live Now. Model helps connect QA Automation Engineers directly with Overseas Employers for high growth Software Testing Jobs both Remote and Onsite. To know more about the offered service, click here . 03: Functionize Functionize is a cloud-based automated testing technology that is used for functional, performance, and load testing — one stop shop for all the mentioned testing. Also, this tool uses machine learning and artificial intelligence to speed up test creation, diagnosis, and maintenance. One of the best features of this tool is that you don’t have to think a lot before carrying out a test — all you have to do is type what you want to test in plain English and NLP creates functional test cases. It also executes thousands of tests in minutes from all desktop and mobile browsers. If you are looking for a test automation tool, then Functionize is definitely worth a try. Website: https://www.functionize.com/ 04: Testim Automated functional testing tool, Testim uses artificial intelligence and machine learning to speed-up the authoring, execution, and maintenance of automated tests. Speaking of support, the tool run on different browsers and platforms such as Chrome, Firefox, Edge, IE, Safari, and Android. Testim comes in two plans — basic and pro. The basic plan is free and has very limited features. While on the other hand, the pro version supports everything. Website: https://www.testim.io/ Internal Advertisement: NGA Overseas Hiring Model Live Now. Model helps connect QA Automation Engineers directly with Overseas Employers for high growth Software Testing Jobs both Remote and Onsite. To know more about the offered service, click here . 05: Mabl A unified DevTestOps platform that makes it easy for developers and testers to create and run automated functional UI tests faster and at scale. Some of features include Creating robust automated tests is codeless and scriptless,Testing infrastructure is fully managed in the cloud, Scale tests infinitely and run them all in parallel. It generates Auto-healing tests which can adapt to UI changes without intervention. Website https://www.mabl.com/ #NGAutomation Building better QA for tomorrrow

More
Automation Tools for Testing Desktop Applications available Open Source

Automation Tools for Testing Desktop Applications available Open Source

Many QAs asked this question when it comes to automating Desktop Application. And very less QAs actually get chance to do Desktop application automation. In this post we will share some of commonly used tools available open source that going to help you in achieving desktop automation. Major tools that are available for Desktop Application Automation are: 1. WinAppDriver Windows Application Driver developed by Yousef Durr of Microsoft, it is the Windows implementation of Appium to automate Windows applications. Windows Application Driver is a service to support Selenium-like UI Test Automation on Windows Applications. This service supports testing Universal Windows Platform (UWP), Windows Presentation Foundation (WPF), Windows Forms (WinForms) and Classic Windows (Win32) apps on Windows 10 PCs. The Windows Application Driver complies with the JSON Wire Protocol standard and some application management functionalities defined by Appium. Website: https://github.com/Microsoft/WinAppDriver 2. Winium Winium.Desktop is a Selenium Remote WebDriver implementation for the automated testing of Windows applications based on WinFroms and WPF platforms Website: https://github.com/2gis/Winium 3. White Framework Do you need to automate a thick client application like WPF, Silverlight, Win32 or WinForms? If so, then the White frameworkmay be the automation framework for you. White is an open-source library from Test Stack. Like CodedUI, it has a more narrow scope; it only targets desktop applications, not Web applications. Both CodedUI and White are based on UI Automation Library for Microsoft. Website: https://teststackwhite.readthedocs.io/en/latest/ Internal Advertisement: NGA Overseas Hiring Model Live Now. Model helps connect QA Automation Engineers directly with Overseas Employers for high growth Software Testing Jobs both Remote and Onsite. To know more about the offered service, click here . 4. SikuliX SikuliX can help automate anything you see on the screen of your desktop computer running Windows, Mac or some Linux/Unix. SikuliX uses image recognition powered by OpenCV to identify and control GUI components. Website: http://sikulix.com/ 5. AutoIt AutoIt v3 is a freeware, BASIC-like scripting language designed for automating the Windows GUI and general scripting. While it’s not the most robust of automated testing tools, many teams integrate AutoIt with Selenium to work around non-browser windows that appear in an automated test workflow. Website: https://www.autoitscript.com/site/ 5. Pywinauto Do you love using Python as your go-to language for everything, and also need to automate Windows desktop applications? If so, check out pywinauto. It describes itself as a GUI automation library written in pure Python and well developed for Windows GUI. At its simplest, it allows you to send mouse and keyboard actions to dialogs and controls on both Windows and Linux, while more complex text-based actions are supported on Windows only thus far (Linux AT-SPI support is under development). The latest release introduced MS UI Automation (UIA) support, which includes WinForms, WPF, Qt browsers, Store apps-based tests and more Website: https://pywinauto.readthedocs.io/en/latest/contents.html 6. Jubula Jubula helps you test desktop Java applications. Jubula provides automated functional GUI testing for various types of applications. It is aimed at teams who want their automated tests to be written by test experts from the user perspective, without requiring any coding effort. Jubula tests incorporate best practices from software development to ensure long-term maintainability of the automated tests. Jubula will also try to be an anchor point for a broader testing scope including requirements analysis, code coverage of Java applications and test metrics. It majorly supports Swing, SWT/RCP/GEF, JavaFX and HTML applications Website: https://www.eclipse.org/jubula/ 7. Oracle Application Testing Suite Are you looking to test Oracle based Applications. Oracle Application Testing Suite is a comprehensive, integrated testing solution for Web applications, Web Services, packaged Oracle Applications and Oracle Databases. Oracle Application Testing Suite (OATS) contains a bunch of integrated products to help with Oracle Functional Testing for regression testing of Web applications, and Oracle Load Testing for performance testingof your Oracle packaged solutions. This integrated, full lifecycle solution enables you to define and manage your application testing process, validate application functionality, and ensure that your applications will perform under load. With Application Testing Suite, you can deploy your Web applications and Web Services in less time while maximizing the efficiency of your testing team. Website: https://www.oracle.com/technetwork/oem/app-test/index.html #NGAutomation Building better QA for tomorrow

More
Essential QA Metrics to Measure Product Quality

Essential QA Metrics to Measure Product Quality

Essential QA Metrics to Measure Product Quality An effective QA strategy always can be measured. It should help measure product quality, team efficiency and must provide critical insights into your software testing process. In this post we will understand more about how QA metrics can help in measuring product quality and must bring in usage by every quality leader. The Importance of Measuring QA QA processes can be full of friction that slows down deployment and eats up valuable resources. Tracking key metrics around the QA process helps identify where your team’s time and budget are being used ineffectively and optimize accordingly. Equally important is measuring the efficacy of the testing process — bugs that slip through to production are expensive to fix and can negatively impact customer confidence in your product. Hence its very much important both for Manual and Automation tests to measure QA in right manner. Finding the Right QA Metrics for Your Team Because development and QA processes vary greatly from team to team, the measurements that matter can be different depending on the team makeup, tools and software used, customer expectations and more. As a baseline, the quality metrics your team tracks should be: 1. Measurable 2. Actionable 3. Track able over time 4. Maintained and updated regularly 5. Tied to business goals With these parameters in mind, there are a few key numbers that every team should consider including in their QA metrics. These are: 1. Test Coverage This metric determines the number and spread of tests across the code base. This provides insight into where your resources are being used. It helps you understand which areas of application under tested and also determine where your test team should spend more efforts. 2. Flaky Tests Broken and unreliable tests that are not providing useful quality feedback termed Flaky tests. Flaky tests not only waste time and resources, but also reduce overall confidence. Tests that Pass or fail intermittently fall under flaky tests and must be fixed as early as possible. 3. Time to Test Amount of time it takes to run and report results for a set of tests. This helps teams understand how to make testing cycles as efficient as possible. It can be measured how long it takes to run smoke and regression tests after a new build. How long it takes to run new feature tests. 4. Time to Fix Amount of time between when something breaks and when it is fixed giving insight into QA and Developer communication It can be measure by checking source of reported issues from internal internal testing and customers. The process that follows while fixing any bug 5. Escaped Defects The number of defects that reach customers. This is one of most direct measures of QA success. It can measure from number of defects that reach production, Percentage of affected customers, Impact on affected customers, Product area and Time to fix. 6. Net Promoter Score Helps in assessing customer satisfaction and product performance. Overall product performance under different environments along with feedback from customers helps in determining Net Promoter Score of your product. Apply all the above quality metrics in your project and measure how effective your product quality going to be. #NGAutomation Building better QA for tomorrow

More
Art of Intelligent Automation

Art of Intelligent Automation

Reshaping the future of work with robots As Business Applications become complex, so the testing going to be. With traditional test practices its next to impossible to maintain quality of business applications in long run. Keeping same in mind, now Companies like to introduce automation as soon as development gets started. This approach not only help in maintaining better quality of business applications but also result in significant cost savings in terms of time and effort. And there is no better solution other than Intelligent Automation. This article we will share some be best practices which Next Generation Automation team proposed to the clients and done some successful Proof of Concept in recent past. Practice 1: Structured Data Interaction (SDI) These are traditional systems where the integration is through exchange of information that is well structured. Examples include integration of systems through relational data base management systems ( RDBMS) , data transformation tools, and application programming interfaces ( APIs) and web services. More intelligently we streamline structured data interaction using automation among both homogeneous and heterogeneous systems, better the flow of information and resulting better product quality. Practice 2: Robotic Process Automation It involves automation of standardized and rules driven system-based activities using scripts and other methods to support efficient business processes. It is suitable in scenarios where it is too expensive or inefficient for humans to execute a task or a process. Very helpful for tasks that involve repetition with out change. Use Case for Testing can be All failures tests automatically converted into test defects and submitted to Defect tracking tools like Jira for defect analysis and defect fix. Practice 3: Machine Learning It involves systems that learn through handling variations that are not anticipated upfront. These systems get trained on the go by assimilating leanings from the data and decisions, and may make simple predictions or classifications backed by algorithms. A simple case could be a scenario where a well-defined identifier needs to be mapped to more descriptive/free form text, e.g., mapping of a vendor name that appears on an invoice to the vendor ID in the system. The vendor name may appear in various forms. Machine Learning results significance reduction in test effort if implemented rightfully in your application test cycles. Practice 4: Natural Language Processing NLP uses statistical methods and learning algorithms to analyze text and unstructured information to understand the meaning, sentiment and intent. A sample use case could be the customer service function, where a customer raises a support ticket in form of free text, which is analyzed to understand and determine the levels of urgency, sentiment or frustration and then determine the ticket severity/priority. Other scenario can be understanding system requirements and generate test cases. Or check whether system requirements written correctly as per customer Request for Information (RFI) document. Practice 5: Natural Language Generation It is a technology that helps generate text as we speak or write from structured information such as fields and numerals. It is largely applied where sections of financial analysis reports and insights are generated, e.g., numbers reflecting a company’s performance. During Business meetings it can be applied to convert client expectations into meaningful business requirements. Practice 6: Chat bots and virtual agents These are systems that can interpret voice/text in free form (chat) to simply respond with standard predefined answers. A simple example is the customer service function where a chatbot could respond to queries. These chat bots can continuously learn and build vocabulary to interpret unstructured information being directed to them. For Testing use case can be, Product owner write to chat bot show me last 5 release test results or show me defect density for last release or show me average execution time per test script or show me number of defects generated from automation scripts. Practice 7: AI Decision Systems These are systems that employ an array of technologies, algorithms and models to solve complex and inter-related problems to make decisions. These may be driven by deep learning systems and cognitive capabilities to recognize patterns, and apply statistical models and algorithms to make choices and decisions. These could also potentially address multiple decision points, e.g., determining the demand for certain products for a geography/location based on weather forecasts, thereby helping decide the inventory to be housed in a store and determine the best possible fulfillment center location and route to be chosen for the fulfillment. Use case for Testing can be Building auto generated Object repository and apply AI algorithms to determine whether your application holds valid automation ids that going to help automate your application. Many scenarios developers forget to add unique ids to all application components in order to save development time but it makes automation fragile. Such scenarios can be looked at if AI Decision systems in place at very start of Development Life Cycle. --- #NGAutomation Building better QA for tomorrow

More
Self Healing Test Automation Best Practices

Self Healing Test Automation Best Practices

Self Healing Automation Next Big theme for Automation after Selenium Success At Next Generation Automation, Team always look forward next 5 years to understand where demand is coming for Automation and Self healing test automation is one such area which stands strong compare to other themes. Today when Next Generation Automation team talk to clients having outsourcing business more than 10 Million + USD, every client says my automation stack very good but when my development team release more complex features automation stands weak and resulting huge effort of my QAs in maintaining the automation stack and in some scenarios I found test scripts no longer applicable as entire business work flow gets changed due to complex business environment where we need to operate to satisfy our customer demands. And Recently when Next Generation Automation Team present deck how Self healing automation can be solution for client complex testing needs, every client got excited and agreed to start POC by Next Generation Automation Academy experts. In this article, We like to share some of best practices that can be used for Self healing Automation and help testing vendors to chase new area of automation where still lot of potential available for growth in next 5 years. Lets start first understand what is Self Heal Automation? We start with real life Scenario and take an example of human body created by almighty God. As soon any human get injured, self healing mechanism automatically gets trigger and start working to heal wounds. Depending on intensity of wounds, this healing may take some time longer than anticipated and medical procedure also plays important role in healing quickly than natural process of heal. If human body don't have feature of self healing, it will be very difficult for human body to recover from any accidents or diseases. Same way today's automation also needs self healing. Most of automation frameworks which exist currently in market more towards building some what similar to human body as analogy but very few frameworks enable recovery scenarios in form of healing that determine what needs to be done if there is significant change in application flows. And all this makes scripts start failing though application functional right. When we introduce self healing mechanism in automation stack, scripts adapt as per change in business work flows. And this result in less maintenance effort by QA and also more stable test execution and also helps discover more application defects. 3 Principles to know before you apply Self Healing Automation in your projects: Get to know your application. This is the most important principle. It's easy to dive in and start automating self-healing mechanisms, but you'll waste time if you don't understand the production problems your application is having before you begin. First, set up automated alerts to see which error scenarios are most common. Prevention is better than cure. Sure, it's nice to be able to recover from error test scenarios automatically, but it's better to prevent the error test scenarios wherever possible. Take a holistic look at test problems you detect so that you can identify and fix the root causes where possible. This can be done with more test reviews, fixing test scripts maximum for any changes in application. Happier Automation Teams A primary goal of self-healing systems should be happier automation teams. Self-healing systems bring not only benefits to developers and operations. But an often-overlooked benefit is that an test script that fixes itself reduces the support burden on the automation team. Less rote and menial work means happier automation engineers. How to pattern your self-healing test automation 1. Error handling The first pattern to look at is error handling. The idea is simple enough: spot an error and adjust how the system responds accordingly. You've probably been using this pattern for a long time. A familiar example is catching an exception and returning a test failure. You can use this same pattern to implement something a bit more sophisticated More practical scenario can be as soon as error got occured and exception handling code start execute apply different behaviours for different error scenarios like if error due to Object Repository scan the application and buld Object repository again using web scalping and find if new Object repository can solve the error or not. 2. Manage the flow of information The second pattern concerns managing the flow of test information, which is also probably something you're already doing. For example, when an exception is thrown in your test script, you probably catch it and log useful information to your test logs before allowing the exception to propagate across different reports and systems. More effectively you let your error conditions flows in your testing life cycle, more effectively self healing algorithms can be applied. 3. Adjust problematic data Major test scripts fail as data no longer support the test flows and trigger false alarms. Data self healing mechanisms also need to be applied other than fixing test scripts alone. Example can be as soon as data alarm gets generated by the test script look for ways to refresh test data from different up stream channels feeding data into your application and make sure every column data gets checked with set of data checks before feeding same data to test your application. 4. Retry As applications move towards micro services architecture, any module gets interacted with multiple modules same time and synchronization between modules sometimes not at required levels which makes your test scripts to start failing. Example you perform payment at your web page but payment gateway takes time which sometimes very huge and sometimes very less to respond for successful payment id and your test script gets failed. As retry mechanism gets checked into your test scripts it becomes easier to let such business scenarios gets executed by re run your test scripts multiple times. Nutshell, Keep it simple with automation Self-healing systems are not about machine learning or artificial intelligence, but about understanding your systems' frequent error scenarios and automating simple recovery steps. By keeping these four simple patterns in mind, you'll be able to find creative ways to make your test scripts more robust by automating solutions to those cumbersome application issues that keep cropping up. #NGAutomation Building better QA for tomorrow

More
Increase your Shortlisting with Resume Optimization Strategies

Increase your Shortlisting with Resume Optimization Strategies

As any job seeker looks to find job, he or she majorly find 2 ways to share his resume: 1. Through Application Tracking System 2. Through Recruiters In both modes you need to take care few areas to make sure your resume get maximum attention. In this article, We will share some of best strategies that can be applied to get maximum attention and increase chances for your resume shortlisting. Through Application Tracking System One way companies are streamlining the hiring process is through the use of Applicant Tracking Systems, or ATS. ATS are computer programs that scan job applications for specific criteria so that only applications that meet certain parameters are passed on to the next stage. While ATS programs were first employed by enterprise companies who received thousands upon thousands of applications for each role, the rise of SaaS apps has made ATS more accessible. Combine that with a tough job market where job ads are receiving more applications than ever before, the ATS isn't going anywhere anytime soon. The best way to optimize your resume for ATS is to focus on including relevant, specific information. ATS likes resume which are well written covering maximum information in bullets and all information shown in small paragaphs. How ATS works? It breaks down your resume into small paragraphs and for every paragraph find occurrence of words as defined by recruiter. Then it checks the occurrence of same keyword across multiple sections of your resume to make sure you have right skills for given job. Example: Someone mentioned expert in Selenium under Introduction Section, than ATS System will look for Selenium keyword along with other keywords like Selenium based Framework Development in Experience section as well and accordingly determine whether your resume holds skill set for Selenium or not. Since the advent of ATS, it's become common for job seekers to try and stuff as many keywords into their resume as possible to increase their chances of getting past filters. This is a double-edged sword, however, as a resume optimized to pass an arbitrary computer test isn't necessarily going to be as well received once it hits the desk of a human hiring manager. A resume rammed with meaningless buzzwords rather than specific, concise information will fail to impress someone looking to get a better picture of you as a candidate. So chances are you might pass the ATS System but get failed when screening gets done by Hiring Manager. So be careful while submitting your application to any ATS System. All online job applications submitted directly at employer website falls under ATS Category. Through Recruiters Here are some of best practices for optimizing your resume for recruiters. 1. Use keywords – but don't use extensively Recruiters use a variety of courses to find great candidates. The bulk of potential candidates, however, will be found either through LinkedIn or through job boards. Job boards such as Career Builder, Monster, Indeed and Dice that allow you to upload your resumes let professional recruiters search through job seeker profiles. Usually, they'll search using specific keywords for any given requirement. Keywords help job seeker appear in search results and same time help recruiter to find right candidate matching skills of available requirement. This is why it's crucial to keep your resume updated and include relevant information. 2. Keep it bang on target It's generally good advice to keep your resume short and impactful, whether you're optimizing for recruiters, or hiring managers directly. Recruiters look at a lot of resumes every day, and unlike their ATS counterparts, they're not robots. If you want to get their interest, you need to make it as fast and as easy as possible for them to get the information they need. Try and keep your resume to a couple of pages; no unnecessarily large fonts, and no jumbling. Some people would recommend you keep your resume to a single page, but if you're an IT professional with a lot of technically detailed experience, don't worry about it running to a few more say up to 5 Pages; provided the information is relevant to the type of position you're looking for. Any other information that's nice but not essential—volunteer work, hobbies, internships—is what your LinkedIn profile is for. 3. Namedrop technologies and be specific When you're working in tech, products and versions are important. Most recruiters will search by the technology area they're recruiting in before anything else, so be precise. It might seem contrary to keeping things brief, but recruiters need to know what technologies you have experience with so they can see if you fit the bill. Example if you have worked on Selenium mention which versions of Selenium you have actually worked. 4. Don't abbreviate yourself out of searches Again, you want your resume to be found in searches, so don't lose out on any opportunities when naming technologies. If you're a wizard with Quick Test Professional, type the Quick Test Professional and not just QTP. Tech-savvy recruiters will no doubt know what QTP means, but they might not necessarily search using the abbreviation. 5. Format for readability Use clear headings to lay out your resume: layout is important. A resume should be well formatted with clear sections, such as Key Skills, Technologies, Work History/Project Experience, Education/Qualifications, Personal Interests. 6. Who are you? You might think we wouldn't have to say this, but having used job boards ourselves, it bears repeating. Don't forget to include your name and your contact details. In this day and age, no one needs your full address at the job-seeking stage, but be sure to include your zip code, an accurate phone number, and a current email address. 7. Spellcheck Recruiters will immediately be less inclined to contact a candidate if their work history is unclear, or if there are obvious spelling mistakes, especially for technologies and languages the candidate purports to know well. Like we said above, having the right keywords in your resume is crucial, so don't write off their worth with poor spelling. Recruiters will be armed and ready with the old CTRL+F trick, so make it as easy as possible for them to pinpoint what they're looking for. In short, the key to creating an optimized, searchable resume is to offer pertinent, specific information that shows off your value . #NGAutomation Building better QA for tomorrow

More
Analyzing and Visualizing Test Execution Data with Power BI

Analyzing and Visualizing Test Execution Data with Power BI

As testing becomes more complex and lengthy its very important every organisation must develop AI Enabled testing dashboards that determine health of business applications in terms of Stability, Performance, Ease of Use. Power BI from Microsoft team one such solution which helps enterprises to add more value to the test data which gets generated for every test releases either in DEV, QA or PRODUCTION environments. Power BI Solutions helps Enterprises achieve following tasks with respect to test data Connect, import, shape, and transform test data for business intelligence (BI) Visualize data, generate reports, and schedule automated refresh of test reports as more test cycles gets executed Create and share test dashboards based on reports in Power BI desktop and Excel. Use natural language queries Create real-time dashboards based on test execution logs and test reports generation Before we discuss how above mentioned goals can be achieve with Power BI Solution, Let's understand first features of Power BI platform. What is Power BI? Power BI is the collective name for an assortment of cloud-based apps and services that help organizations collate, manage, and analyze data from a variety of sources, through a user-friendly interface. Power BI pulls data together and processes it, turning it into intelligible insights, often using visually compelling and easy-to-process charts and graphs. This allows users to generate and share clear and useful snapshots of what's happening in their business. Power BI connects to a range of data sources, from basic Excel spreadsheets to databases, and both cloud-based and on-premise apps. Power BI is something of an umbrella term and can refer to either a Windows desktop application called Power BI Desktop, an online SaaS (Software as a Service) service called Power BI Service, or mobile Power BI apps available on Windows phones and tablets, as well as for iOS and Android devices. Power BI is built on the foundation of Microsoft Excel, and as such, the learning curve from Excel to Power BI is not that steep; anyone who can use Excel can use Power BI, but the latter is far more powerful than its spreadsheet counterpart. What does Power BI actually do for testing? Microsoft Power BI is used to generate test reports and surface insights based on a company's test data. Power BI can connect to a wide range of test data sets, and "tidies up" the info it's fed so that it can be better digested and understood. The reports and visuals generated from this test data can then be shared with other users like Developers, Product Owners, Directors and CTOs to take informed business decisions. Power BI helps users see not only what's happened in the past and what's happening in the present, but also what might happen in the future. And this predictions about future makes Power BI stands stronger compare to other products. Power BI is infused with machine learning capabilities, meaning it can spot patterns in test data and use those patterns to make informed predictions and run "what if" scenarios. These estimates allow testers to generate testing forecasts, and prepare themselves to meet future testing demands and other key metrics. Example: Machine Learning engine of Power BI takes test data from last 1000 test executions span across 50 Business Applications. Based on its powerful machine learning models it transform raw test data into intelligent data and create test visualizations that tells which areas of applications need more test efforts compare to other areas of application by analyzing defects data for every test release and for every business application. Here are some of the key benefits of using Power BI in testing life cycle: Businesses can input huge quantities of test data into Power BI that many other platforms would struggle to process Built-in machine learning features can analyze test data and help users spot valuable trends and make educated test predictions Test information can be visualized using powerful templates to allow businesses to better make sense of their test data Power BI is cloud-based, so users get cutting edge intelligence capabilities and powerful algorithms that are updated regularly and helps in better predictions Powerful personalization capabilities allow users to create test dashboards so they can access the test data they need quickly Alerts can be set up on Test KPIs to keep users up to date important metrics and measurements. Power BI has an intuitive interface that makes it far more user-friendly and easy to navigate then complex spreadsheets The platform integrates with other popular business management tools like SharePoint, Office 365 as well as other non-Microsoft products like Spark, Hadoop, Google Analytics, SAP and Salesforce With data security a massive talking point for modern businesses, Power BI ensures data is safe, offering granular controls on accessibility both internally and externally What components make up Power BI? The Power BI product is made up of a number of apps, each with their own features and uses. These include: Power Query : a data connection tool that lets you transform, combine, and enhance test data from several sources like excels, word documents, pdfs, text logs, data bases like MS SQL, MYSQL, ORACLE. Power Pivot : a data modeling tool for creating test data models Power View: a data visualization tool that generates interactive charts, graphs, maps, and other visuals once test data models gets generated Power Map: another visualization tool for creating immersive 3D visuals of test KPIs like Defect Density, Test Execution Time, Test Productivity, Test Coverage Power Q&A: a question and answer engine that lets you ask questions about your test data in plain language What versions of Power BI are available? There are a handful of versions of Power BI to choose from, depending on your budget, your needs, and how you want to deploy it. These versions range from light use to comprehensive features, free to premium, so users can select the one that best meets their requirements. You can opt for a Windows desktop application called Power BI Desktop, an online SaaS (Software as a Service) service called the Power BI service, a mobile Power BI app available on iOS and Android phones and tablets, or an on-premise version known as Power BI Report Server. Here's a quick overview of the different versions, before we drill down further into each one: Power BI Desktop — Free, intended for small to midsize businesses Power BI Service a) Power BI Pro — Paid per-user license, needed to get access to advanced features and the ability to share reports b) Power BI Premium — Licenses by scale, intended for large businesses and enterprises Power BI Mobile — Device-based app for phones and tables Power BI Embedded — A white-label version of Power BI which Independent Software Vendors can embed in their own apps, rather than build their own analytical features Power BI Report Server — An on-premise version of the Power BI Desktop app for businesses that need to keep their data and reports on their own servers Lets understand now more about different products offered by Micro soft for BI space that help enterprises to build powerful Test Dashboards. Any product can be chosen as per business case and budget constraints. Power BI Desktop: Also known as Power BI Free, Power BI Desktop is a free desktop application you can install right on your own computer. Power BI Desktop works cohesively with the Power BI service by providing advanced data exploration, shaping, modeling, and report creation with highly interactive visualizations. You can save your work to a file, and publish your data and reports right to your Power BI site to share with others. Power BI Free is included in all Office 365 Plans, and you can sign up for Power BI Free any time you like. Desktop allows you to connect to data sources to Power BI, with no limits or restrictions other than the total amount of data you can feed in, and how much you can upload at a time. Desktop users get 10GB of total storage in the Power BI cloud, and can upload data 1GB at a time. Desktop will cleanse and organize data, and you can create as many visualizations as you want; Desktop gives you full access to Power BI's library of visualization templates. You can also export data and reports to Excel. Using Power BI Desktop, you can refresh your reports up to eight times every day, either on the hour, or the half-hour. The "catch" with Power BI Desktop is that you can't share anything with your peers. You can publish reports to the web, but these reports will then be made public, which isn't ideal when you're dealing with proprietary business data. For beginners in data science space, Power BI Desktop is best application to start. Power BI Service Power BI Service (usually known simply as Power BI) is the full version of Power BI, and is hosted on Azure, Microsoft's cloud platform. There are two ways to license Power BI Service: Power BI Pro and Power BI Premium. Power BI Pro Power BI Pro isn't hugely different to Power BI Desktop. They have the same visualization options, the same limits on storage and file upload size, and the same report refresh allowance. The key difference is that with Pro, you can share your data, reports, and dashboards with others privately—provided they also have a Power BI Pro license. There are a few other extras that come with the Pro license too. For example, with Pro you can create app work spaces, where you can put together collections of related dashboards and reports and create easily accessible content packs. Power BI Premium Power BI Premium is an alternative way to get access to Power BI. Rather than purchasing licenses for individual users like you would with Power BI Pro, with Premium, you pay for the amount of space and processing capacity you want to carve out for your business. There are six capacity models, each one with varying amounts of memory so users can choose the amount they need to run their Power BI platform. Premium is intended for enterprise-level businesses that generate huge amounts of data, and require extensive access to the app. Shelling out for Premium means you get a dedicated portion of capacity to process your BI workloads, with all the necessary infrastructure supplied and supported by Microsoft. Premium isn't a license as such; instead, you're paying for exclusive use of a predetermined amount of computing power. For those users who need to create and publish reports, share their dashboards, and collaborate with other users in app workspaces, a Power BI license is required in addition to Power BI Premium. For those who just need to access and consume Power BI content, though, no additional license is required; Power BI Premium will cover read-only use. There are a few other features exclusive to Premium too, such as the ability to store BI assets on-premises using Power BI Report Server (more on Report Server later), up to 100 TB of data storage, and a 50GB cap on dataset size. Power BI Report Server Power BI Report Server is an on-premises server product that ships with Power BI Premium. Report Server allows users to take advantage of Power BI on-premise. For some businesses, uploading their data to the cloud isn't an option. This could be because there are data regulation laws applying to their particular industry, or maybe they don't have the necessary infrastructure or connectivity where they are to be able to reliably access SaaS platforms. Power BI Report Server can be deployed behind a firewall, and is compatible with Power BI in the cloud so that businesses have the freedom to move a cloud-based version of Power BI when they're ready. Report Server packs has similar functionality to Power BI Service, though it's largely focused on report generation, and there are a number of key features that are exclusive to its cloud-based sibling. Report Server users must use the Power BI Desktop app, and cannot work in a web browser. They also don't get access to dashboards, real-time streaming, content packs, app workspaces, natural language queries, the ability to analyze data in Excel, email subscriptions, or data alerts. Power BI Embedded Power BI Embedded allows Independent Software Vendors (ISVs) and developers to embed the functionality and capabilities of Power BI into their own apps on a pay-as-you-go, "white-label" basis. So, rather than building their own reporting features, they can simply add Power BI into their products, and Power BI will take care of all the reporting and data analysis needed. End users of the app won't even know that the app's analytics are powered by Power BI; it will just look like part of the app. Power BI Mobile Power BI Mobile is (unsurprisingly) Power BI's native mobile app and is available for Windows, iOS, and Android devices. Through the app, users can get secure access to real-time dashboards and reports, whether that data is stored in the cloud, or on-premise in SQL Server. Mobile users can also create and share reports, submit natural language queries, and set up push notifications to get personal data alerts sent to their device. Now lets look at Power BI's main competitors that can also help enterprises building intelligent dashboards: Google Data Studio Qlik Sense Amazon QuickSight IBM Cognos Elasticsearch SAS Visual Analytics Jet Reports TIBCO Spotfire MicroStrategy Analytics #NGAutomation Building better QA for tomorrow

More
How Channel Routing shapes your IT Career in long run?

How Channel Routing shapes your IT Career in long run?

Everyone want to grow in IT but there are very few people who reach the top and rest either stuck in between or take early breaks from IT Career. In this article we will help the readers to understand how channel routing especially during early phases of your career can determine your rest phase of your career. As per 20:80 rule, if anyone consider average IT Career 40 years and if someone take right steps during initial 8 years he or she able to shape rest 32 years of Career at right track. Hence Channel Routing plays very important role to let you achieve path of success. What is Channel Routing? Channel routing is methodology which once applied deliver excellent results for your set goals. It considers N number of routes while determine best channel to reach your set goal and once applied it select best channel from all the available channels which anyone created earlier combining multiple routes. Lets Understand same with Real World Example: Mr. Chandra travel his office every day via 1 channel consisting of number of small routes in between. Initially Mr. Chandra was very happy as his selected channel let him reach office with out any extra time. But 1 monsoon impacted his life like anything. 1 route thats part of his channel developed deep potholes and around 4 KM route broken from 20 KM route which he used to travel daily to reach his office. This made Mr. Chandra forced to spend extra 30 minutes everyday on road and same time he had to bear cost of more fuel and more wear and tear of his car. Mr. Chandra got very upset because of this and since he did not have any other option so he continued follow same channel every day. One day traffic was too bad that it makes Mr. Chandra to reached office 2 Hours compare to his average travel time of 35 minutes to reached office. Mr. Chandra started crying reaching office and started asking himself why I punished so hard when I had no fault. On closer analysis it looks Mr. Chandra never take advantage of Channel routing methodology and sticking follow 1 channel with predefined routes only. Than 1 day Mr. Chandra suddenly got idea let me explore available routes reaching my office. But how to discover different routes its not easy task to discover best route as he is living in Metro city. Than one of his friend suggested why not you take help of Google Maps and check if any new routes available from your home to office. Mr. Chandra got excited hearing this and said no harm in trying his friend advice. He was already following most horrible route what worst more can be done other than this. Once Mr. Chandra open Google Maps and enter his home as starting point and office as end point he surprised to see 3 months back Road Transport Team has developed 1 more route that helps him reaching his office by saving 3 KMS and same time he now ride his car on new road with out any path roles. And Mr. Chandra next day turn ON Google Maps and follow the route as suggested by Google Maps. He avoid any distractions in between and to his surprise his 50 minutes travel time reduce to 25 minutes time now and this time even less than what he used to spend 1 year back. Here Google Maps act as Mentor for him and not only show him right path but also let him travel with out any distractions and make his life lot more easier. Same way IT Career works for any Engineer. There are N number of channels always can be made combining multiple routes but which one to follow and how to push your career on fast track only handful engineers able to do it. At Next Generation Automation, Recently Team launched new Program Mentorship that helps QA understand which areas can be choose and which strategies can apply to help QAs part of major MNCs spread across India, US, Canada, Europe and rest parts of world. Program URL below must have a look once and if find promising enroll yourself for your better QA Career. Mentorship Program Click me to know more #NGAutomation Building better QA for tomorrow

More
How to handle getting fired?

How to handle getting fired?

Getting fired, unfortunately, can happen to the best of us. Regardless of the circumstances, what should you do if you've been fired? Team Next Generation Automation sharing some of best strategies that going to help surely: It's natural to feel angry, sad, and frustrated; just make sure to restrict negative comment and complaints to your closest friends and family. That said, there are ways you can address this issue and put it in at least a neutral, if not a positive, light. 1. Life all about move on and learn from failures As hard as it may be, you need to get over getting fired and move on. You need to be able to convince employers that, regardless of what happened in the past, you are a strong candidate for a new position and can do the job. Focusing on the skills and experience you have, rather than the firing, will help sell you to the employer and will help you get the job. 2. Spend time in upgrade skills If you find there is gap between what market demands at your experience level and what skills right now you hold, don't hesitate in start putting efforts in your learning. More you put efforts in your skills upgrade especially technical more employers show liking for you. So instead of having negative thoughts and think about your past job look at new future. 3. Set Your Preferred Work Location Many times people do this mistake, they make them self open for relocating any part of country. But its never great decision as everyone always enjoy some part of country and if you move other part you might not able to enjoy your job well. So have patience and first search with in your surroundings only. 4. Set your Salary Never compromise for more than 30 % cut from your last drawn salary Employers always want to take advantage of this situation and they might offer less than even last drawn salary of your considering you have no job at moment, But tell strongly during HR Round less than this salary will not let you consider this job offer. Remember your future salaries depends on current salary always when you look for job change while at your job. 5. Meditate and Yoga Meditation and Yoga creates wonder if you are with out job. It keeps your mind calm and generate positive thoughts for rest day. 6. Talk with your friends who are doing well in their professional life Don't hesitate in look back your past connections and if you have made good reputation with some of them don't hesitate in talking to them and inviting them for cup of coffee with you. Networking always helpful especially in difficult times. Remember this always 7. Paste Positive Thoughts in your Living room Keep your Living room more bright during this time and paste positive thoughts on walls and look at thoughts when ever you feel down. You surely get negative thoughts at some point in your whole day but more your push your negative thoughts more you feel better 8. Last very important Don't be in arguments with your family members for small reasons Family always play role of motivation for you during your difficult times so look at them as your friend and for any reason not let your relationship with your family members on hard side. Hope this strategies going to help community a lot. #NGAutomation Building better QA for tomorrow

More
Next Generation Automation Whats App Group Series Launch

Next Generation Automation Whats App Group Series Launch

Silent features of Whats App Group Series from Next Generation Automation: 1. Group will be in broadcast mode by default 2. Helps sharing Next Generation Automation Blogs with group members 3. Helps sharing Next Generation Automation Services with group members Copy below URL and launch in your chrome browser to join the group: GROUP 1: COMPLETED & SET TO BROADCAST MODE. GROUP 2 : In Progress, URL Below: https://chat.whatsapp.com/KQoObOeY95w7zTJudBWZAJ Some QAs suggested to launch telegram channel, but Whats App because of more ease to usage by everyone will help us to continue it as Next Generation Automation broadcasting feed other than Linked In. Kindly join only 1 group and if joined let others to join group which is in progress #NGAutomation Building better QA for tomorrow

More
Learn Framework Design Best Practices

Learn Framework Design Best Practices

Here are 23 best framework design practices which can be bring in action by any automation engineer while designing test automation framework for his assigned projects: 1. Configurability Configurable items like application, url, versions, paths, ip’s, etc. of a script should be kept in an external file. Once deployed to a system, no manual configuration changes should be required and scripts should automatically configure the required settings. 2. Setup Information Any kind of setup should be done by the @Before method, or some similar annotations. So the framework being used will know these actions need to be executed before performing the automated tests. Information examples: type of browser, which URL should be opened, which timeout should be respected, should the browser be maximized or not and so on. 3. Test Folder and Source Folder All Test classes should be saved inside a folder called “test” and it MUST be a kind of mirror of the source folder, meaning it will follow the same structure of the main project folder, but it will only contain tests. For example: Main source folder = Project A > Sanity > src > main > java Main test folder = Project A > Sanity > src > test > java 4. Maintain Object identification repository Most common issues faced during automation are object identification changes. Framework should be able to patch such changes easily. This can be achieved by storing all object identification settings at a shared location in the form of external XML file, excel file, database or automation proprietary format. 5. Status monitoring using debug logs and Exception Handling A framework should allow monitoring of the execution status in real time and should be capable of sending alerts in case of failure using exception handling. This ensures quick turnaround time in event of a failure. 6. Reporting The framework should support html/Excel/Pdf report formats with details about test pass/fail for each test case/suite/test run. 7. Test Scripts and Test Data Test scripts and test data should always be separated from each other. Test data input can be in various forms like XML, Json, Excel, text files, database inputs, hash maps etc. 8. Libraries A library should contain all reusable components and external connections such as databases, generic functions, application functions etc. Tests should be exposed only to the implemented libraries and tests should be performed by invoking these libraries 9. Performance impacts A framework should also consider the performance impacts of the implementation. Techniques like compiling all code into single library / dll while execution, no hard sleeps etc. should be used to improve performance whenever possible. 10. Script/Framework Versioning Versions of framework/scripts should be maintained either in a local repository or versioning tools TFS, which would help in easy monitoring of changes to the software code. 11. Modular, re-usable and maintainable test code and data Test code should always be modular so that it can be re-used. Also modularity makes sure that whenever there are changes in the existing features or new features need to be added, minimum effort is required by the engineers. E.g. A reusable library can be created, which would help in enhancing application features with minimal effort. 12. Avoid Hard Coding values Always check for: Should this be a parameterized value for the method/function/step using it? Should this be passed into the test as an external input (such as from a config file or the command line)? 13. Documentation for developed common utlitity functions / APIS Documentation is vital for good testing and good maintenance. When a test fails, the doc it provides (both in the logs it prints and in its very own code) significantly assist triage. 14. Poor Code Placement Automation projects tend to grow fast. Along with new tests, new shared code like page objects and data models are added all the time. Maintaining a good, organized structure is necessary for project scalability and teamwork. Test cases should be organized by feature area. Common code should be abstracted from test cases and put into shared libraries. Framework-level code for things like inputs and logging should be separated from test-level code. If code is put in the wrong place, it could be difficult to find or reuse. It could also create a dependency nightmare. For example, non-web tests should not have a dependency on Selenium WebDriver. Make sure new code is put in the right place. 15. Avoid Duplication Many testing operations are inherently repetitive. Engineers sometimes just copy-paste code blocks, rather than seek existing methods or add new helpers, to save development time. Plus, it can be difficult to find reusable parts that meet immediate needs in a large code base. 16. Uniform Syntax Keep uniform coding syntax while writing variables, commong functions, test case methods 17. Batch Execution Any new script development make sure all previous scripts get executed along with new scripts 18. Locator Strategies Locators should be relative and not absolute. Use locator axis where ever needed to make locators less dependent on change in Application design. Some pointers for same below: Id / Name: these parameters are easy, efficient, increase performance and readability. XPath: although slow in some browsers, sometimes it’s the only way to get an object. It is also a good option if you need to ensure that some object must appear after another, like div//a; Link Text or <a>: efficient, good performance, but take care if the text changes too often. Dynamic Elements / AJAX: these elements are generated by the server and, normally, the id/name changes each time the page is opened, so the best way is use the XPATH to map them. 19. Fluent APIs Use Fluent API calling approach while writing Test Scripts 20. Multi Platform Support Framework Core must be written to allow addition of new platforms: Mobile, Desktop and multiple browsers Chrome, IE, Firefox 21. Environment Configuration Environment related dependencies must be handled in annotations other than Test Method and should not be bind with 1 test case method 22. Making Your Own Set of Methods This is often used to speed up the code and easily reuse repeatable code pieces, such as: click on this and wait for that. So, just create a method that will click on something and wait for another thing and call this method every time you need this. The example above is frequently called “click and wait actions” or the “clickAndWait method”. You can improve your Wrapping Selenium calls including many other commands. For example, adding a verification to check if the element is still available before clicking on it and then, wait the page. But be careful, to not include too many Selenium calls at the same methods. 23. Assert vs. Verify (Using Junit or TestNG) Asserts: will break the test and give an immediate response, as soon as the test fails and will not perform any other action. Verify: will continuous your tests, executing the other commands, even with a fail result. Deciding which one to use depends on the case. Use Asserts for critical functionality checks and verify for rest others #NGAutomation Building better QA for tomorrow

More
How to Convert Interviews into Job Offers?

How to Convert Interviews into Job Offers?

Giving interviews stressful for every Job Seeker but with these effective tips any job seeker can convert his interview into Job offer if applied gracefully during interview process. Here are tips that will help job seekers to convert interviews into successful job offers: Tip 1. Conduct Basic Interview Research To prepare for an interview, find out as much as you can beforehand. Call the person who scheduled your interview and ask: Who will you be talking to? Will you meet the manager you'd work for, or will you just talk to HR? What are the interviewer's expectations? What's the dress code? Dress better than suggested. Most times, it's best to wear a professional suit. Get directions to the office. Plan to leave early. Keep a phone number to call if you get stuck on the bus or in traffic. If you arrive late and stressed, the interview will not go well. If you don't have a detailed job description, ask for one and read it atleast 10 times to understand kind of role you are going to be interviewed. Tip 2: Learn About the Company Online Do some fast Web research, which will give you something to talk about in addition to the job description. Go to the employer's Web site, or search the Web for information such as: How big is the company in terms of annual sales or employees? What does the company say about its products or services? What recent news (such as a new product, a press release, an interview with the CEO) can you discuss? If the company is public, its press releases or AGM will tell you a lot. Think of Some Stories This one very important and must be planned well. Be ready to answer typical interview questions with a story about yourself. To prepare, write down and memorize three achievement stories. Tell about times you've really felt proud of an achievement at your last work. These stories demonstrate all those hard-to-measure qualities like judgment, initiative, teamwork or leadership. Wherever possible, quantify what you've done, e.g., "increased sales by 20 percent," "cut customer call waiting time in half," "streamlined delivery so that most customers had their job done in two days." Tip 3: Review your notes if going for technical interviews Technical interviews most difficult to pass among all job interviews as it requires you to be on top of all technical which you might have worked earlier but because of lack of review you might get forget to answer well during interview Tip 4: Take deep breadth and smile but never laugh during interviews Never look like very serious personality during interview. Smile in between interview questions and take deep breadths and small pause when you answer the questions. This gives impression to interviewer that you like to be in hold of your situations Tip 5: Tell your expectations during interview whenever you done answer to any question asked This one tricky but it finally land you in job that you look for. Example if your expectations are managerial role and interviewer stress more on individual contributor role tell him I majorly look for managerial roles during my next profile. And vice versa if you look for more technical role and interviewer ask more about managerial role tell him you are more inclined towards technical role. This 90% cases will help you to get job matching your expectations. Next Generation Automation team wish you good luck for your next job search. #NGAutomation Building better QA for tomorrow

More
Learn Block Chain Testing

Learn Block Chain Testing

What is Block Chain? A blockchain is, in the simplest of terms, a time-stamped series of immutable record of data that is managed by cluster of computers not owned by any single entity. Each of these blocks of data (i.e. block) are secured and bound to each other using cryptographic principles (i.e. chain). So, what is so special about it? The blockchain network has no central authority — it is the very definition of a democratized system. Since it is a shared and immutable ledger, the information in it is open for anyone and everyone to see. Hence, anything that is built on the blockchain is by its very nature transparent and everyone involved is accountable for their actions. More about Block Chain A blockchain carries no transaction cost. (An infrastructure cost yes, but no transaction cost.) The blockchain is a simple yet ingenious way of passing information from A to B in a fully automated and safe manner. One party to a transaction initiates the process by creating a block. This block is verified by thousands, perhaps millions of computers distributed around the net. The verified block is added to a chain, which is stored across the net, creating not just a unique record, but a unique record with a unique history. Falsifying a single record would mean falsifying the entire chain in millions of instances. That is virtually impossible. Bitcoin uses this model for monetary transactions, but it can be deployed in many others ways. Lets understand Block Chain with Ticketing Example of Indian Railways website IRCTC We buy tickets on an app or the web of IRCTC Website. The credit card company takes a cut for processing the transaction. With blockchain, not only can the railway operator save on credit card processing fees, it can move the entire ticketing process to the blockchain. The two parties in the transaction are the railway company and the passenger. The ticket is a block, which will be added to a ticket blockchain. Just as a monetary transaction on blockchain is a unique, independently verifiable and unfalsifiable record (like Bitcoin), so can your ticket be. Incidentally, the final ticket blockchain is also a record of all transactions for, say, a certain train route, or even the entire train network, comprising every ticket ever sold, every journey ever taken. But the key here is this: it’s free . Not only can the blockchain transfer and store money, but it can also replace all processes and business models which rely on charging a small fee for a transaction. Or any other transaction between two parties. It goes further. Ebooks could be fitted with blockchain code. Instead of Amazon taking a cut, and the credit card company earning money on the sale, the books would circulate in encoded form and a successful blockchain transaction would transfer money to the author and unlock the book. Transfer ALL the money to the author, not just meager royalties. The marketplace Amazon is then unnecessary. Successful iterations could even include reviews and other third-party information about the book. In the financial world the applications are more obvious and the revolutionary changes more imminent. Blockchains will change the way stock exchanges work, loans are bundled, and insurances contracted. They will eliminate bank accounts and practically all services offered by banks. Almost every financial institution will go bankrupt or be forced to change fundamentally, once the advantages of a safe ledger without transaction fees is widely understood and implemented. After all, the financial system is built on taking a small cut of your money for the privilege of facilitating a transaction. Bankers will become mere advisers, not gatekeepers of money. Stockbrokers will no longer be able to earn commissions and the buy/sell spread will disappear. How Does Blockchain Work? Consider block chain as spreadsheet containing huge number of transactions that is duplicated thousands of times across a network of computers. Then imagine that this network is designed to regularly update this spreadsheet. Information held on a blockchain exists as a shared — and continually reconciled — database. This is a way of using the network that has obvious benefits. The blockchain database isn’t stored in any single location, meaning the records it keeps are truly public and easily verifiable. No centralized version of this information exists for a hacker to corrupt. Hosted by millions of computers simultaneously, its data is accessible to anyone on the internet holding valid credentials. Lets understand now How Block Chain works with help of Google Spread sheets example “The traditional way of sharing documents with collaboration is to send a Microsoft Word document to another recipient, and ask them to make revisions to it. The problem with that scenario is that you need to wait until receiving a return copy before you can see or make other changes because you are locked out of editing it until the other person is done with it. That’s how databases work today. Two owners can’t be messing with the same record at once. That’s how even banks maintain money balances and transfers; they briefly lock access (or decrease the balance) while they make a transfer, then update the other side, then re-open access (or update again). With Google Docs (or Google Sheets), both parties have access to the same document at the same time, and the single version of that document is always visible to both of them. It is like a shared ledger, but it is a shared document. The distributed part comes into play when sharing involves a number of people. Typical Lifecycle of Block chain transaction contains multiple stages as shown in diagram below: Block Chain also known as distributed ledger technology. Below diagram explain the concept using block diagram Block chain also supports all properties of Digital Ledger technology Below diagram explain the concept using block diagram Potential Use Cases of Blockchain across various industries a) Finance Cross-border payments Share trading Commercial transactions automation b) Insurance Claims process automation Fraud detection Client onboarding c) Healthcare Patient records and medical verification Auto claim processing d) Supply Chain Inventory management Product traceability and accuracy Documents / contracts digitalization Now we have good idea about what Block Chain is all about, As QA its very important to understand what Block Chain Testing Challenges are and how your QA skills can help Companies implementing Block Chain networks gets benefited with your testing efforts. Technology Stack: Block chain technology being new and keeps on updating at regular intervals. Thus any one who tests block chain must understand underlying architecture of blocks and its creation. Performance Testing: Block chain Performance test requirements different from traditional applications. To introduce delay in block chain transactions and measure its impact across multiple nodes in network not easy task and require block chain performance test experts Security Testing: Block chains build around very secure architecture and its very important to test security aspects of any block chain based applications. Integration Testing: Block chain implementation need to be integrated with front end applications to allow clients to initiate transactions and get the results. This involves testing complete front end of application which required lot of front end UI Test experience Block Chain Test Framework typically involve 3 Stages: Understanding Platform Understanding Testing Types Test Delivery Stage 1: Understanding Architecture and Platform like Corder, Hyperledger, Ethereum, Ripple. This includes understanding: a) Transaction Processing: Validations of transaction life cycle through Apps b) Transaction State: Validations of transaction state across various life cycle events c) Vault / Wallet: Validations of transaction message verification (Signing) d) Assets on Block Chain: Validations of tokenization of assets of block chain e) Smart Contracts: Validations of business rules through smart contracts / API f) APIs Integration: Validations of interface with APIS for Access controls, payments, g) History & Audit: Validations of secure registry and transactions audit h) Consensus Mechanism: Validations of transactions for time stamping Stage 2: Understand multiple testing types that can be performed for Block Chain Networks. This includes a) Functional Testing b) Non Functional Testing c) Security Testing d) Other Testing Stage 3: Test Delivery: This includes Test Scaling and Test Excellence Test Scaling: Leverage Test Delivery Framework Adapt Block Chain test accelerators Block Chain Reusable Test Asset Development Leverage existing block chain test tools Test Excellence: Block chain knowledge management for QA Block Chain Test Best Practices Implementation Coordination between BA – QA – Dev for effective Test Delivery Use all levels of test to achieve 100% test coverage At Next Generation Automation Academy, our experts have developed in house Block chain testing framework having capability to verify any financial transactions with in Block chain network using multiple testing tools and custom programming algorithms. For more information and discussion, please send expression of interest projects@nextgenerationautomation.com. #NGAutomation Building better QA for tomorrow

More
Learn GUI Testing Using Deep Learning

Learn GUI Testing Using Deep Learning

Deep Learning (DL) is revolutionizing the face of many industries these days, such as computer vision, natural language processing, and machine translation, and it penetrates many science-driven products and technological companies. In this post, Next Generation Automation share his experiences while building Deep Learning Solutions using GUI Testing for its Clients in North America region. Current GUI testing talks more about Functional Testing focusing system external behavior or its elements and Structual Testing focusing in internal implementation like business work flows. These methods are susceptible to changes and usually involve extensive automation efforts. Cross-screen testing, like in the case of desktop Web and mobile Web or mobile App testing, accentuates these risks and costs. Testing across multiple operating systems, devices, screen resolutions, and browser versions quickly becomes a huge challenge that is difficult to execute and govern. Quality control measures, such as coverage-based or usage-based testing, address some of these uncertainties, but only to a certain degree, as it comes at a cost to the overall quality. As product developers wrap-up GUI implementation, quality engineers begin breaking down the screen to its elements, identifying locators for each UI components and writing up large pieces of their code around asserting the elements’ aspects, such as dimension, position, and color, to make sure the GUI implementation matches the design. Even a slight design change or refactoring of product code could end up failing the regression suites and may involve significant re-work for QE to fix the automaton code. Due to all this writing and maintaining test suites and scripts for multiple platforms take considerable time and effort and come at the risk of reducing the test scope. Contemporary developments in Deep Learning space unleashes efficiencies in GUI testing and in the software lifecycle, potentially. A recent proof of concept, described below, proved this approach to be realistic and practical. Deep Learning Technology Deep Learning simulates the human way of finding errors or anomalies. Humans are driven by past experience and conditioning to make decisions. Machines with the proper application of training or conditioning can detect errors that surpass human precision. Modelling Process of learning from training data and validating against test data is called modeling.When you model any application under test, first Algorithms take a set of training examples called as the training data and get learning insights about application. Once learning gets completed, it provided with test data to validate learning algorithm. Complete process called Modelling, More robust your algorithm going to be more stable you get the predictions for any new scenario. Neural Nets (NN) A Neural Nets is a group of logically connected entities that transfer a signal from one end to another. Similar to brain cells or neurons that are connected to enable the human brain to achieve its cognitive powers, these logically connected entities are called perceptrons, which allow signals to move across the network to do formidable computations, for example, differentiating a lily from a lotus or understanding the different signals in the traffic. These operations become possible when we expose our Neural Nets to a significant amount of data. A deep neural net (DNN) is an addition of multiple layers arranged in the order shown in figure above. This mathematical lattice is the core structure that drives complex business workflows. The suggested methodology begins with capturing the entire webpage as an image. This image is then divided into multiple UX components. The division of UX components or groups of components helps in generating training and test data to feed our model. Once model is ready, it can test any new UX component across browsers, resolutions, and additional test dimensions by feeding the image of the UX components for the desired specification to the model. Model would classify whether UX component passes the desired quality criteria or not. This process of deciding the particular images into one of the classes (passing or failing the quality criteria) is called Classification. Training data and test data creation Training and test data created by automated modification of UX components taken from the webpage wireframes. Based on the design guidelines and the test variations, potential flaws introduced in direct correlation to the design input. These flawed design mockups are manifested as images. Proper labeling of these images ensure proper organization of test data. Once minimal set of images generated, model can be trained for right UI predictions. Modeling Based on the training data and the complexity of test scenarios, different models such as Convolutional Neural Nets (CNNs), Support Vector machines (SVMs) or Random Forests (RFs) can be chosen. Once the model is decided, model can be trained to capture GUI defects. Deep Learning Model Benefits and Learning: Traditional approaches and tools come at a high cost to the individual engineer. Ramping up on some test applications can take more than a week and proficiency comes with much longer periods of time. Machine Learning calls for a different developer skill set, which deprecates the need to master a great deal of traditional validation and verification techniques and tools, such as Selenium WebDriver or iOS and Android drivers. The new approach eliminated the need for a deep and intimate domain knowledge. A new QA Engineer able to ramp up Next Generation Automation Deep Learning Models in a matter of a day or two and start generating test data when training a ML model. ML-based testing helps single QA Engineer to prepare test automation to run against main UX components in a matter of day or two. Usually, the test teams invest multiple weeks to achieve such test coverage in traditional UI Testing approach. Next Generation Automation Deep Learning Models kicked-off the quality assurance process early-on, using design mockups. Training model with available wireframes allowed QA teams to begin the quality engineering work potentially before substantial development phase even started and this approach makes implementation details becoming not so important for quality engineering teams. Some findings were particularly prominent when it became clear that the defects detected by the deep learning model would have been practically impossible to capture by any other means of manual or automated testing. The model produced a classification score per asserted output. Such results allowed the Quality Engineering teams to focus their attention on GUI artifacts with the highest probability of having a fault. Maintaining test suites and scripts for several platforms take considerable amount of time and effort. It comes at high risk of reducing test scope, when time is of essence. Even a slight design change or refactoring of product code could end up failing the regression suites and may involve significant re-work for Quality Engineer to fix the automaton code. Next Generation Automation ML process became agnostic to implementation details and less sensitive to the platforms it runs on. Same time QA Teams excited about the use of innovative techniques and unleashing its potential. It inspired engineers to hone their skills and learn new tools and approaches. At Next Generation Automation, Team has developed some of the best Deep Learning Models to help clients achieve UI testing of complex business applications render across multiple platforms (Android, IOS, Windows, Linux), multiple devices that support multiple browsers like Chrome, IE, Fire fox, Safari For detailed discussion, please send expression of interest projects@nextgenerationautomation.com #NGAutomation Building better QA for tomorrow

More
Talk To Ankur

Talk To Ankur

Helps QA understand common problems faced by QAs all around globe and best solutions or suggestions provided by Next Generation Automation Founder Mr. Ankur Chaudhry to mitigate same. Dialogue 1: Reply from Ankur Chaudhry: Hi Mr. ABC,
You need to understand neither Selenium or Cypress survives you in longer run if I say 10 years to 20 years road map. What you need to learn at this point of time how to be versatile in your experience. No company today's time wanted to hire someone if he only knows Selenium. You should have knowledge of number of tools be selenium, cypress, appium, api test automation, Desktop automation and list goes. I know it looks difficult to learn so many tools, but if you promise yourself everyday 2 hours you have to give for your self growth or lets say 10 hrs in 1 week need to spend for my growth you will find in 2 to 3 years time frame you know so many tools and technologies and you combine them all together or some of them as per business needs and provide solution to your clients.
And that's the point you have to look at. If you not set the target right time, very difficult to reach the level that I have mentioned above.
It requires consistent effort and determination to learn so many technologies, tools but you have to do it for your survival and grow as an QA. Some time we have to do things in life not by choice but by force and here force is to achieve financial freedom and earn till you reach age 60+.
It's sad when QAs mentioned they unable to find jobs as per their expectation and many of them have to spend some time at home due to not right job openings which they can pick.
At NextGenerationAutomation, We have launched recently our program Mentor ship. This program helps you convert Manual to Automation and from Automation to Intelligent QA. Its very versatile program that will generate learning habits in you with right strategy, right effort and right timings. If you have not visited, must visit the link once and if find promising you can get register.
https://www.nextgenerationautomation.com/mentorship-program
Wish you good luck!
Take Care.
Thanks, Ankur
Dialogue 2: Reply from Ankur Chaudhry: Hi Mr. ABC,
Being experienced always make your survival difficult in IT, lets accept this fact.
But trust still IT needs experience folks and its all about us how we take things as we grow old in IT.
I suggest you look for roles that talks more about individual contribution as QA that may be related to chasing new business if you have passion for sales or look for solution development roles like building automation utilities, architectures and devops.
Just Test management jargon not working now a days and dont let your resume talks you are test manager kind of person.
Let put effort in understanding new technologies like ML, Data science and how QA can be benefited from same. Build your own prototypes if you have time.
This will boost your confidence and let you chase better job openings.
Survival in business very risky now a days and you have to accept the fact that only 1 to 2% tech business profitable in long run and rest shut down. So plan your efforts accordingly.
Wish you good luck.
Thanks,
Ankur
Dialogue 3 : Reply from Ankur Chaudhry: Hello Mr. XYZ, Sad to hear about this and trust what ever happened with you get happen every day with job workers all around the world. So first thing you have to do is just stop worry about your current situation and let your focus move from your office conditions to your self growth. Look at opportunities that are available outside in your domain and accordingly start working for your betterment. A Job worker who consider both his self growth and employer growth same time never feel worried anytime in his or her career. Also you need not to take any decision in hurry at this point of time. Keep yourself cool and calm. Don't let yourself in arguments with your colleagues even if they are not favoring you much. Set your target and move towards it slowly and steadily every day. When you work hard and believe in your capabilities you definitely get good returns in your life, not all days same and surely day will come in your life when you feel proud about your work place and about people with whom you work. Remember you can change yourself but never change people around you. Wish you good luck. Take Care. Thank You! Ankur Chaudhry Founder Next Generation Automation

More
How 80-20 rule helps you achieve your Career goals?

How 80-20 rule helps you achieve your Career goals?

The 80 20 rule is one of the most helpful concepts for life and time management. Also known as the Pareto Principle , this rule suggests that 20 percent of your activities will account for 80 percent of your results. This being the case, you should change the way you set goals forever. What Is The 80 20 Rule? The 80 20 rule is also called the “Pareto Principle.” It was named after it’s founder, the Italian economist Vilfredo Pareto, back in 1895. He noticed that people in society seemed to divide naturally into what he called the “vital few,” or the top 20 percent in terms of money and influence, and the “trivial many,” or the bottom 80 percent. Later, he discovered that virtually all economic activity was subject to this principle, in that 80 percent of the wealth of Italy during that time was controlled by 20 percent of the population. We can take Pareto’s 80 20 rule and apply it to almost any situation. Understanding the principle is essential to learning how to prioritize your tasks, days, weeks, and months. How Does The Pareto Principle Work? The Pareto Principle is a concept that suggests two out of ten items, on any general to-do list, will turn out to be worth more than the other eight items put together. The sad fact is that most people procrastinate on the top 10 or 20 percent of items that are the most valuable and important, the “vital few,” and busy themselves instead with the least important 80 percent, the “trivial many,” that contribute very little to their success. How To Apply The 80 20 Rule To Goal Setting Here’s what you should do in order to effectively apply the 80/20 rule to setting SMART goals which will boost your overall productivity. First, take a piece of paper and write down ten goals. Then ask yourself: If you could only accomplish one of the goals on that list today, which one goal would have the greatest positive impact on your life? Then pick the second most important goal. What you’ll find is, after you complete this exercise, you will have determined the most important 20 percent of your goals that will help you more than anything else. You should continue to work at those goals that you’ve chosen as the most valuable all the time. Lets understand this with an example: Assuming you 10 Goals Set as mentioned below: 1. Get Job Overseas 2. Work hard and become more knowledgeable 3. Excel in current Job 4. Maintain Good relationship with co workers 5. Let my boss appreciate my efforts 6. Let my client appreciate my efforts 7. Let me over work to make my job more effective 8. Let me participate in activities more than project to get rewarded 9. Let me more pro active in accepting more tasks in my project 10. Let me explore more business for my current employer As you can see in all above set 10 Goals, If you achieve you first 2 Goals you will get 80% of rewards that may be rest 8 Goals not able to generate for you. To Achieve First 2 Goals, You need to be find right mentor who can guide you to land you in overseas and same time support you in becoming knowledgeable QA. Next Generation Go Europe Model help you achieve both Top 2 Goals in the example shared. Lets extend Pareto principle to more deeper details. The 3 Keys To Living Without Limits The three keys to living without limits have always been the same. They are clarity, competence, and concentration. #1: Clarity Of Your Desires, Goals, And Vision Clarity means that you are absolutely clear about who you are, what you want, and where you’re going. You write down your goals and you make plans to accomplish them. You set very careful priorities and you do something every day to move you toward your goals. And the more progress you make toward accomplishing things that are important to you, the greater self-confidence and self-belief you have, and the more convinced you become that there are no limits on what you can achieve. Having clarity of your desires and a clear vision for your future will help you stay focused on your goals everyday. Focusing on your goals daily is actually one of the most important habits of successful people in my opinion. Here’s why: Goal-oriented people tend to have more clarity and more success in life than those who do not set goals regularly. They are also most likely to be mindful of their time management and tend to be interested in productivity techniques, such as the Pareto Principle. # 2: Competence In Your Key Areas Competence means that you begin to become very, very good in the key result areas of your chosen field. You apply the 80/20 rule to everything you do and you focus on becoming outstanding in the 20 percent of tasks that contribute to 80 percent of your results. You dedicate yourself to continuous learning. You never stop growing. You realize that excellence is a moving target. And you commit yourself to doing something every day that enables you to become better and better at doing the most important things in your field. # 3: Concentration Concentration is having the self-discipline to force yourself to concentrate single-mindedly on one thing, the most important thing, and stay with it until it’s complete. The two key words for success have always been focus and concentration. Focus is knowing exactly what you want to be, have, and do. Concentration is persevering, without diversion or distraction, in a straight line toward accomplishing the things that can make a real difference in your life. When you allow yourself to begin to dream big dreams, creatively abandon the activities that are taking up too much of your time, and focus your inward energies on alleviating your main constraints, you start to feel an incredible sense of power and confidence. As you focus on doing what you love to do and becoming excellent in those few areas that can make a real difference in your life, you begin to think in terms of possibilities rather than impossibilities, and you move ever closer toward the realization of your full potential. Always Work Towards Your Main Goal as per Pareto Principle. #NGAutomation Building better QA for tomorrow

More
Learn WireMock

Learn WireMock

Wiremock is new age technology tool for Service Virtualization to test API Services. WireMock is a simulator for HTTP-based APIs.Also known as Service Virtualization Tool or Mock Server. It enables you to stay productive when an API you depend on doesn't exist or isn't complete. It supports testing of edge cases and failure modes that the real API won't reliably produce. And because it's fast it can reduce your build time from hours down to minutes. At its core it is web server that can be primed to serve canned responses to particular requests (stubbing) and that captures incoming requests so that they can be checked later (verification). It also has an assortment of other useful features including record/playback of interactions with other APIs, injection of faults and delays, simulation of stateful behaviour. It can be used as a library by any JVM application, or run as a standalone process either on the same host as the system under test or a remote server. All of WireMock’s features are accessible via its REST (JSON) interface and its Java API. Additionally, stubs can be configured via JSON files. Download and Installation WireMock is distributed in two flavours - a standard JAR containing just WireMock, and a standalone fat JAR containing WireMock plus all its dependencies. Maven Dependency <dependency> <groupId>com.github.tomakehurst</groupId> <artifactId>wiremock-jre8</artifactId> <version>2.24.1</version> <scope>test</scope> </dependency> Basic Usage: To make WireMock available to your tests on its default port (8080): @Rule public WireMockRule wireMockRule = new WireMockRule(); The rule’s constructor can take an Options instance to override various settings. An Options implementation can be created via the WireMockConfiguration.options() builder: @Rule public WireMockRule wireMockRule = new WireMockRule(options().port(8888).httpsPort(8889)); In this post, we will create some sample stubs using Wire Mock stubbing capabilities, which can be used in your API Test Automation Projects as per need: Exercise 1: Exercise 1 Tests: Exercise 2: Exercise 2 Tests: Exercise 3: Excercise 3 Tests: Exercise 4: Excercise 4 Tests: Exercise 5: Excercise 5 Tests: #NGAutomation Building better QA for tomorrow

More
How learning outside work hours craft your IT Career like PRO?

How learning outside work hours craft your IT Career like PRO?

How learning outside work hours craft your IT Career like PRO? A very known fact prevailing in IT now a days: If you’re not spending 5 hours per week learning, you might get replaced shortly by your co workers or by people having skills better than you. This make everyone of us feel worried with question Are we spending right time and effort in upgrading ourselves as per technology needs? Today Companies say why I should pay extra someone if he is not willing to learn new areas. Today's business need innovation and this innovation only comes when people more knowledgeable and understand complex business scenarios which can be solved majorly if they are knowledgeable and spend good amount of time in educating them self for their and employer betterment Knowledge is the new money We spend our lives collecting, spending, lusting after, and worrying about money —in fact, when we say we “don’t have time” to learn something new, it’s usually because we are feverishly devoting our time to earning money, but something is happening right now that’s changing the relationship between money and knowledge. . We are at the beginning of a period of what renowned futurist Peter Diamandis calls rapid demonetization, in which technology is rendering previously expensive products or services much cheaper —or even free. People at the bottom of the economic ladder are being squeezed more and compensated less, while those at the top have more opportunities and are paid more than ever before. The irony is that the problem isn’t a lack of jobs. Rather, it’s a lack of people with the right skills and knowledge to fill the jobs. Today number of Jobs that pay you extremely high in number much higher compare to past but same times it demands lot of innovation and your skills to survive at such high paying jobs. Former President Obama perfectly explains why he was so committed to reading during his Presidency in a recent  New York Times interview : “At a time when events move so quickly and so much information is transmitted,” he said, reading gave him the ability to occasionally “slow down and get perspective” and “the ability to get in somebody else’s shoes.” These two things, he added, “have been invaluable to me. Whether they’ve made me a better president I can’t say. But what I can say is that they have allowed me to sort of maintain my balance during the course of eight years, because this is a place that comes at you hard and fast and doesn’t let up.” Six essentials skills to master the new knowledge economy So, how do we learn the right knowledge and have it pay off for us? The six points below serve as a framework to help you begin to answer this question. 1. Identify valuable knowledge at the right time The value of knowledge isn’t static. It changes as a function of how valuable other people consider it and how rare it is. As new technologies mature and reshape industries, there is often a deficit of people with the needed skills, which creates the potential for high compensation. Because of the high compensation, more people are quickly trained, and the average compensation decreases. 2. Learn and master that knowledge quickly Opportunity windows are temporary in nature. Individuals must take advantage of them when they see them. This means being able to learn new skills quickly. After reading thousands of books, I’ve found that understanding and using mental models is one of the most universal skills that everyone should learn. It provides a strong foundation of knowledge that applies across every field. So when you jump into a new field, you have preexisting knowledge you can use to learn faster. 3. Communicate the value of your skills to others People with the same skills can command wildly different salaries and fees based on how well they’re able to communicate and persuade others. This ability convinces others that the skills you have are valuable is a “multiplier skill.” Many people spend years mastering an underlying technical skill and virtually no time mastering this multiplier skill. 4. Convert knowledge into money and results There are many ways to transform knowledge into value in your life. A few examples include finding and getting a job that pays well, getting a raise, building a successful business, selling your knowledge as a consultant, and building your reputation by becoming a thought leader. 5. Learn how to financially invest in learning to get the highest return. Each of us needs to find the right “portfolio” of books, online courses, and certificate/degree programs to help us achieve our goals within our budget. To get the right portfolio, we need to apply financial terms—such as return on investment, risk management, hurdle rate, hedging, and diversification—to our thinking on knowledge investment. 6. Master the skill of learning how to learn. Doing so exponentially increases the value of every hour we devote to learning (our learning rate). Our learning rate determines how quickly our knowledge compounds over time. Consider someone who reads and retains one book a week versus someone who takes 10 days to read a book. Over the course of a year, a 30% difference compounds to one person reading 85 more books. To shift our focus from being overly obsessed with money to a more savvy and realistic quest for knowledge, we need to stop thinking that we only acquire knowledge from five to 22 years old, and that then we can get a job and mentally coast through the rest of our lives if we work hard. To survive and thrive in this new era, we must constantly learn. Next Generation Automation Team value every QA who get connected with us and let our QAs sail perfectly in era of complex technologies. #NGAutomation Building better QA for tomorrow

More
How to handle toxic work culture?

How to handle toxic work culture?

Lets first understand Whats Toxic Work culture? A toxic workplace can be defined as any job where the work, the atmosphere, the people, or any combination of those things cause serious disruptions in the rest of your life. A Toxic Work Culture may force high performing people to quit. A toxic workplace is a workplace that is marked by significant drama and infighting, where personal battles often harm productivity. Toxic workplaces are often considered the result of toxic employers and/or toxic employees who are motivated by personal gain (power, money, fame or special status), use unethical, mean-spirited and sometimes illegal means to manipulate and annoy those around them; and whose motives are to maintain or increase power, money or special status or divert attention away from their performance shortfalls and misdeeds. Toxic workers do not recognize a duty to the organization for which they work or their co-workers in terms of ethics or professional conduct toward others. Toxic workers define relationships with co-workers, not by organizational structure but by co-workers they favor and those they do not like or trust. How to Handle toxic work culture by QAs? Toxic work culture may create lot of damage in your career and in worst case scenarios it makes you so much demotivated that you left with no option but to take break from your career where you added many years of your life. Toxic work culture results in lot of fear if not handled timely. In this post we suggest best alternatives that can be applied if any one find himself to be part of toxic work culture: 1. Mind your work and not people around you Be dispassionate in your day to day interactions with co-workers. Just business, nothing else! 2. Do not ever use your 'closeness' to anyone to drive results. Avoid sharing personal thoughts in toxic work environment as it will let others to take advantage of your current situations 3. Keep a detailed evidence of everything you are doing. Fact based information. Communicate more on emails and avoid sending mails that may turn fatal for you. This will not only distract you from work but also can be one of reason for your fire 4. No Complains considering it will only go in dark Do not complain to anyone as these would fall in deaf ears. Mind you, you are not the sole victim in a toxic work culture. It's top down and there may be many others who are facing this situation. So be cool and calm. 5. Keep your knowledge levels all time high The most difficult part. As you try your way out, be the BEST in the job. Study regularly and meaningfully. If you ignore your own growth, no one else would propel that. 6. Look for other alternatives Silently look for new opportunities and make sure no decision to be taken in hurry. If you are comfortable in living 1 part of country just keep your next search with in that area only till time you face severe financial crisis and your immediate family also not able to help you significant. #NGAutomation Building better QA for tomorrow

More
Model Based Testing : Vital for Complex Business Scenarios

Model Based Testing : Vital for Complex Business Scenarios

What is Model Based Testing? Model based testing is a software testing technique where run time behavior of software under test is checked against predictions made by a model. What is Model? A model is a description of a system's behavior. Behavior can be described in terms of input sequences, actions, conditions, output and flow of data from input to output. It should be practically understandable and can be reusable. There are numerous models available and it describes different aspects of the system behavior. Examples of the model are: Data Flow Control Flow Dependency Graphs Decision Tables State transition machines Model Based Testing Example As shown in Diagram above, Model Based Testing typical involves 3 Stages before actual testing gets execute either Manual or through Model Based Test Automation Tools 1. Understanding Application Screens and Components Flow In this phase you understand each application screen and define interaction between these components as per business flows 2. Recorded Test Cases Creation In this phase based on interaction between different components of Application Screens, we generate test case flows. Every test case flow Start with Component containing first row of Model and Ends with component containing last row of Model. 3. Optimized Model In this phase model gets optimized with minimum possible combinations, eliminate any redundant paths and add decision points while transition happens from 1 component to other component. Types of MBT: There are two types of Model based testing framework. Offline MBT: Generation of Test Suites before executing it. A test suite is nothing but a collection of test cases. Online MBT: Generation of Test Suites during test execution. QA can use automated tools like TOSCA , HOVERFLY , CONFORMIQ Different Models in MBT Testing: In order to understand the MBT, it is necessary to understand some of the models explained below. Let's go through one by one: Finite State Machines: This model helps testers to assess the result depending on the input selected. There can be various combinations of the inputs which result in a corresponding state of the system. The system will have a specific state and current state which is governed by a set of inputs given from the testers. State Charts: It is an extension of Finite state machine and can be used for complex and real time systems. Statecharts are used to describe various behaviors of the system. It has a definite number of states. The behavior of the system is analyzed and represented in the form of events for each state. Example Diagram below describing how to test Login Functionality with state charts. Unified Modeling Language (UML): Unified Modeling Language (UML) is a standardized general-purpose modeling language. UML includes a set of graphic notation techniques to create visual models of that can describe very complicated behavior of the system. Example below describing different type of UML Diagrams. Use Case Diagrams most common UML Diagram that can be used for testing. Advantages of Model Based Testing: Following are benefits of MBT: Easy test case/suite maintenance Reduction in Cost Improved Test Coverage Early defect detection Increase in defect count Time savings Improved tester job satisfaction #NGAutomation Building better QA for tomorrow

More
Natural Language Processing (NLP) Based Test Automation

Natural Language Processing (NLP) Based Test Automation

At Next Generation Automation, Studying future technologies of Automation one area where team fascinated about. And recently we have developed Proof Of Concept for our Client "How NLP Based Automation can be technology for automation in future". In this article, We will share with you high level understanding What NLP all about and how it can be useful for any automation project? What is Natural Language Processing? Natural language processing (NLP) is a sub field of linguistics, computer science, information engineering, and artificial intelligence concerned with the interactions between computers and human (natural) languages, in particular how to program computers to process and analyze large amounts of natural language data. Building Block of NLP based Application: Any NLP Application contains 3 Core Components: 1. Understanding 2. Processing 3. Generation Before you actually start building your NLP algorithms you need to understand 3 Core Components: Understanding, Processing and Generation. At every stage specific set of tasks performed 1. Understanding component helps in building vocabulary 2. Processing component creates meaningful statements 3. Generation component creates meaningful context We will not go deep details for every component in the post but now look at how NLP can be applied from automation stand point. First Understand before we apply NLP in Automation. The Problem with Testing Although there’s a trend towards facilitating software development with newer, more efficient tools, it’s surprising that test cases are still mostly created manually, which is time-consuming and challenging. This raises the following problems: Those who write the cases are people, and that means there’s always room for human error. This is particularly true for inexperienced testers who may fail to meet functional requirements, as their tests are overly ambiguous or simply incorrect. It’s often impossible to use the same tests in regressive testing if application requirements change, meaning that a lot of test cases have to be written from scratch or, at the very least, heavily amended. As testers are time-limited in creating or amending existing tests, it’s impossible to conduct regressive testing with 100% efficiency. This results in possible bugs and system failures, risking a negative first impression regarding the released application. Each of these drawbacks may affect the competitiveness of a product among end users, resulting in revenue loss. This is where test automation kicks in to speed up testing routines and eliminate room for error (when tuned properly). With NLP, however, test automation can be made even more efficient. Enhancing Test Automation with NLP Capabilities Testers create test cases based on the requirements of a customer taken from user stories but how can a tool using NLP do that? For this process, a tester needs to input the following details so that the software can generate an accurate test case: User story — Contains the requirements and descriptions of software features provided by the end user. Acceptance criteria — A description of how the created software should work to meet the requirements provided. Test scenario description — Shows the interaction between the user and the product, which will generate the test case. Dictionary — This consists of keywords that the program uses to generate test cases. All the information is analyzed with NLP techniques and processed into the frames, where it’s then converted into the unified modeling language(UML). UML is a modeling language in software engineering that turns the requirements into a set of diagrams and linkages between them. The resulting output is an automatically-generated test case. Drawbacks and Advantages of NLP As with any method, there are pros and cons to the use of NLP in test automation: Firstly, you need to make sure you provide all the necessary information during creation of the test scenario descriptions. If not, your end results may be inaccurate at best, or may not work at all at worst. Secondly, you need to adjust your language and maintain the same writing style when creating the test scenario descriptions and user stories; this allows the software to accurately understand the meaning behind the words. And lastly, you need to learn how to use the system, particularly when writing and using test scenario descriptions. Like with most software, it takes some time to do this accurately. Despite all this, there are some strong advantages of this method. By using NLP-based techniques, you can: Generate test cases with almost 100% test coverage. Spend less time on test creation. Increase the productivity and re usability of your tests. Is NLP Worth It? The Final Word Automated testing with NLP is a win-win scenario. Test cases will be developed with considerably less effort and time and this will lead to faster time-to-market and increased quality, both of which contribute to customer satisfaction. Even if a product owner decides to change a feature, it will be much easier to make amendments. This means a lower test case redundancy. In addition, the product will be tested more efficiently overall. Hope you like the information shared in article. #NGAutomation Building better QA for tomorrow

More
Cover Letter Writing Tips

Cover Letter Writing Tips

To Apply for Overseas Jobs shared by Next Generation Automation team as part of Go Europe Model , Its very important to write very impressive cover letter by every candidate to let his or her resume get shortlisted by future employers. Land your dream job with these cover letter tips AI-driven resume screening is trending and could become the norm some day, but at most companies trying to fill critical roles, there is still usually at least one human being spending a few moments deciding whether to put your resume into the follow-up box--or the trash can. Having a resume, however, is not enough to tell your story and stand out. That's where your cover letter (or email) comes in. Experienced recruiters can learn a lot from a resume, but with your cover letter, you're getting one chance to weave the data points of your career into a coherent and compelling narrative. It's your first (and often only) shot at delivering your pitch to a potential recruiter. Well-crafted cover letters give recruiters a lot of valuable information that a resume can't. They show very clearly whether you can communicate well in writing, they give you the chance to demonstrate your enthusiasm for the company and the role you're applying to, and they provide a chance to fill-in the spaces in-between the bullet points on your resume with insight into who you are likely to be as an employee and co-worker. Here are some tips for writing cover letters that are more likely to be read, and which could increase the chances of your moving into the next stage of the recruiting process. 1. Personalize it with name of employer or name of company If you know who the recruiting manager is, or you have the name of the manager who holds the ultimate decision-making power or who wields significant influence in the process, then address it to him or you can also address in the name of company. Personalizing the address field in your letter or email is just one more way to connect with the reader of your cover letter. 2. Prove why you're qualified Don't let your resume speak for itself. With your cover letter, you now have a few moments to grab the recruiter--virtually, of course--and set her aside to make your pitch. Get straight to the point and let her know why you believe you are qualified for the role, and then give examples from your work experience. Be concise and don't simply repeat what you put on your resume. Boil down your qualifications to the three or four strongest ones, the ones for which you can confidently say you'll be able to start adding value from day one on the job. 3. Show how the position fits your career trajectory and aspirations Why are you applying to our company? And why now? Why would you want to leave your current company? What are your longer term career goals and how does this role fit into them? These are just a few of the questions running through a recruiter's mind and are almost certainly going to be part of an interview with you, if you make it to that stage in the process. Address these questions in your cover letter. They may not give the recruiter everything they need to understand you, but they will provide additional data points they can use to determine whether you are going to be a good fit for the role. 4. Demonstrate excitement Yes, recruiters want to know: Are you qualified for the job? Do you have the qualifications and experience necessary to start adding value from day one? But they also want to know, will you enjoy working for them? Will you enjoy the role? Will you stick around? To answer these questions, demonstrate enthusiasm about the company and the role, and, if you manage to find out who you will be reporting to or working most closely with if you do join the company, show that you're excited about working with them and helping them achieve their goals. 5. Be confident Without getting cocky, of course, show that you're confident: Confident about your qualifications and experience, confident that this is the right company and the right role at the right time for you, and confident that you will make a positive contribution from day one. 6. Proofread Proofread your cover letter! Meticulously check your grammar and spelling. Ask a friend to read it and offer honest feedback. Let your written english not be loosely connected and 1 english line must connect in some context to next written english line. Hope you like the Cover letter tips shared by Next Generation Automation. #NGAutomation Building better QA for tomorrow

More
Learn Behavioral Driven Development

Learn Behavioral Driven Development

What is BDD? Behavioral Driven Development (BDD) is a software development approach that has evolved from TDD (Test Driven Development). It differs by being written in a shared language, which improves communication between tech and non-tech teams and stakeholders. In both development approaches, tests are written ahead of the code, but in BDD, tests are more user-focused and based on the system’s behavior. Choosing BDD TDD works satisfactorily, as long as the business owner is familiar with the unit test framework being used and their technical skills are strong enough, which is not always the case. In these circumstances, BDD has the advantage because the test cases can be written in a common language used by the stakeholders such as, for example, English. This access to clearer, low-jargon communication is probably the biggest advantage to using BDD, making it possible for collaboration between the technical and non-technical teams to run with improved efficiency. Characteristics of BDD As described above, the advantage to BDD test cases being written in a common language is that details of how the application behaves can be easily understood by all. For example, test cases can be written using real-time examples of the actual requirements, to explain the behavior of the system. Essentials to have in place before implementing BDD Requirements should be converted into user stories that can define concrete examples. Each example should be a valid user scenario, rather than a mere test case. An understanding of the ‘role-feature-reason’ matrix and the ‘given-when-then’ formula. An awareness of the need to write ‘the specification of the behavior of a class’ rather than ‘the unit test of a class’. BDD Frameworks Cucumber Cucumber is a test framework that supports BDD. In Cucumber, the BDD specifications are written in plain, simple English which is defined by the Gherkin language. In other words, Gherkin is a language that Cucumber understands. Gherkin presents the behavior of the application used, from which Cucumber can generate the acceptance test cases. Cucumber is a framework developed by Ruby that can work across different technologies. JBehave Another popular framework for BDD. Specflow Specflow evolved from the Cucumber framework using Ruby on Rails, and is used mainly for .Net projects. SpecFlow also uses the Gherkin language. BDD Terminology: 1) Feature Files or Story Files: Feature / Story files are the essential part of BDD which is used to write test automation steps or acceptance tests. This can be used as the live document. The steps are the application specification. All the feature files end with .feature extension. All stories file end with .story extension. Stories file created in JBehave Framework and Feature files created in Cucumber Framework. 2) Scenario: Basically, a scenario represents a particular functionality which is under test. By seeing the scenario user should be able to understand the intent behind the scenario and what the test is all about. Each scenario should follow given, when and then format. This language is called as “gherkin”. Given: As mentioned above, given specifies the pre-conditions. It is basically a known state. When: This is used when some action is to be performed. As in above example, we have seen when the user tries to log in using username and password, it becomes an action. Then: The expected outcome or result should be placed here. For Instance: verify the login is successful, successful page navigation. Background: Whenever any step is required to perform in each scenario then those steps need to be placed in Background. For Instance: If a user needs to clear database before each scenario then those steps can be put in a background. And: And is used to combine two or more same type of action. Sample feature file: Feature: Login Functionality Feature In order to ensure Login Functionality works, I want to run the cucumber test to verify it is working Scenario: Login Functionality Given user navigates to nextgenerationautomation.com When user logs in using Username as “USER” and Password “PASSWORD” Then login should be successful Sample Story File: Search functionality Narrative: In order to show the advance cart functionality As a user I want to search for an item in a sub category Scenario: Advanced Search for a hat Given I am searching on Etsy.com When I specify the Vintage sub category And I search for hat Then there are search results 3) Scenario Outline Scenario outlines are used when the same test has to be performed with different data set. Let’s take the same example. We have to test login functionality with multiple different sets of username and password. Sample Login.feature file: Feature: Login Functionality Feature In order to ensure Login Functionality works, I want to run the cucumber test to verify it is working Scenario Outline: Login Functionality Given user navigates to nextgenerationautomation.com When user logs in using Username as <username> and Password <password> Then login should be successful Examples: |username |password | |Ankur |password1 | |Peter |password2 | |Alisha |password3 | Note: As shown in above example column names are passed as a parameter to When statement. In place of Scenario, you have to use Scenario Outline. Examples are used to pass different arguments in the tabular format. Vertical pipes are used to separate two different columns. An example can contain many different columns. Note: As shown in above example column names are passed as a parameter to When statement. In place of Scenario, you have to use Scenario Outline. Examples are used to pass different arguments in the tabular format. Vertical pipes are used to separate two different columns. An example can contain many different columns. 4) Tags: Cucumber by default runs all scenarios in all the feature files. In real time projects, there could be hundreds of feature file which are not required to run at all times. For instance: Feature files related to smoke test need not run all the time. So if you mention a tag as @SmokeTest in each feature file which is related to smoke test and runs cucumber test with @SmokeTest tag. Cucumber will run only those feature files specific to given tags. You can specify multiple tags in one feature file Example of use of single tags: @SmokeTest Feature: Login Functionality Feature In order to ensure Login Functionality works, I want to run the cucumber test to verify it is working Scenario Outline: Login Functionality Given user navigates to nextgenerationautomation.com When user logs in using Username as <username> and Password <password> Then login should be successful Examples: |username |password | |Ankur |password1 | |Peter |password2 | |Alisha |password3 | Some benefits to using BDD If you plan to implement BDD, here are a few points that will benefit the software team. You are no longer defining ‘test’, but are defining ‘behavior’. Better communication between developers, testers and product owners. Because BDD is explained using simple language, the learning curve will be much shorter. Being non-technical in nature, it can reach a wider audience. The behavioral approach defines acceptance criteria prior to development. Lets look at How TDD compares to BDD? In TDD approach, developer assume the behavior of software application and then write unit tests In BDD approach, Business Analyst or Client knows the requirement of his product and generates scenarios based on real life usage of his product TDD is inside-out, push based where unit tests drives the software development BDD is outside-in, pull based where behavior tests drives the software development Summary BDD lets us develop, test and think about the code from the view of the business owner. You need to have the mindset to implement ‘real time examples’ rather than implementing just ‘functionalities’ #DevelopmentInProgress

More
Pillars of Automation Framework Design

Pillars of Automation Framework Design

Pillars of Automation Framework Design Automation Framework Design and Development plays an important role in any automation project and effectiveness of Framework determines effectiveness of test scripts during later stages of project. Hence its very important to understand 4 Pillars of Automation Framework Design by any Automation QA: Pillar 1: Maintainability The only constant is change. If the code we write today is going to be hard to maintain in the future, the rework and upkeep cost is going to skyrocket. Nicely written code in my books does not just do the job today, but can keep up with the changes to come in time and be easy to maintain. Every project team must have definition of maintainable code they want to follow as per their needs. Some of the key pointers for same are: Naming conventions should be defined and followed. Code commenting standards outlined and should be able to create code documentation from it. Code complexity should be to a minimum. Large lines of code must be break down under smaller methods. Logging of test results. Report logs should not just show what passed and failed, rather should have debug information in there and be an easy read at the same time. Pillar 2: Re usability The way automation generates great benefits is by being reusable, so should your individual modules in the code. Re usability should be embedded in everything you do in an automation project. A major concept here is creating wrappers. Again, from my old embedded lessons (the buzz word today being IoT), for areas which we expect fundamental changes to happen, it’s best not to use them directly, instead create a wrapper on top of them even if it would have just one call in it. This makes enhancements easy and adds lots of portability. Here are a few places to keep re usability in mind: Selection of scenarios to automate. Creating architecture of the project, have separate layers calling / utilizing each other. Methods within each layer could be used by one another. Reusable test data. Smaller tests which could be combined to create larger / use case checking scripts. Pillar 3: Scalability Often when teams start with automation they have the immediate goal in mind and the long term picture is taken into account. In most automation projects, there will always be a need to expand the project adding more tests and functionality to it. Therefore, the architecture should be built keeping in mind future scalability. Time and again have I seen projects not able to scale up and the need for a massive rework. Here are a few places to keep scalability in mind: As you add more and more scripts in your project, there should not be any memory leaks while running the tests either in sequence or parallel Any dependent tests must not let other tests to fail Any new functionality addition not let already written tests to start fail Must be provision available to integrate with 3rd Party Plugins like ALM, JIRA Pillar 4: Robustness The most important pillar for an automation project. The environment in which these scripts are to run is ever changing. The AUT (Application Under Test) is changing, browsers / services are changing even the automation tools / languages are changing. With all this change going on, it’s no surprise automation projects do succumb to robustness issues. The root cause of flakiness (the automation term for not robust) is when the expected state of the AUT is not matching what the automation code is expecting. Therefore, the main guideline is to identify the possible states the overall system can go into and handle them in the code. I break this exercise down into two areas, proactive and reactive handlers. Proactive Handlers: Proactive handlers are where we know there is a higher possibility of something going wrong and we prevent it before it can happen. A great example would be delays. We know for a modern web application, delays are going to be a problem, use dynamic delays as a standard rule before every action. Test data would be another one. If you are sure there will be a problem (which most of the time there is), handle it can turn into a problem. Reactive Handlers: Reactive handlers are when the state change has happened, and now we want to get back on track, let’s say an unexpected popup appeared. Under this heading most the important tool is event handlers. Apart from the basic Try{} Catch{} blocks, have event handlers to take care of unexpected events like unwanted popups, a page not loading and so on. While this post does not prove to be a complete guideline, it’s a food for thought on important aspects of framework design. #NGAutomation Building better QA for tomorrow

More
Skill Set of Next Generation Automation Test Engineer

Skill Set of Next Generation Automation Test Engineer

Skill Set of Next Generation Automation Test Engineer 1. Automation architecture design Designing API automation frameworks Designing UI automation frameworks Developing test harnesses Test data creation tools / programs Developing synergies between automation teams Automation best practices, design patterns and anti-patterns 2. Fundamentals of framework design Develop Maintainability in framework design Develop Reusability in framework design Develop Scalability in framework design Develop Robustness in framework design 3. Programming Writing clean and professional code Seasoned practitioner of coding patterns Developed coding guidelines and principles for teams to follow Usage of static analysis tools (e.g. SonarQube) Skilled in any one strongly typed language (Java, C# etc.) Skilled in any one loosely typed language (JavaScript, Python etc.) 4. API Automation Hands on experience solving API automation challenges In depth understanding of HTML methods RestAssured WebDriverIo Any other API automation tools JSON XML 5. UI Automation Hands on experience solving typical UI automation challenges In depth understanding of how browser automation tools work Open source browser automation tools / libraries (e.g. Selenium, Webdriver.io etc.) Enterprise tools (e.g. UFT / TestComplete) Junit, TestNG Allure Maven / Gradle 6. Mobile Automation Experience solving typical mobile automation challenges Understanding of how Android and iOS work and interactions during native apps automation Appium XCUITest 7. Operational Acceptance Testing Performance testing JMeter Gatling Security testing OWASP 8. Git Worked with Git using proper branching and merging strategies (e.g. BitBucket, GitHub etc..) Raising and approving pull request Collaborating on code reviews 9. Jenkins Setting up Jenkins Creating pipeline jobs Configuring automation framework hooks in Jenkins (using maven, ant etc..) Configure to generate telemetry Troubleshoot jobs and familiarity with Jenkins logs Configure and troubleshoot automation reports Gather metrics from execution data in the pipeline 10. Technical Acumen How technology stack works – Presentation, business, persistence and database layers Micro services architecture Front end platforms architecture (e.g. Angualr, Node JS) Web development fundamentals – HTML, CSS and JS Back end platforms architecture (e.g. Spring boots, .Net) HTTP messages MVC architecture SQL fundamentals and schema design 11. Collaborating with Architects / Senior devs Ability to understand complex product design Review product architecture and provide feedback related to quality and stability Ensure product architecture allows for testability 12. Thought leadership Sharing and learning in the testing community Collaborating with other thought leaders Familiar with latest trends in the software and testing community 13. Team Leadership Leading by example / servant leadership Developing an open culture where people are free to share their thoughts and fail fast Developing confidence in team members Leading teams under 10 people Leading teams from an enterprise level Provide positive and constructive feedback respectfully Build positive relationships with team members Planning, organizing, and follow-up skills Hire and mentor Software Quality Engineers #NGAutomation Building better QA for tomorrow

More
Learn How AI is Transforming Software Testing

Learn How AI is Transforming Software Testing

Learn How AI is Transforming Software Testing There is no doubt that AI is Transforming Software Testing. Over the years you can see how software testing has transformed from manual testing into automated testing. It now has reached another milestone and is further transforming with the advent of AI. There are many tools today which have started incorporating AI in order to provide a high level of quality. As a software quality engineer, it is important to understand those changes and be able to evolve with the technology. If you haven’t done that yet, don’t worry since the technology is currently in a fairly infant state. Here are several ways that AI is Transforming Software Testing AI will transform manual testing. Manual testing is very time consuming and expensive. AI will enable the creation of manual tests and be able to accelerate the testing timeline by running those scripts automatically. AI will enable testing teams to cover more scenarios and cases. This will identify more defects due to the increased amount of coverage across the application. AI will eliminate the need for assumptions. Software testers make a lot of assumptions when they are building and executing test cases. AI will help in using predictive analytics to predict customer needs. By identifying those needs this will result in a much better customer experience and customer satisfaction will greatly increase. AI enables visual validation. This validation will identify more defects that traditional software testing methods. AI will help find software bugs much faster and find more of them. There are several tools that incorporate AI/Machine Learning to speed up the development and maintenance of automated tests. One of those companies is Testim. Maintaining automated test cases can be very expensive and time consuming. Reducing the amount of maintenance will allow test automation engineers to focus on new automated tests and that will add a higher degree of quality to your applications. There are some AI tools that will complement existing tools that are on the market today. One of those tools is Test.ai. Test.ai leverages a simple Cucumber like syntax, so it greatly simplifies the development of automated scripts. Some tools do all the testing for you. I know that is hard to believe and I admit I am also a bit skeptical. ReTest helps to eliminate the need to be able to have programming skills. It leverages AI to fully test applications. AI will create opportunities for software testers to move into new roles. Some of those roles will include: AI QA Strategy: This role will use the knowledge gained within AI to understand how this technology can be applied to software testing. AI Test Engineer: This role will combine software testing expertise along with experience in AI to develop and execute testing activities. AI Test Data Engineer: This role will combine software testing expertise along with AI in order to understand data and leverage predictive analytics to verify information. I strongly believe that software testing will continue to be a prominent role within IT organizations. I do believe it will evolve and continue to evolve. This will require additional training on technologies such as AI in order to keep up with technical evolution. AI is a brand new technology, so it will require time and resources will need to be trained on how to use the technology effectively. #NGAutomation Building better QA for tomorrow

More
Steps To Prevent Career Down Fall

Steps To Prevent Career Down Fall

Steps To Prevent Career Down Fall As human being, we have tendency to grow in our life till we live. But many times in-spite of our best efforts we have to accept failures in our life in form of Job Firings, No Salary Hikes, No Promotions, No new growth opportunities in existing company and all these add lots of mental pressure on us and as QA this pressure not going to be less than any other profession on this earth. In this post, Next Generation Automation will share with you signs that triggers warning for you that things not going right in your current job and it's time to look for other growth areas by changing your job or moving different team with in same company or break for some duration in IT. Decision varies from individual to individual but any decision must be taken fast to avoid any bigger negative impacts in long run. Warnings signs that never be ignored while working in IT: 1. Your immediate boss avoids talking with you 2. Your team members take credit for your hard work and your boss says to you, you are not performing well compare to rest team members. 3. Work that offer to you does not have long term growth for you 4. Everyday coming to office make you feel sad 5. You get confused whether to continue in same project or not, in same company or not 6. You salary hikes not as per industry standards and compare to other team members 7. You unable to get hold of latest technology areas 8. New openings available out side your current job make you feel scare 9. You are only earning member of family and loss of your job may trigger significant financial crunch for you 10. Your current team members leave no chance to put you in silos whenever possible 11. No onsite travels available that can be en cashed 12. Your office location too far from your home and makes you look tired during work and helps your co workers to take advantage of this situation 13. Team avoid sharing any new information with you 14. You are not invited in all team meetings 15. Your name put in last while addressing mails from other team members including your boss 16. You see as non performer in eyes of other staff even after your best efforts on job All above mentioned points never be ignored and sufficient planning needs to be done well in advance before you get victim of any negative situation in your life. Here are strategies suggested by Next Generation Automation team that always let you in control of your situations 1. Meditate every day 2. Practice Yoga 3. Talk to people that make you feel motivated 4. Avoid talking people that trigger negativity for you 5. Spend more time with children if you have children at home 6. Get hold of new skills applicable in your field to make you stay relevant 7. Spend more time in reading e books applicable to your job 8. Follow experts in your area and read all their posts as you get time 9. Keep open eye for all new job openings 10. Apply only jobs that you are comfortable at, never apply for jobs just because you need the job 11. Enroll for new courses / training programs and use learning maximum in enhancing your resume. 12. Never fall in heated argument with any in office especially with your seniors and company HR. 13. Treat every one with respect even you know people who are not good with you during office hours. 14. Avoid much dependency on anyone for your work, if you find work that involves too much dependency on other person who is not good with you avoid taking that tasks on your name. #NGAutomation Building better QA for tomorrow

More
Navigating A Career Path In Software Testing

Navigating A Career Path In Software Testing

Navigating A Career Path In Software Testing When Testers have started on a career path, many have commented on various surveys that they “fell into testing”. It’s important to understand that a majority of Testers did not plan on pursuing a career in software testing. They often come with backgrounds other than Computer Science. The typical paths for Testers often lead into Management, Program or Project Management (or PM/PO), Business Analyst, or even Development. These are typical growth paths in a lot of companies that want to make sure they keep on solid employees doing great work. These days, the Tester’s role is changing and to stay relevant, you have to be willing to focus on more than the functional aspects of the application. To see an example of how the role of a Tester is changing, you only have to look at the Modern Testing Principles as one example. Testers will need to develop more specialized skills and knowledge about software development to keep up with the ever growing changes introduced by technology, business practices, and customer desires. The key to working through this, if your company doesn’t have a career path for you, or one that you like, is to come up with your own. A career path can take on many aspects of the current job, like learning more about the application’s domain. When you want to take your career to the next level, you’ll want to figure out what skills you can learn to keep yourself relevant and take you to the next level in your career. An example might be learning how to use the command line more effectively, or learning how to read and write SQL queries. If you look for the “gaps”, basically places in the application which are not well known or tested, you’re likely to find a skill you can learn and use. Coming up with your own career path in testing requires you to be creative and adaptable . There are a lot of options out there if you look. This requires learning about tools, code, techniques, and different kinds of testing. If you are looking at other types of testing besides functional testing (or manual testing as it’s sometimes called), then you are already on the right path for career growth. Most Common Career Paths For Testers Most companies struggle with how to develop career paths for Testers in their organizations. They even struggle with what to name them. Testers could be QA Analysts, or Quality Engineers, or Test Analysts. Even those that have more automation skill sets are referred to as Test Automation Engineers, Software Developers In Test, Automation Testers, Quality Automation Engineers. The variety of names speaks to the confusion companies and organizations have about the role Testers play in software development. It’s understandable then that businesses might not have a good idea about how to help an individual contributor grow in their Tester role. Often what happens is a gentle nudge or an outright push onto another career path, if the Tester stays with the same company long enough. Below are descriptions of common career paths for Testers and how Testers can arrive at them. These are not bad places to end up but are often the only ways offered in some companies for Testers to grow their careers and make monetary gains. It’s unfortunate at times, especially if someone would like to grow their testing career and skill sets, that companies don’t help Testers continue to be Testers. From Customer Service To Tester This is usually one of the first places companies look for technical specialists to promote into testing. This is a great career step for folks that are looking to use their customer knowledge to prevent defects before they get to customers. There are careers in customer services as well, but for someone looking to extend their technical knowledge, this a great career opportunity. For Development Directors, looking at your Customer Service folks, along with others in Marketing, Business Analyst, or even Sales might be a good way to get fresh eyes and perspectives onto a development team. Having folks from more diverse backgrounds and with different perspectives can always help a team. If you are a Tester recently recruited from one of these areas, you’ll likely start with manual or functional testing to learn the ropes. Once you’ve become comfortable with this skill, branch out quickly into other skills. Start learning coding basics. Understand the tech stack. Reach out for more training and opportunities to work with other roles on your team. This is only the start of your career, there is so much more out there to learn. Tester To Developer While sometimes there is a midway point of Automation Specialist or SDET, some people enter into a Tester’s role hoping to move onto a Developer role. It’s often a recruiting point for companies to find people that have the potential to be Developers and offer them a role as a Tester. If a candidate is serious about learning testing as a profession and then moving into development, often those candidates make some of the best Developers. Tester To Manager When a Tester does a lot of “glue work” and proves they are fairly decent with communicating, they can be quickly put on a management path. They become “leads” or even assistant managers, who are then given more project coordinating and people management tasks than technical work. It can be a day-to-day struggle to maintain skills and also manage a project and/or people. Tester To Business Analyst/Program Manager/Scrum Master This is a natural fit for many testers because most of the job testers do already leans fairly heavily into these roles by doing analysis on various business problems related to feature work, managing stories, and sometimes managing the overall work of the project. These roles are natural extensions of testing, especially the role of analyst, where workflows, usability, and communication are essential. If you are getting certifications in these areas while continuing to do testing, it’s a good idea to explore these roles further. Leverage lessons from each of these roles to help expand your understanding of how the development cycle works. While this information can help you as a tester, it can also help you transition into one of these roles fairly quickly. Tester To Automation Specialist While getting into automation could be part of your Tester role already, it could become the sole focus of your job. There are several flavors of this job available for those testers wanting to engage more with code on a regular basis. To really be successful in this position, you’ll need to keep your testing skills sharp and branch out beyond writing tests for automation frameworks. This might require you to understand different coding languages and tools that can be used to extend and improve a development group’s ability to ship quality code. It’s a natural progression, but often companies see it as a place to recruit junior developers. If you want to stay in testing and work with automation, you’ll have to diversify your coding skills to allow you to take on different and more interesting projects related to testing. The Paths Less Taken The harder option is often for folks wanting to stay in testing. Options for testing professionals lead them to specializations in testing. While automation could be considered a specialization in some cases, it’s better to augment a specialization with automation skills. Most jobs will focus on UI automation to some extent. The problem with that focus is that there are so many other kinds of specializations that use automation in different ways. When you can branch out into other specializations around testing, and combine automation with those specialties, you can command a high salary and have your pick of the kinds of jobs you’d like to engage with. Below are examples of different specializations that you could branch into. Each one has its own skills to learn and develop as the industry changes. Testing Specializations One of the more common problems with going into a specialization is trying to find a way to break into or learn skills relating to a specialization. One way is to look for jobs specifically focused on a speciality of your choice and try to start at an entry level with less knowledge. Another way is to develop that knowledge and skill via mentors and workshops. Social networks have a large variety of people doing interesting work in different places. The best place to start with a speciality you are interested in pursuing is to find someone already working in the field that would be willing to mentor you or point to someone that could mentor you into that specialization. Mobile Testing: Testing on and around mobile applications and possibly the hardware to which applications are deployed. Data Analyst: This could be anything from analyzing trends in user data to analyzing and testing data created by an application. Data Testing: Often involves Services, API, and Databases. Making sure data is moving from one place to another, transformed correctly, stored correctly. This requires knowing how different kinds of data are used in an application or several applications. Usability Tester: Works with domain knowledge and understanding of workflows for an application. The ability to ask the user questions about those workflows, and understanding what’s possible with UX/UI designs gives this specialty a creative outlet. It’s also utilized in the skill set of a good UX/UI designer. Accessibility Testing: All kinds of tech needs to be more accessible to folks with a range of accessibility requirements. Someone testing in these areas would need to understand regulations and know how to break down an app to find places that might not meet those standards and regulations. Having empathy and understanding of individuals with accessibility requirements will be key to being successful in this career choice. Security Analysts: Are often testing for vulnerabilities, exploits, and loopholes. It takes on many different forms and sometimes the best security testing is understanding social engineering and how this plays into security concerns. Performance/Load Testing: This kind of testing is used to discover baseline, optimal, and failure handling for various application and network traffic metrics. This is an ever expanding area which can cover a wide variety of use cases and concerns. DevOps: A Tester on an ops team focuses on the testability of the pipeline. They apply lessons learned from automation about how a pipeline can be tested to verify it is performing correctly. It’s a hybrid role that can lead to a transition into ops and infrastructure roles. Quality Coach : This role is important to emerging and transitioning companies often looking for culture and process changes. It’s often a consulting position. Coaches are there to help the whole team thrive and often use their testing skills to teach the whole team testing techniques. Specializations in testing are technical skill sets which are a growing need in the software development market. Having even a small amount of knowledge about any of these specializations can make a Tester extremely valuable to a company. #NGAutomation Building better QA for tomorrow

More
Appium Interview Questions & Answers

Appium Interview Questions & Answers

Question: Explain What Is Appium? Answer : Appium is a freely distributed open source mobile application UI testing framework. Question: Which Language Should I Use To Write My Tests? Answer : This is probably the best thing about Appium: you can write your tests in any language. Since Appium is nothing more than an HTTP server, a test which needs to be interfaced with Appium can simply use HTTP libraries to create HTTP sessions. You just need to know the Selenium protocol in order to compose the right commands and that's it! However, as you can imagine, there are already some libraries doing this for the most common languages and development frameworks out there: C#, [dotnet], [java], Ruby, [python] and Javascript are just few examples; and they all are open source projects. Question: What Type Of Tests Are Suitable and Not Suitable For Appium? Answer : When it comes to testing, especially webview-based apps, there are a lot of scenarios that can be tested also depending on the feature coverage you want to ensure. Appium is pretty handy for testing scenarios that users will go through when using your app. But if you need to test more than UX simple interactions, then Appium will become a limitation. Think about features like keyboarding. It is not so easy when complex touch/keyboard mixed scenarios are involved, the probability of a false failure is high; do not misunderstand me on this: I am not saying it is impossible to do, just not so easy as you might think! Another little nightmare with Appium is exchanging data. When your test needs to exchange data with your app (especially in the incoming direction), you will need to play some tricks. So always consider that sending and receiving information is not that straightforward. It is not Appium's fault, the WebDriver specification was designed for automating stuff, not exchanging data! Question: List Out The Appium Abilities? Answer : Appium abilities are: Test Web Provides cross-platform for Native and Hybrid mobile automation Support JSON wire protocol It does not require recompilation of App Support automation test on physical device as well as similar or emulator both It has no dependency on mobile device. Question: List Out The Pre-requisite To Use Appium? Answer : Pre-requisite to use APPIUM is: ANDROID SDK JDK TestNG Eclipse Selenium Server JAR Webdriver Language Binding Library APPIUM EXE for Windows APK App Info Question: What About Performance impact while running tests using Appium? Answer : Appium is not a huge application and requires very little memory. Its architecture is actually pretty simple and light as Appium acts like a proxy between your test machine and each platform automation toolkit. Once up and running, Appium will listen to HTTP requests from your tests; when a new session is created, a component in Appium's Node.js code called _proxy_ will forward these Selenium commands to active platform drivers. In the case of Android for example, Appium will forward incoming commands to the [chromedriver] (90% of cases, Appium will not even change commands while routing them), this happens because ChromeDriver supports WebDriver and Selenium. For this reason Appium will not allocate much memory itself, you will see a lot of memory being allocated by other processes like [adb], ChromeDriver or the iOS automation toolkit (called by Appium while testing and automating). Internal Advertisement: NGA Overseas Hiring Model Live Now. Model helps connect QA Automation Engineers directly with Overseas Employers for high growth Software Testing Jobs both Remote and Onsite. To know more about the offered service, click here . Question: What Platforms Are Supported? Answer : Appium currently supports Android and iOS, no support for Windows unfortunately. Question: Do I Need A Server Machine To Run Tests On Appium? Answer : No! Appium promotes a 2-tier architecture where a test machine connects to a test server running Appium and automating the whole thing. However this configuration is not mandatory, you can have Appium running on the same machine where your test runs. Instead of connecting to a remote host, your test will connect to Appium using the loopback address. Question: List Out The Limitations Of Using Appium? Answer : Appium does not support testing of Android Version lower than 4.2 Limited support for hybrid app testing. E.g., not possible to test the switching action of application from the web app to native and vice-versa No support to run Appium Inspector on Microsoft Windows and you need to use UIAutomatorViewer supported by Android SDK Question: Explain How To Find Dom Element Or Xpath In A Mobile Application? Answer : To find the DOM element use “UIAutomateviewer” to find DOM element for Android application and Appium Inspector for IOS Application Question: Explain The Design Concept Of Appium? Answer : Appium is an “HTTP Server” written using Node.js platform and drives iOS and Android session using Webdriver JSON wire protocol. Hence, before initializing the Appium Server, Node.js must be pre-installed on the system When Appium is downloaded and installed, then a server is setup on our machine that exposes a REST API It receives connection and command request from the client and execute that command on mobile devices (Android / iOS) It responds back with HTTP responses. Again, to execute this request, it uses the mobile test automation frameworks to drive the user interface of the apps. Question: What Language Does Appium Support? Answer : Appium support any language that support HTTP request like Java, JavaScript with Node.js, Python, Ruby, PHP, Perl, etc. Question: Explain The Pros And Cons Of Appium? Answer : Pros: For programmer irrespective of the platform, he is automating ( Android or iOS) all the complexities will remain under single Appium server It opens the door to cross-platform mobile testing which means the same test would work on multiple platforms Appium does not require extra components in your App to make it automation friendly It can automate Hybrid, Web and Native mobile applications Cons: Running scripts on multiple iOS simulators at the same time is not possible with Appium It uses UIAutomator for Android Automation which supports only Android SDK platform, API 16 or higher and to support the older API’s they have used another open source library called Selendroid. Question: Any Tips Or Tricks To Speed Up My Test Writing Activity while I develop test scripts? Answer : Here is one piece of advice. Since your tests will mostly consist in automation tasks, make interactions reusable! Do not write the same sub-scenarios twice in your tests, make a diagram of what your scenarios are and split them in sub activities; you will get a graph where some nodes are reachable from more than one node. So make those tasks parametric and call them in your tests! This will make your test writing experience better even when you need to migrate from existing tests Question: What Data Exchange Is when you do tesing on Mobile devices? Answer : When I say "data exchange" I am not referring to scenarios like getting or setting the value of a textbox. I am also not referring to getting or setting the value of an element's attribute. All these things are easy to achieve in Appium as Selenium provides commands just for those. By "data exchange" I mean exchanging information hosted by complex objects stored in different parts of your webview-based app like the window object. Consider when you dispatch and capture events, your app can possibly do many things and the ways data flows can be handled are many. Some objects might also have a state and the state machine behind some scenarios in your app can be large and articulated. For all these reasons you might experience problems when testing. Question: Explain What Is Appium Inspector? Answer : Similar to Selenium IDE record and Playback tool, Appium has an “Inspector” to record and playback. It records and plays native application behavior by inspecting DOM and generates the test scripts in any desired language. However, Appium Inspector does not support Windows and use UIAutomator viewer in its option. Question: I Want To Run My Tests In A Multi threaded Environment, Any Problems With That? Answer : Yes! You need some special care when using Appium in a multi threaded environment. The problem does not really rely on the fact of using threads in your tests: you can use them but you must ensure that no more than one test runs at the same time against the same Appium server. As I mentioned, Appium does not support multiple sessions, and unless you implemented an additional layer on top of it to handle this case, some tests might fail. Question: Can you write generic code to generate webdriver instance using Appium APIs for both Android and IOS? Answer: Code for same as below: AppiumDriverFactory.java Class EnvironmentPropertiesReader.java Class Internal Advertisement: NGA Overseas Hiring Model Live Now. Model helps connect QA Automation Engineers directly with Overseas Employers for high growth Software Testing Jobs both Remote and Onsite. To know more about the offered service, click here . config.properties file Question: Write a method to wait for specific element to appear on mobile app? Answer: Question: Write a method to wait for specific element to vanish on mobile app before certain interval? Answer: Question: Write a method to perform single tap using appium? Answer: Question: Write a method to perform double tap using appium? Answer: Question: Write a method to perform touch sequence from one element to other element? Answer: Question: Write a method to perform multi touch sequence containing different elements? Answer: Internal Advertisement: NGA Overseas Hiring Model Live Now. Model helps connect QA Automation Engineers directly with Overseas Employers for high growth Software Testing Jobs both Remote and Onsite. To know more about the offered service, click here . Question: Write a generic method to get any element by any locator in appium? Answer: #NGAutomation Building better QA for tomorrrow

More
Learn Selenium Grid

Learn Selenium Grid

The Problem If you’re looking to run your tests on different browsers and operating system combinations but you’re unable to justify using a third-party solution like Sauce Labs or Browser Stack then what do you do? The Solution With Selenium Grid you can create a network of connected test machines (also called nodes). This network of test machines is controlled by a Hub, using which you can run your tests on different connected nodes. Each node is basically a computer (even a virtual machine) with a combination of Operating system and Browsers. This enables us to create a network of test machines with varying combinations of Operating system and browsers. Using Selenium Grid you can run tests on a variety of Operating System and Browser combinations. Lets understand Selenium Grid in more details below What is Selenium Grid? The Selenium Grid is a testing tool which allows us to run our tests on different machines against different browsers. It is a part of the Selenium Suite which specialise in running multiple tests across different browsers, operating system and machines. You can connect to it with Selenium Remote by specifying the browser, browser version, and operating system you want. You specify these values through Selenium Remote’s Capabilities. There are two main elements to Selenium Grid — a hub, and nodes. What is a Hub? In Selenium Grid, the hub is a computer which is the central point where we can load our tests into. Hub also acts as a server because of which it acts as a central point to control the network of Test machines. The Selenium Grid has only one hub and it is the master of the network. When a test with given DesiredCapabilities is given to Hub, the Hub searches for the node witch matches the given configuration. For example, you can say that you want to run the test on Windows 10 and on Chrome browser with verision XXX. Hub will try to find a machine in the Grid which matches the criterion and will run the test on that Machine. If there is no match, then hub returns an error. There should be only one hub in a Grid. What is a Node? In Selenium Grid, a node is referred to a Test Machine which opts to connect with the Hub. This test machine will be used by Hub to run tests on. A Grid network can have multiple nodes. A node is supposed to have different platforms i.e. different operating system and browsers. The node does not need the same platform for running as that of hub. How it works? First you need to create a hub. Then you can connect (or “register”) nodes to that hub. Nodes are where your tests will run, and the hub is responsible for making sure your tests end up on the right one (e.g., the machine with the operating system and browser you specified in your test). Why the Selenium Grid is used? With Selenium Grid you can create a simple infrastructure of various browsers on different operating systems to not only distribute test load, but also give you a diversity of browsers to work with. The Selenium Grid is used because of many reasons. Here are a few: When we want to run our tests against multiple browsers, the multiple versions of browsers and the browsers running on different operating system. It is also used to reduce the time taken by the test suite to complete a test pass by running tests in parallel. Architecture and RemoteWebDriver WorkFlow You can use RemoteWebDriver the same way you would use WebDriver locally. The primary difference is that RemoteWebDriver needs to be configured so that it can run your tests on a separate machine. The RemoteWebDriver is composed of two pieces: a client and a server. The client is your WebDriver test and the server is simply a Java servlet, which can be hosted in any modern JEE app server. RemoteWebDriveris an implementation class of the WebDriver interface that a test script developer can use to execute their test scripts via the RemoteWebDriver server on a remote machine. There are two parts to RemoteWebDriver: a server(hub) and a client(node) The RemoteWebDriverserver is a component that listens on a port for various requests from a RemoteWebDriver Once it receives the requests, it forwards them to any of the following: Firefox Driver, IE Driver, or Chrome Driver, whichever is asked. The language-binding client libraries that serve as a RemoteWebDriver The client, as it used to when executing tests locally, translates your test script requests to JSON payload and sends them across to the RemoteWebDriverserver using the JSON wire protocol. When you execute your tests locally, the WebDriver client libraries talk to your Firefox Driver, IE Driver, or Chrome Driver directly. Now, when you try to execute your tests remotely, the WebDriver client libraries talk to the RemoteWebDriverserver and the server talks to either the Firefox Driver, IE Driver, or Chrome Driver, whichever the WebDriver client asks for. How to Set Up Selenium Grid? Using Command Line In this section, you will use 2 machines. The first machine will be the system that will run the hub while the other machine will run a node. For simplicity, let us call the machine where the hub runs as "Machine A" while the machine where the node runs will be "Machine B." It is also important to note their IP addresses. Let us say that Machine A has an IP address of 192.168.1.3 while Machine B has an IP of 192.168.1.4. Step 1: Download the Selenium Server from http://docs.seleniumhq.org/download/ Step 2: You can place the Selenium Server .jar file anywhere in your HardDrive. But for the purpose of this tutorial, place it on the C drive of both Machine A and Machine B. After doing this, you are now done installing Selenium Grid. The following steps will launch the hub and the node. Step 3: We are now going to launch a hub. Go to Machine A. Using the command prompt, navigate to the root of Machine A's - C drive, because that is the directory where we placed the Selenium Server.On the command prompt, type java -jar selenium-server-standalone-2.30.0.jar -role hub The hub should successfully be launched. Step 4: Another way to verify whether the hub is running is by using a browser. Selenium Grid, by default, uses Machine A's port 4444 for its web interface. Simply open up a browser and go to http://localhost:4444/grid/console Also, you can check if Machine B can access the hub's web interface by launching a browser there and going to where "iporhostnameofmachineA" should be the IP address or the hostname of the machine where the hub is running. Since Machine A's IP address is 192.168.1.3, then on the browser on Machine B you should type http://192.168.1.3:4444/grid/console Step 5: Now that the hub is already set up, we are going to launch a node. Go to Machine B and launch a command prompt there. Navigate to the root of Drive C and type the code below. We used the IP address 192.168.1.3 because that is where the hub is running. We also used port 5566 though you may choose any free port number you desire. NOTE: You now have to give path to the Gecko driver if using Firefox. Here is updated code that needs to be used java -Dwebdriver.gecko.driver="C:\geckodriver.exe" -jar selenium-server-standalone-3.4.0.jar -role webdriver -hub http://192.168.1.3:4444/grid/register -port 5566 When you press Enter, node gets started Step 6: Go to the Selenium Grid HUB web interface and refresh the page. You should see detailed of registered node. Open below URL to check node registration at Hub Machine: http://localhost:4444/grid/console At this point, you have already configured a simple grid. You are now ready to run a test remotely on Machine B. Designing Test Scripts That Can Run on the Grid To design test scripts that will run on the grid, we need to use DesiredCapabilites and the RemoteWebDriver objects. DesiredCapabilites is used to set the type of browser and OS that we will automate RemoteWebDriver is used to set which node (or machine) that our test will run against. To use the DesiredCapabilites object, you must first import this package import org.openqa.selenium.remote.DesiredCapabilities; To use the RemoteWebDriver object, you must import these packages. import java.net.MalformedURLException; import java.net.URL; import org.openqa.selenium.remote.RemoteWebDriver; Using the DesiredCapabilites Object We will use the platform and the browserName in our WebDriver as shown below (of course you need to import the necessary packages first). DesiredCapabilities capability = DesiredCapabilities.firefox(); capability.setBrowserName("firefox"); capability.setPlatform(Platform.XP); Using the RemoteWebDriver Object Import the necessary packages for RemoteWebDriver and then pass the DesiredCapabilities object that we created above as a parameter for the RemoteWebDriver object. Webdriver driver; driver = new RemoteWebDriver( new URL("http://192.168.1.4:5556/wd/hub"),capability); Running a Sample Test Case on the Grid Below is a simple WebDriver Testng code that you can create in Eclipse on Machine A. Once you run it, automation will be performed on Machine B. The test should pass. #NGAutomation Building better QA for tomorrow

More
Automation Architecture for Complex Business Applications

Automation Architecture for Complex Business Applications

A Typical Automation Architecture for complex business application contain following major components: 1. Core Framework: This Layer as automation developer, apply maximum automation design principles and contains functionality related to Driver Initialization, Utility or Helper Functions like Excel Reader, Data Base Reader, Report Generator, 3rd Party Integration Plugins Like ALM, Jira and Wrapper Functions for Open Source Libraries like Selenium, Appium, White UI 2. Page Object: Every business application span across multiple pages and multiple modules. Its good practice to have page objects specific to every page and if page complexity high it can be further break up into multiple page objects 3. Work Flow Classes: Work Flow Classes simulate multiple business operations and invoke multiple Page Objects to simulate business flows that span across multiples Pages or Modules. 4. Test Scripts: Contains Test Methods that contain multiple work flow methods defined in work flow classes. 1 Test Method generate 1 test script that may be simiple, medium or complex as per business functionality need to be automated #NGAutomation Building better QA for tomorrow

More
E-mail Etiquette must for QAs to follow

E-mail Etiquette must for QAs to follow

E-mail Etiquette very important for QAs to follow as major firings or appraisal ratings downgrade which happened for QAs always take consideration of mails sent by QAs either to their teams, other groups or immediate boss and in some cases directly to Company HR. So it's very important to use this professional tool very intelligently and full care must be checked while sending any mail through your official email address: Here are E mail Etiquette tips compiled by Next Generation Automation team that going to help every QA significantly. 1. Do have a clear subject line. Always make your subject line crisp and match with body of email. Avoid ambiguous Subject line statements which let others to take advantage of your mails in their favor. 2. Do use a professional salutation. Using “Hey,” “Yo,” or “Hiya” isn’t professional, no matter how well you know the recipient. Use “Hi” or “Hello” instead. To be more formal, use “Dear (insert name).” Using the person’s name in the salutation -- “Hello Ankur” -- is quite appropriate, but remember not to shorten a person's name unless you're given permission to do so. 3. Don't use humor. Humor does not translate well via email. What you think is funny has a good chance of being misinterpreted by the other person, or taken as sarcasm, without the accompanying vocal tone and facial expressions. When in doubt, leave humor out of business communications. 4. Do proofread your message. Don't be surprised if you're judged by the way you compose an email. For example, if your email is littered with misspelled words and grammatical errors, you may be perceived as sloppy, careless, or even uneducated. Check your spelling, grammar and message before hitting “send.” 5. Don't shoot from the lip and comes in your mail. One of important reason for firing QAs by any major MNC now a days. Never send an angry email, or give a quick, flip response. Give your message some thoughtful consideration before sending it. If you feel angry, put your message into the “drafts” folder, and review it again later when you are calmer and have time to formulate an appropriate response. Angry mail always trigger HR meeting and in major cases it results in removal of employee especially if business justification of employee especially QA not very great 6. Do keep private material confidential It is far too easy to share emails, even inadvertently. If you have to share highly personal or confidential information, do so in person or over the phone. Ask permission before posting sensitive material either in the body of the email or in an attachment. 7. Never send project information to your personal email address Some QAs by mistake send project related information to personal email addresses which gets caught by company firewall. So always avoid sending mails outside official email address unless authorize to do so. 8. Don't! overuse exclamation points Exclamation points and other indications of excitement such as emoticons, abbreviations like LOL, and all CAPITALS do not translate well in business communications. Leave them off unless you know the recipient extremely well. It’s also not professional to use a string of exclamation points!!!!! 9. Never hit reply all unless needed Beware of the "reply all." Do not hit "reply all" unless every member on the e-mail chain needs to know. You want to make sure that you are not sending everyone on a list your answer whether they needed to know or not. 10. Pick up the phone or call meetings when in need, Never rely 100% on business e mails When a conversation topic has lots of parameters that need to be explained or negotiated and will generate too many questions and confusion, don't handle it via e-mail. Also, e-mail should not be used for last minute cancellations of meetings, lunches, interviews, and never for devastating news. If you have an employee or a friend you need to deliver bad news to, a phone call is preferable. If it's news you have to deliver to a large group, e-mail is more practical. 11. Use E mail priority carefully Evaluate the importance of your e-mail. Don't overuse the high priority option. If you overuse this feature, few people will take it seriously. A better solution is to use descriptive subject lines that explain exactly what a message is about. 12. Include Signature when needed: Always include a signature when required. You never want someone to have to look up how to get in touch with you. If you're social media savvy, include all of your social media information in your signature as well. Your e-mail signature is a great way to let people know more about you. Hope every QA liked the E mail Etiquette tips compiled by Next Generation Automation team. Stay connected and keep reading other blogs published by Next Generation Automation team for your better career. #NGAutomation Building better QA for tomorrow

More
Read Automation E Books to boost your Career as Expert QA

Read Automation E Books to boost your Career as Expert QA

Read Automation E Books to boost your Career as Expert QA Reading E Books very important now a days as technology becomes more and more complex. But very few QAs understand this and able to get maximum returns in form of best salary packages, onsite travels, working at companies that they dream, part of project teams that they dream and many others. Next Generation Automation Blog "Read Automation E Books to boost your Career as Expert QA" help you in achieving maximum in shorter time frame. Must read the blog complete to get maximum returns. Here are strategies that help you maximum in enriching your skills with new technologies or topics where you are currently struggling to understand and not finding effective mentor ship. 1. Get Habit of Reading E Books Our research concludes any QA Engineer who put efforts in getting information from E Books always have better technical skills compare to rest QAs. 2. E Books vs Online Videos for Notes Preparation As you study any technology, notes play an important role to make sure you just not only understand the sections of technology but also able to use it in your live projects and again E Books have more weight-age as it helps you generating notes quickly compare to when you watch online videos. 3. Schedule the time to read and recall session Apply your engineering days lifestyle even in professional life. If you remember during college days, we used to set hours every day when we read our lecture notes as taken during class rooms and practice it to make sure we learn everything as per subject. Same principle you need to apply when you read E Books, Allocate specific time slot from your entire day when you have to read E Book as per need to enhance your current skill sets. 4. Set up a special reading area with no distractions When ever you read E Books make sure your mobile in silent mode to be picked only for important calls and any noise should not be there that distract you from reading 5. No speed-reading, neither quick reading In the century of efficiency, we are trying to absorb the information as soon as possible. But reading demands time. All it benefits are not seen immediately. Usually, after you’ve read the big part of the book. Speed reading is not working while understand complex technology where you are still learning phase. 6. Read in stages Start by reading the title of the E Book, the publisher’s blurb (if there is any), the preface or introduction, and then study the table of contents. Then start reading parts of the sections that you discovered are most relevant to you (summary paragraphs at the beginning or end of chapters are especially good to read when prereading). Go to the questions at the end. Read them, answer them to the best of your ability, and then begin your actual reading strategies. This will sort of “prime the engine” of retention. Look at the headings and subdivision of the chapter. Sketch a mind map about what you are reading while you are reading it 7. Come back to difficult points Read the whole book. Try not to spend too much time. Let’s say “high-level reading”. Understand the book content, don’t focus on details now. Do not try to clarify or understand everything. Make a note and move forward. When you finished the book then work slowly in reading the important areas, come back to those parts and clarify all of them. Look at additional or recommended reading, read them one more time, find references, examples, real-time implementations of tough concepts. As a result, it shouldn’t be any black holes in the material you study. Don’t be afraid to take a step back. Trust me you won’t be wasting your time – repeating is reinforcing. So even if you’ve covered the topic before, going over it again will still be highly beneficial. After every tough topic take a moment to try to recollect connections, dependencies and visualize. To really ingrain the concept. Make a point to go over what you’ve studied because this will help reinforce what you’ve learnt. Making notes are better than not to make them. My point is: don’t limit your study techniques with just taking notes. Make them clever. Do not conspectus. Ask questions and search for the answers. To organize the notes try to use Evernote or simply buy a notebook if you prefer to write by hand. The most important thing is asking the questions. Questions force you to stop, think, explain what you read. This is true learning. So close the book after a few minutes of reading, and explain back to yourself what you’ve just learned. Knowledge like repetition. So the key ideas will always be at a distance from the hands of their practical use. 8. Apply the knowledge on practice Just reading E Book never let you successful. To get more expertise, you need to practice learnt concepts harder till you master it. And best way to do is Open you favorite IDE, take the code snippets as described in E Book and try to execute and put in action. More you do it more perfection you get. At Next Generation Automation, Our experts have similar thoughts as mentioned in post and this makes them generate Book Bank for benefit of QAs. You can get the Book Bank right today in just 10 minutes. Click below internal advertisement promoted by Next Generation Automation to know more: #NGAutomation Building better QA for tomorrow

More
S.O.L.I.D Design Principles for Automation Developers

S.O.L.I.D Design Principles for Automation Developers

S.O.L.I.D Design Principles very important to understand by expert QAs if they look for Architect kind of roles. Todays business applications much more complex than ever and it demands automation development not to be less than software development. This makes QA's who venture into automation world 4 to 5 year's back, it's very important to understand S.O.L.I.D design principles while doing automation. Also it going to be very helpful during interview's especially Overseas interview's supported by Go Europe Model from Next Generation Automation Principle 1: Single Responsibility Principle (SRP) A class should have one, and only one, reason to change.In other words to achieve this, a class should only have a single responsibility and it should do that very well. Every class in your automation should only have a single responsibility and that all of its methods should be aligned with that responsibility. Let’s try to understand this principle by looking at an example from our daily life. When you are driving a car/bike, you want to fully concentrate on the single responsibility – driving. You don’t want to do or concentrate on other tasks like talking on a phone, eating. Automation Examples: a) Page Object Framework implements SRP very well. We are going to have one class responsible for only one web page in the application. We shouldn’t have a very big class with many responsibilities like test methods, UI action methods, excel read/write methods. b) We can have very specific helper classes like ExcelHelper, DatabaseHelper to work with a excel file or database to implement Data Driven Framework. c) Selenium API has browser specific driver classes like FirefoxDriver, ChromeDriver, InternetExplorerDriver. FirefoxDriver has single responsibility to drive the Firefox browser and it drives the Firefox browser very well. We should also have methods in classes that are very specific like loginAs(username, password) to login with given username and password, testSuccessfulLogin (username,password) which tests only one thing that login should be successful with valid username/password. Principle 2: Open Closed Principle (OCP) Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification You should be able to easily add additional functionality for a class without changing its code. OCP says that a class should be open for extension and closed for modification. The “closed” part of the rule states that once a class has been developed and tested, the class code shouldn’t change except for any bug fixes. The “open” part of the rule states that you should be able to extend existing code in order to introduce new functionality. We are trying to add new functionality without modifying the existing code/functionality and by adding new classes/code as required. This is very important to minimise the impact of changes and errors from existing code. Let’s try to understand this principle by looking at an example from our daily life. Let’s say you live in a 2 bedroom house and you are looking for a 3 bedroom house due to reasons like growing children. If you have free/unused space available, it’s very easy to extend the house by building another bedroom. Also with this, you are minimise the impact of changes on the existing 2 bedroom house. Automation Example: Let’s say that you are automating an online store application. You have Customer class to represent store customers and respective related customer actions. Now, your company has introduced VIP customer concept to reward loyal customers with discounts and free delivery. To implement VIP customer behaviour in your automation, OCP suggests that keep the Customer class same without modifying it and create a new VipCustomer class by inheriting from Customer class. Now in the VipCustomer class extend the behaviour as required. Principle 3: Liskov Substitution Principle (LSP) Subtypes must be substitutable for their base types When you pass subtype for a base type argument or when you assign/instantiate base type with subtype, the program/code should work properly without changing its behaviour and shouldn’t break. This principle was introduced by and named after Barbara Liskov. Let’s try to understand this principle by looking at an example from our daily life. Let’s say that you have a wall clock at home or you have a wrist watch. They both need batteries to work. If you buy batteries as per the specifications from any brand like Panasonic, Sony, Duracell, you expect the wall clock or wrist watch to work properly without any issues when powered by those batteries. Automation Example: Considering the above example of automating an online store application with Customer and VIP Customer categories, let’s say there is a method calculateDeliveryCharge(Customer customer, OrderInfo orderInfo) which calculates delivery charge when customer and order information is passed. When we pass Customer object to calculateDeliveryCharge() method with order information, it should return delivery charge. Note that we are providing free delivery to VIP Customers. So, when we pass VipCustomer object for customer argument to calculateDeliveryCharge() method with order information, the program/code should work properly without changing its behaviour and shouldn’t throw any exceptions. Principle 4:Interface Segregation Principle (ISP) Make fine grained interfaces that are client specific It’s good to have small role specific interfaces rather than one big general interface. ISP states that clients should never be forced to implement interfaces that they don’t use or clients should never be forced to depend on methods that they don’t use. When a class depends upon another class, the number of members visible from the another class to the dependent class should be minimised. When you apply the ISP, classes implement multiple smaller role specific interfaces and dependent classes depend on required role specific interfaces for the given task. Let’s try to understand this principle by looking at an example from our daily life. When you are travelling in a train and when ticket inspector wants to check your ticket, you will be showing only your ticket and not all your luggage. Similarly, ticket inspector wants to check your ticket only and not any other belongings of you. We should reveal/expose only what’s required for the given task. Automation Example: Selenium API has good examples of ISP. Selenium API has a number of very fine grained, role based client specific interfaces like WebDriver, WebElement, Alert. We should favour role based interfaces instead of generic interfaces. Principle 5: Dependency Inversion Principle (DIP) Depend on abstractions, not on concretions DIP states that Software entities (classes, modules, functions, etc.) should depend on abstractions (like interfaces) and not on concretions (like concrete class types). DIP promotes code to an interface approach. For example, in Selenium automation code, we code to a WebDriver interface variable “driver” whenever we want to work with web browser and the same code works for any browser type like FirefoxDriver, ChromeDriver, InternetExploerDriver which implements the WebDriver interface. DIP mainly suggests below 2 rules: High level modules should not depend upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions. Let’s try to understand this principle by looking at an example from our daily life. When you go to a cash machine/ATM, the cash machine/ATM expects a valid debit/credit card. The machine has a dependency on valid card abstraction and not on specific concrete type cards like only Visa, only Maestro or only issued by specific bank. The machine works for any valid card type implementation and we are providing the card to the machine from outside which provides so much flexibility and easiness to use the machine. Automation Example: Look at below page object for Login Page public class LoginPage { private WebDriver driver; public LoginPage(WebDriver driver) { this.driver = driver; } public UserWelcomePage loginAs(String username, String password) { driver.findElement(By.id("username")).sendKeys(username); driver.findElement(By.id("password")).sendKeys(password); driver.findElement(By.name("login")).click(); return new UserWelcomePage(driver): } } We can observe following with respect to DIP from above LoginPage class: It is depending on the abstraction and all the code is written against WebDriver interface so that the code can work with any implementation like FirefoxDriver, ChromeDriver, InternetExploerDriver The implementation for the WebDriver interface should be passed by the client through constructor LoginPage(WebDriver driver) when creating the LoginPage object. So the code works for any implementation and we can pass the implementation when creating the object. This gives us lot of flexibility and it will be easy to maintain. If you like this post, don’t forget to look at Next Generation Go Europe Model . Build for QAs, by QAs. #NGAutomation Building better QA for tomorrow

More
10 Years in IT, All in Manual...

10 Years in IT, All in Manual...

Here are strategies that might help you to great extent: 1. Take Career Break or Put Extra Efforts If you have strength, resign right away. No doubt it will be painful but this pain much less than when 15 years in IT and complete manual. Or if don't want to resign start putting extra efforts along with Job. Consider your self growth as part time job for your own benefit in long run. 2. Build Plan before start putting efforts Prepare plan for automation, Its automation that save you in this scenario. Planning plays important role for career uplift. Don't miss this important phase. 3. Understand which technologies to learn List down all tools, technologies that you want to learn. Next 1 year give for your self growth. Any problems in preparing list mail us at info@nextgenerationautomation.com. we would be happy to help you. 4. Do Googling every day Browse Google and start collecting information for plan that you have created. Example Learn Selenium with Java next 3 months. 5. Do Youtube viewing Open You tube and browse maximum view count videos applicable as per your plan 6. Read Automation Blogs Open blogs and and collect good information. Next Generation Automation blog 1 of blog that will help you in this phase. Link: https://www.nextgenerationautomation.com/blog 7. Join Online Courses Enroll for online courses from Udemy.com as per your plan. 8. Do Hands on as much as possible Open IDE and write code as much as possible, just don't scare. Remember coding is most beautiful thing in IT. When you write code, use best coding practices to write as effective code as possible. 9. Notes Preparation Prepare your notes for all steps and push in your google drive as you done. Notes help you tremendously in future when you need to back track what all you have learnt. 10. Repeat Above Steps for all leaning plans Follow this practice for 1 full year and after 1 year you never feel scare for your survival in IT. Thank You! Ankur Chaudhry Founder Next Generation Automation #NGAutomation Building better QA for tomorrow

More
4 Layer Modelling for QA Growth

4 Layer Modelling for QA Growth

4 Layer Modelling must for QA Let's under stand how 4 Layer Modelling for QA can help them achieve new highs in their IT Career Layer 1: Manual Testing You need to understand testing principles in this phase that includes testing types, test case creation, test execution, test reporting and test management Layer 2: Programming Once you done with manual, start learning programming, Pick language you are passionate about, Some QAs like Java, Some QAs like C#, Some QAs like JavaScript and list goes on. Layer 3: Tools and Technologies Once you get hold of programming skills, next step is learn tools and technologies. All tools based on some programming language like Selenium works with Java,C#, Python and others, UFT works with VB Script, Test Complete works with JScript, Java Script and others, WebDriver IO works with Java Script, Machine Learning works with Python and R Layer 4: Architecture Whatever learn in Step 1,2,3 you need to apply in this layer and see how complex automation solutions can be generated when layers 1,2,3 get connected. Learn every layer by heart, Next Generation Go Europe Model waiting for you to get on board shortly. Thank You! Ankur Chaudhry Founder Next Generation Automation #NGAutomation Building better QA for tomorrow

More
Interview Success Tips

Interview Success Tips

To be successful during interview never an easy task as it requires not just technical skills but lot of other factors which you need to work well before interview. This blog helps every QA understand best strategies / tips that need to be worked at well before you set yourself for any interview whether Domestic or Overseas. #1. Knowledge about Company Business Always do your homework well before walking into an interview. Make sure you have complete knowledge about the company and the role. Collect the basic facts about the company. This includes what kind of business they do, in what all areas they operate, how old are they, etc. Read the job description very carefully and check if you fit into the role. You should apply for the job only if the job description matches your profile. Get to know about the company culture. To do this, you can check reviews of the company over glassdoor website or you can visit ‘About us’ section on the company’s website. Also, identify some the major competitors of the company and figure out what sets this company apart from its competitors. #2. Know yourself Remember the first impression is the last impression. Demonstrate your capabilities and qualities and how well you can serve them. Don't be overconfident and aggressive. Research yourself, ask yourself what your objectives are, what short-term & long-term goals you have, know your CV and prepare your answers. #3. Competency and Transferable skills Knowledge You should know your competency and transferable skills. Competency skills are the skills matching your job profile and transferable skills are the ones which you have acquired through other jobs and personal activities. Employers typically use some of the following as their key competencies: Top Technical Skills Teamwork Responsibility Commitment to career Commercial awareness Career motivation Decision-making Communication Leadership Trustworthiness & Ethics Results orientation Problem-solving Organisation #4. Be Clear Be clear about what you want to achieve in life and about your career objective. It will keep you focused and perform better during interview. Never bluff, include all your relevant skills and experience to give you a competitive edge. #5. Technical Preparation Prepare well for an interview. You can make notes of interview questions which are most likely to be asked. Practice your answers. This will boost your confidence. You can refer Next Generation Automation Interview Section Blog and other blog sections to help you get prepared for interview. URL: https://www.nextgenerationautomation.com/blog #6. Communication Skills Work on your communication skills. Remember having a good technical knowledge without effective interpersonal skills will not take you anywhere. Be expressive and a good conversationalist. Dazzle the interviewers with eloquent speech. Top 10 communication skills for workplace success are: Listening Nonverbal communication Clarity and concision Friendliness Confidence Empathy Open-mindedness Respect Feedback Picking the right medium #7. Marketing Strengths Make sure you can support your strengths by giving examples. You can prepare before but don't falter while talking. It will not create a good impression. #8. Accept Weaknesses When asked about your weaknesses, acknowledge them. If you are not able to describe your weaknesses, then it signifies that you lack self-awareness. You can’t be perfect in everything. Your weakness should be in such manner that it not going to impact Employer business at any cost. #9. Look Nice Always be presentable while dressing for the interview. Your attire should be per the role, culture and yourself. Please, no tacky and brash clothing and accessories. You don't need to be glammed up. #10. Self Moral Boost Spend time on personal grooming. This will keep you calm. You don't have to present yourself as a person full of nervous energy and fidgets. #11. Be relax, Its just interview On the interview day, relax. Be comfortable and wear a smile. You will definitely crack the interview. #12. Maintain Strong body language Your body language is very important.Your facial expressions, hand movements, posture, voice, and pace should be in sync and send the same message that you want to convey. #13. Maintain Eye Contact with interviewer when answer Don't forget to make an eye contact. Your voice should be enthusiastic and do not stammer. Lack of enthusiasm will put off the interviewers. #14. Reach 15 minutes before time for F2F and 5 minutes before telephonic / skype calls Be on time, preferably 15 minutes before so you get time to settle down and calm your nerves. #15. Show your best manners Interview manners are very important. Mind your manners, when it comes to interviews. Bad manners will definitely be a turn-off. Don't bang the door, shake handily firmly, ask if you can take a seat, sit up straight and do not slouch. #16. Never chase bigger asks for salary even if asked by employer When asked about remuneration, you don't have to be blunt. Instead, you can say that you expect a fair raise in terms of qualifications and experience proportionate with peers. Now that you have some good interview tips. Be confident, gear up and don't let yourself down. Remember this is not the end of life if you don't get through to the process. It’s just an interview. Next Generation Automation Team wish every QA Good luck for interview success. #NGAutomation Building better QA for tomorrow

More
Java Interview Questions & Answers

Java Interview Questions & Answers

Question: What is Java? Answer: Java is a programming language and computing platform first released by Sun Microsystems in 1995. There are lots of applications and websites that will not work unless you have Java installed, and more are created every day. Java is fast, secure, and reliable. From laptops to datacenters, game consoles to scientific supercomputers, cell phones to the Internet, Java is everywhere! Question: Mention some features of Java? Answer: Some of the features which play important role in the popularity of java are as follows: a) Simple: Java is easy to learn. Eventhough Java is based on C++ , it was developed by eliminating poor programming practices of C++. b) Object-Oriented: Java is a object oriented programming language. Everything in Java is an Object. c) Portable: Java run time environment uses a bytecode verification process to make sure that code loaded over the network doesn’t violate Java security constraints. d) Platform independent: Java is platform independent. Java is a write once, run anywhere language. Without any modifications, we can use a program in different platforms. e) Secured: Java is well known for its security. It delivers virus free systems. High Performance: Java enables high performance with the use of JIT (Just-In-Time) compilers f) Multithreaded: Java Multithreaded features allows us to write programs that can perform many tasks simulatenously. Multithreading concept of Java shares a common memory area. It doesn’t occupy memory for each thread. Question: What is the difference between Declaration and Definition in Java? Answer: Declaration: If you just declare a class or method/function or variable without mentioning anything about what that class or method/function or variable looks like is called as declaration in Java. Definition: If you define how a class or method/function or variable is implemented then it is called definition in Java. When we create an interface or abstract class, we simply declare a method/function but not define it. Question: What is an Object in Java? Answer: An object is an instance of a class. Objects have state (variables) and behavior (methods). Example: A dog is an object of Animal class. The dog has its states such as color, name, breed known as variables, and behaviors such as barking, eating, wagging her tail. Syntax: Question: What is a Class in Java? Answer: A class can be defined as a collection of objects. It is the blueprint or template that describes the state and behavior of an object. Syntax: Question: What is Constructor in Java? Answer: Constructor in Java is used in the creation of an Object that is an instance of a Class. Constructor name should be same as class name. It looks like a method but its not a method. It wont return any value. We have seen that methods may return a value. If there is no constructor in a class, then compiler automatically creates a default constructor. Question: What is Local Variable, Instance Variable & Class variable in Java? Answer: Local Variable: Local variable is a variable which we declare inside a Method. A method will often store its temporary state in local variables. Instance Variable (Non-static): Instance variable is a variable which is declared inside a Class but outside a Method. We don’t declare this variable as Static because these variables are non-static variables. Class Variable (Static): Class variable is a variable which is declared as Static. Additionally, the keyword final could be added to include that the value will never change. Example: Question: What are the OOPs concepts? Answer: OOPS Stands for Object Oriented Programming System. It includes Abstraction, Encapsulation, Inheritance, Polymorphism, Interface etc., Question: What is Inheritance in Java? Answer: Inheritance is a process where one class inherits the properties of another class Question: What is Polymorphism? Answer: Polymorphism allows us to perform a task in multiple ways. Let’s break the word Polymorphism and see it, ‘Poly’ means ‘Many’ and ‘Morphos’ means ‘Shapes’ In picture below, Same Gentleman can take different roles like Father, Employee, Shopper as per need etc. Question: What are the types of Polymorphism? Answer: There are two types of Polymorphism in Java 1. Compile time polymorphism (Static binding) – Method overloading 2. Runtime polymorphism (Dynamic binding) – Method overriding We can perform polymorphism by ‘Method Overloading’ and ‘Method Overriding’ Question: What is Method Overloading? Answer: A class having multiple methods with same name but different parameters is called Method Overloading. There are three ways to overload a method. a) Parameters with different data types b) Parameters with different sequence of a data types c) Different number of parameters Question: What is Method Overriding? Answer: Declaring a method in child class which is already present in the parent class is called Method Overriding. In simple words, overriding means to override the functionality of an existing method. In this case, if we call the method with child class object, then the child class method is called. To call the parent class method we have to use super keyword. Question: What is Abstraction in Java? Answer: Abstraction is the methodology of hiding the implementation of internal details and showing the functionality to the users. Abstraction In Java Example: Mobile Phone. A layman who is using mobile phone doesn’t know how it works internally but he can make phone calls. Question. What is Abstract Class in Java? Answer: We can easily identify whether a class is an abstract class or not. A class which contains abstract keyword in its declaration then it is an Abstract Class. Syntax: abstract class <class-name>{} Points to remember: a) Abstract classes may or may not include abstract methods b) If a class is declared abstract then it cannot be instantiated. c) If a class has abstract method then we have to declare the class as abstract class d) When an abstract class is subclassed, the subclass usually provides implementations for all of the abstract methods in its parent class. However, if it does not, then the subclass must also be declared abstract. Question: What is Abstract Method? Answer: An abstract method is a method that is declared without an implementation (without braces, and followed by a semicolon), like this: abstract void myMethod(); In order to use an abstract method, you need to override that method in sub class. Question: What is Interface in Java? Answer: An interface in Java looks similar to a class but both the interface and class are two different concepts. An interface can have methods and variables just like the class but the methods declared in interface are by default abstract. We can achieve 100% abstraction and multiple inheritance in Java with Interface. Question: What is Encapsulation in Java? Answer: Encapsulation is a mechanism of binding code and data together in a single unit. Let’s take an example of Capsule. Different powdered or liquid medicines are encapsulated inside a capsule. Likewise in encapsulation, all the methods and variables are wrapped together in a single class. Second View: Question: Write a program to print the pattern given below 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 Answer: Question: Write a program to print Fibonacci Series up to count 10. Answer: Question: How to reverse a String in Java? Answer: Second Approach: Question: How To Find The Largest Value From The Given Array. Answer: Question: How to display all the prime numbers between 1 and 100 Answer: The number which is only divisible by 1 and itself is known as a prime number. For example 2, 3, 5, 7, 11… are prime numbers. Question: How to display all the prime numbers between 1 and n (n is the number, get the input from user) Answer: Question: How to find the given number is a prime number or not by getting input from the user ? Answer: Question: Write a program to print Fibonacci Series? Answer: Method 1: Method 2: Question: Difference between Array and ArrayList? Answer: Array: Array is static Size of the array should be given at the time of array declaration. We cannot change the size of array after creating it Array can contain both primitive data types as well as objects Arrays are multidimensional ArrayList: ArrayList is dynamic Size of the array may not be required. It changest the size dynamically. Capacity of ArrayList increases automatically whenever we add elements to an ArrayList ArrayList cannot contain primitive data types. It contains only objects ArrayList is always single dimension Question: Difference between ArrayList and HashSet in Java? Answer: ArrayList: ArrayList implements List interface ArrayList allows duplicates ArrayList is an ordered collection and maintains insertion order of elements ArrayList is backed by an Array ArrayList is an index based In ArrayList, we can retrive object by calling get() method or remove object by calling remove() method HashSet: HashSet implements Set interface HashSet doesn’t allow duplicates HashSet is an unordered collection and doesn’t maintain insertion order HashSet is backed by an HashMap instance HashSet is object based In HashSet, we can’t achieve get() method Question: What are the different access modifiers available in Java? Answer: Access modifiers are subdivided into four types such as Default, Public, Private, Protected a) default: The scope of default access modifier is limited to the package only. If we do not mention any access modifier, then it acts like a default access modifier. b) private: The scope of private access modifier is only within the classes. Note: Class or Interface cannot be declared as private c) protected: The scope of protected access modifier is within a package and also outside the package through inheritance only. Note: Class cannot be declared as protected d) public: The scope of public access modifier is everywhere. It has no restrictions. Data members, methods and classes that declared public can be accessed from anywhere. Question: Difference between static binding and dynamic binding? Answer: 1. Static binding is also known as early binding whereas dynamic binding is also known as late binding. 2. Determining the type of an object at compile time is Static binding whereas determining the type of an object at run time is dynamic binding 3. Java uses static binding for overloaded methods and dynamic binding for overridden methods. Question: Difference between Abstract Class and Interface? Answer: ABSTRACT CLASS To declare Abstract class we have to use abstract keyword In an Abstract class keyword abstract is mandatory to declare a method as an abstract An abstract class contains both abstract methods and concrete methods(method with body) Compiler treats all the methods as abstract by default An abstract class provides partial abstraction An abstract class can have public and protected abstract methods An abstract class can have static, final or static final variables with any access modifiers An abstract class can extend one class or one abstract class Abstract class doesn't support multiple inheritance INTERFACE: To declare Interface we have to use interface keyword In an Interface keyword abstract is optional to declare a method as an abstract. An interface can have only abstract methods An interface provides fully abstraction An interface can have only public abstract methods An interface can have only public static final variables An interface can extend any number of interfaces Interface supports multiple inheritance Question: What is Multiple Inheritance? Answer: If a class implements multiple interfaces, or an interface extends multiple interfaces then it is known as multiple inheritance. Question: How to create singleton class in java? Answer: 1. Declare a private constructor to prevent others from instantiating the class. 2. Create the instance of the class either during class loading in a static field/block, or on-demand in a static method that first checks whether the instance exists or not and creates a new one only if it doesn’t exist. Example: Eagerly Initialized Singleton : Class loading in a static field Eagerly Initialized Static Block Singleton: Class loading in a static block Lazily Initialized Singleton: On-demand in a static method #DEVELOPMENTINPROGRESS

More
API Testing Interview Questions & Answers

API Testing Interview Questions & Answers

Question: What is an API? Answer: An API (Application Programming Interface) is a software intermediary that enables two applications to communicate with each other. It comprises a number of subroutine definitions, logs, and tools for creating application software. In an API testing interview, you could be asked to give some API examples, here are the well-known ones: Google Maps API, Amazon Advertising API, Twitter API, YouTube API, which can be used to perform different CRUD Ope Question: What are main differences between API and Web Service? Answer: All Web services are APIs but not all APIs are Web services. Web services might not contain all the specifications and cannot perform all the tasks that APIs would perform. A Web service uses only three styles of use: SOAP, REST and XML-RPC for communication whereas API may be exposed to in multiple ways. A Web service always needs a network to operate while APIs don’t need a network for operation.rations. Question: What are some architectural styles for creating a Web API? Answer: Below are four common Web API architectural styles: a) HTTP for client-server communication b) XML/JSON as formatting language c) Simple URI as the address for the services d) Stateless communication Question: Who can use a Web API? Answer: Web API can be consumed by any clients which support HTTP verbs such as GET, PUT, DELETE, POST. Since Web API services do not require configuration, they can be easily used by any client. In fact, even portable devices such as mobile devices can easily use Web API, which is undoubtedly the biggest advantage of this technology. Question: What is API Testing? Answer: API testing is a kind of software testing which determines if the developed APIs meet expectations regarding the functionality, reliability, performance, and security of the application. Question: What are the advantages of API Testing? Answer: a) Test for Core Functionality: API testing provides access to the application without a user interface. The core and code-level of functionalities of the application will be tested and evaluated early before the GUI tests. This will help detect the minor issues which can become bigger during the GUI testing. b) Time Effective: API testing usually is less time consuming than functional GUI testing. The web elements in GUI testing must be polled, which makes the testing process slower. Particularly, API test automation requires less code so it can provide better and faster test coverage compared to GUI test automation. These will result in the cost saving for the testing project. c) Language-Independent: In API testing, data is exchanged using XML or JSON. These transfer modes are completely language-independent, allowing users to select any code language when adopting automation testing services for the project. d) Easy Integration with GUI: API tests enable highly integrable tests, which is particularly useful if you want to perform functional GUI tests after API testing. For instance, simple integration would allow new user accounts to be created within the application before a GUI test started. Question: Some common protocols used in API testing? Answer: JMS, REST, HTTP, UDDI and SOAP. Question: What are principles of an API test design? Answer: The five most important principles of an API test design are: a) Setup: Create objects, start services, initialize data, etc b) Execution: Steps to apply API or the scenario, including logging c) Verification: Oracles to evaluate the result of the execution d) Reporting: Pass, failed or blocked e) Clean up: Pre-test state Question: What is the procedure to perform API testing? Answer: a) Choose the Test suite to add the API test case b) Choose the Test development mode either Manual or Automation c) Development of test cases for the required API methods d) Configure the control parameters of the application and then test conditions part of Test Data e) Configure method validation part of Test Validation f) Execute the API test g) Generate test reports for execution h) Publish Test reports to different stake holders Question: What must be checked when performing API testing? Answer: During the API testing process, a request is raised to the API with the known data. This way you can analyze the validation response. While testing an API, you should consider: a) Accuracy of data b) Schema validation c) HTTP status codes d) Data type, validations, order and completeness e) Authorization checks f) Implementation of response timeout g) Error codes in case API returns, and h) Non-functional testing like performance and security testing Question: What is the best approach method to perform API testing? Answer: The following factors should be considered when performing API testing: a) Defining the correct input parameters b) Verifying the calls of the mixture of two or more added value parameters c) Defining the basic functionality and scope of the API program d) Writing appropriate API test cases and making use of testing techniques such as equivalence class, boundary value, etc. to check the operability e) Testing case execution f) Comparing the test result with the expected result g) Verifying the API behavior under conditions such as Communication between multiple APIS, between API and Database, between real API and mock APIS. Question: What are tools could be used for API testing? Answer: There are good number of different API testing tools available. A few of common tools are Katalon Studio, Postman, SoapUi Pro, Tricentis Tosca, Apigee, etc. And for Automation most popular framework is Rest Assured and Karate. Question. What are differences between API Testing and Unit Testing? Answer: API Testing Conducted by QA team Mostly Black box as you need not require to know the business logic of API under test Aimed to assess the full functionality of the system for it will be employed by the end user Often run once build is ready Unit Testing Conducted by the development White Box testing Used to verify whether each unit in isolation peform as expected or not' Each of the code modules must be ensured to pass the unit test before being built by developers. Question: What are differences between API Testing and UI Testing? Answer: API enables communication between two separate software systems. A software system implementing an API contains functions or subroutines that can be executed by another software system. On the other hand, UI ( User Interface) testing refers to testing graphical interface such as how users interact with the applications, testing application elements like fonts, images, layouts etc. UI testing basically focuses on look and feel of an application. Question: What are major challenges faced in API testing? Answer: Some of the challenges faced are: a) Parameter Selection b) Parameter Combination c) Call sequencing d) Output verification and validation d) Another important challenge is providing input values, which is very difficult as GUI is not available in this case. Question: Why is API testing considered as the most suitable form for Automation testing? Answer: API testing is now preferred over GUI testing and is considered as most suitable because: It verifies all the functional paths of the system under test very effectively. It provides the most stable interface. It is easier to maintain and provides fast feedback. Question What are common API errors that often founded? Answer: Some of common API errors that founded as below: a) Missing inter api communication b) Path Parameter validation errors c) Query Parameter validation errors d) Incorrect Authorization as per user roles e) And some standard error expectations as if the result is not so predicted then the occurrence of errors can be seen Question: What is API documentation? Answer: The API documentation is a complete, accurate technical writing giving instructions on how to effectively use and integrate with an API. It is a compact reference manual that has all the information needed to work with the API, and helps you answer all the API testing questions with details on functions, classes, return types, arguments, and also examples and tutorials. Question: What are API documentation templates that are commonly used? Answer: There are several available API documentation templates help to make the entire process simple and straightforward, these are: Swagger Miredot Slate FlatDoc API blueprint RestDoc Web service API specification Question: When writing API document, what must be considered? Answer: Source of the content Document plan or sketch Delivery layout Information needed for every function in the document Automatic document creation programs Question: How often are the APIs changed and, more importantly, deprecated? Answer: APIs, especially modern RESTful APIs, are a nice creation that can certainly simplify and accelerate integration efforts, which makes it more likely you will benefit from them. But APIs can and do change for various reasons, sometimes abruptly, and hence REST APIs do not differ from traditional integration methods in this respect. If an API call is obsolete and disappears, your procedure will interrupt and it is important to understand how often the APIs you depend on change or are deprecated. Question: What is REST? Answer: REST (Representational State Transfer) is an architectural style for developing web services which exploit the ubiquity of HTTP protocol and uses HTTP method to define actions. It revolves around resource where every component being a resource that can be accessed through a shared interface using standard HTTP methods. In REST architecture, a REST Server provides access to resources and REST client accesses and makes these resources available. Here, each resource is identified by URIs or global IDs, and REST uses multiple ways to represent a resource, such as text, JSON, and XML. XML and JSON are nowadays the most popular representations of resources. Question: What is a RESTFul Web Services? Answer: 2 kind of Restful Web Services are: a) SOAP (Simple Object Access Protocol) – an XML-based method to expose web services. b) Web services developed in the REST style are referred to as RESTful web services. These web services use HTTP methods to implement the concept of REST architecture. A RESTful web service usually defines a URI, Uniform Resource Identifier a service, provides resource representation like JSON and a set of HTTP methods. Question: What is a “Resource” in REST? Answer: REST architecture treats any content as a resource, which can be either text files, HTML pages, images, videos or dynamic business information. REST Server gives access to resources and modifies them, where each resource is identified by URIs/ global IDs. Question: What is the most popular way to represent a resource in REST? Answer: REST uses different representations to define a resource like text, JSON, and XML. XML and JSON are the most popular representations of resources. Question: Which protocol is used by RESTful Web services? Answer: RESTful web services use the HTTP protocol as a medium of communication between the client and the server. Question: What are some key characteristics of REST? Answer: Key characteristics of REST are: REST is stateless, therefore the SERVER has no status (or session data) With a well-applied REST API, the server could be restarted between two calls, since all data is transferred to the server Web service uses POST method primarily to perform operations, while REST uses GET for accessing resources. Question: What is messaging in RESTful Web services? Answer: RESTful web services use the HTTP protocol as a communication tool between the client and the server. The technique that when the client sends a message in the form of an HTTP Request, the server sends back the HTTP reply is called Messaging. These messages comprise message data and metadata, that is, information on the message itself. Question: What are the core components of an HTTP request? Answer: An HTTP request contains five key elements: 1. An action showing HTTP methods like GET, PUT, POST, DELETE. 2. Uniform Resource Identifier (URI), which is the identifier for the resource on the server. 3. HTTP Version, which indicates HTTP version, for example-HTTP v1.1. 4. Request Header, which carries metadata (as key-value pairs) for the HTTP Request message. Metadata could be a client (or browser) type, format supported by the client, format of a message body format, cache settings, and so on. 5. Request Body, which indicates the message content or resource representation. Question. What are the most commonly used HTTP methods supported by REST? Answer: a) GET is only used to request data from a specified resource. Get requests can be cached and bookmarked. It remains in the browser history and haS length restrictions. GET requests should never be used when dealing with sensitive data. b) POST is used to send data to a server to create/update a resource. POST requests are never cached and bookmarked and do not remain in the browser history. c) PUT replaces all current representations of the target resource with the request payload. d) DELETE removes the specified resource. e) OPTIONS is used to describe the communication options for the target resource. f) HEAD asks for a response identical to that of a GET request, but without the response body. Question: Can GET request to be used instead of PUT to create a resource? Answer: The PUT or POST method should be used to create a resource. GET is only used to request data from a specified resource. Question: Is there any difference between PUT and POST operations? Answer: Post is used for create new resources and Put is used to update new resources Scenario: Let’s say we are designing a network application. Let’s list down few URIs and their purpose to get to know when to use POST and when to use PUT operations. POST /device-management/devices : Create a new device PUT /device-management/devices/{id} : Update the device information identified by “id” Question: Which purpose does the OPTIONS method serve for the RESTful Web services? Answer: The OPTIONS Method lists down all the operations of a web service supports. It creates read-only requests to the server. Question: What is URI? Answer: URI stands for Uniform Resource Identifier. It is a string of characters designed for unambiguous identification of resources and extensibility via the URI scheme. The purpose of a URI is to locate a resource(s) on the server hosting of the web service. The URI generic syntax consists of a hierarchical sequence of five components URI = scheme:[//authority]path[?query][#fragment] where the authority component divides into three subcomponents: authority = [userinfo@]host[:port] Examples to describe URI as below: Question: What is payload in RESTFul Web services? Answer: The “payload” is the data you are interested in transporting. This is differentiated from the things that wrap the data for transport like the HTTP/S Request/Response headers, authentication, etc. Question: What is the upper limit for a payload to pass in the POST method? Answer: <POST> doesn’t have any such limit. So, theoretically, a user can pass unlimited data as the payload to POST method. But, if we consider a real use case, then sending POST with large payload will consume more bandwidth. It’ll take more time and present performance challenges to your server. Hence, a user should take action accordingly. Question: What is the caching mechanism? Answer: Caching is just the practice of storing data in temporarily and retrieving data from a high-performance store (usually memory) either explicitly or implicitly. When a caching mechanism is in place, it helps improve delivery speed by storing a copy of the asset you requested and later accessing the cached copy instead of the original. Question: What are SOAP Web services? Answer: This is one of the fundamental Web services testing questions that you must know the answer. The SOAP (Simple Object Access Protocol) is defined as an XML-based protocol. It is known for designing and developing web services as well as enabling communication between applications developed on different platforms using various programming languages over the Internet. It is both platform and language independent. Question: How does SOAP work? Answer: SOAP is used to provide a user interface that can be accessed by the client object, and the request that it sends goes to the server, which can be accessed using the server object. The user interface creates some files or methods consisting of server object and the name of the interface to the server object. It also contains other information such as the name of the interface and methods. It uses HTTP to send the XML to the server using the POST method, which analyzes the method and sends the result to the client. The server creates more XML consisting of responses to the request of user interface using HTTP. The client can use any approach to send the XML, like the SMTP server or POP3 protocol to pass the messages or reply to queries. Question: When to use SOAP API? Answer: Use the SOAP API to create, retrieve, update or delete records, like accounts, leads, and user-defined objects. With more than 20 different calls, you can also use the SOAP API to manage passwords, perform searches, etc. by using the SOAP API in any language that supports web services. Question: How users utilize the facilities provided by SOAP? Answer: PutAddress(): It is used to enter an address in the webpage and has an address instance on the SOAP call. PutListing(): It is used to allow the insertion of a complete XML document into the web page. It receives the XML file as an argument and transports the XML file to XML parser liaison, which reads it and inserts it into the SOAP call as a parameter. GetAddress(): It is used to get a query name and gets the result that best matches a query. The name is sent to the SOAP call in the form of text character string. GetAllListing(): It is used to return the full list in an XML format. Question: What is the major obstacle users faced when using SOAP? Answer: When using SOAP, users often see the firewall security mechanism as the biggest obstacle. This block all the ports leaving few like HTTP port 80 and the HTTP port used by SOAP that bypasses the firewall. The technical complaint against SOAP is that it mixes the specification for message transport with the specification for message structure. Question: What are the various approaches available for developing SOAP based web services? Answer: There are two different methods available for developing SOAP-based web services, which are explained below: Contract-first approach: the contract is first defined by XML and WSDL, and then Java classes are derived from the contract. Contract-last approach: Java classes are first defined, and then the contract is generated, which is normally the WSDL file from the Java class. “Contract-first” method is the most popular approach. Question: What are the elements of a SOAP message structure? Answer: It is a common XML document that contains the elements as a SOAP message Envelope: It is an obligatory root element that translates the XML document and defines the beginning and end of the message. Header: It is an optional item which contains information about the message being sent. Body: It contains the XML data comprising the message being sent. Fault: It provides the information on errors that occurred while during message processing. Question: What are the syntax rules for a SOAP message? Answer: a) Must use encoded XML b) Envelope namespace must be used c) Encoding namespace must be used d) Must not consist of a DTD reference e) Must not have XML processing instruction Question: What is the transport method in SOAP? Answer: Application layer and transport layers of a network are used by SOAP; HTTP and SMTP are the valid protocol of the application layer used as the transport for SOAP. HTTP is more preferable, since it works well with the current Internet infrastructure, in particular with firewalls. The SOAP requests can be sent using an HTTP GET method while the specification only contains details about HTTP POST. Question: What are some important characteristics of a SOAP envelope element? Answer: a) SOAP message has a root Envelope element b) Envelope is an obligatory part of the SOAP message. c) If an envelope includes a header element, it should not contain more than one. d) Envelope version will change if the SOAP version changes. e) The SOAP envelope is indicated by the prefix ENV and the envelope element. f) The optional SOAP encoding is also specified using a namespace and the optional encoding style element. Question: What are the major functionalities provided by the SOAP protocol class? Answer: The SOAP protocol is used to provide simple access methods for all the applications available on the Internet, providing the following functionalities: Call: A class which provides the main functionality for a remote method for which a call is needed. It is used to create the call() and to specify the encoding style of the registry that will be assigned when if necessary. This call() function is used by the RPC call, which represents the options of the call object. Deployment Descriptor: A class used to provide the information about the SOAP services. It enables easy deployment without the need for other approaches. DOM2 Writer: A class that serializes and uses DOM node as XML string to provide more functionalities. RPC Message: A class used as the base class that calls and replies to the request submitted to the server. Service Manager: A class that provides, lists and then outputs all SOAP services. Question: What are the web relation functionalities provided by SOAP protocol? Answer: HTTPUtils: This provides the functionality of the POST method to safely meet the requirements. Parameter: It is an argument for an RPC call used by both the client and the server. Response: It is an object that represents an RPC reply from both client and server, but the result will not be displayed until after the method call. TCPTunnel: It is an object that provides the ability to listen on a specific port and to forward all the host and port names. TypeConverter: It helps to convert an object of one type into another type and this is called using the class in the form object. Question: How does the message security model allow the creation of SOAP more secure to use? Answer: The security model includes the given security tokens. These tokens comprise digital signatures for protection and authentication of SOAP messages. Security tokens can be used to provide the bond between authentication secrets or keys and security identities. Security token uses the authentication protocols and an X.509 certificate to define the relationship between the public key and identity key. The signatures are used to verify the messages and their origin, generate knowledge to confirm the security tokens to bind the identity of a person to the identity of the originator. Security model prevents different attacks and can be used to protect the SOAP architecture. Question: What is the difference between top down & bottom up approach in SOAP Web services? Answer: Top down SOAP Web services include creating WSDL document to create a contract between the web service and the client, with a required code as an option. This is also known as Contract-first approach. The top-down approach is difficult to implement because classes must be written to confirm the contract defined in WSDL. One of the benefits of this method is that both client and server code can be written in parallel. Bottom up SOAP web services require the code to be written first and then WSDL is generated. It is also known as Contract-last approach. Since WSDL is created based on the code, bottom-up approach is easy to implement and client codes must wait for WSDL from the server side to start working. Question: What are advantages of SOAP? Answer: a) SOAP is both platform and language independent. b) SOAP separates the encoding and communications protocol from the runtime environment. c) Web service can retrieve or receive a SOAP user data from a remote service, and the source’s platform information is completely independent of each other. d) Everything can generate XML, from Perl scripts through C++ code to J2EE app servers. e) It uses XML to send and receive messages. f) It uses standard internet HTTP protocol. g) SOAP runs over HTTP; it eliminates firewall problems. When protocol HTTP is used as the protocol binding, an RPC call will be automatically assigned to an HTTP request, and the RPC response will be assigned to an HTTP reply. h) Compared to RMI, CORBA and DCOM, SOAP is very easy to use. i) SOAP acts as a protocol to move information in a distributed and decentralized environment. j) SOAP is independent of the transport protocol and can be used to coordinate different protocols. Question: What are disadvantages of SOAP? Answer: SOAP is typically significantly slower than other types of middleware standards, including CORBA, because SOAP uses a detailed XML format. A complete understanding of the performance limitations before building applications around SOAP is hence required. SOAP is usually limited to pooling and not to event notifications when HTTP is used for the transport. In addition, only one client can use the services of one server in typical situations. If HTTP is used as the transport protocol, firewall latency usually occurs since the firewall analyzes the HTTP transport. This is because HTTP is also leveraged for Web browsing, and so many firewalls do not understand the difference between using HTTP within a web browser and using HTTP within SOAP. SOAP has different support levels, depending on the supported programming language. For instance, SOAP supported in Python and PHP is not as powerful as it is in Java and .NET Question: SOAP or Rest APIs, which method to use? Answer: SOAP is the heavyweight choice for Web service access. It provides the following advantages when compared to REST: a) SOAP is not very easy to implement and requires more bandwidth and resources. b) SOAP message request is processed slower as compared to REST and it does not use web caching mechanism. c) WS-Security: While SOAP supports SSL (just like REST) it also supports WS-Security which adds some enterprise security features. d) WS-AtomicTransaction: Need ACID Transactions over a service, you’re going to need SOAP. e) WS-ReliableMessaging: If your application needs Asynchronous processing and a guaranteed level of reliability and security. Rest doesn’t have a standard messaging system and expects clients to deal with communication failures by retrying. f) If the security is a major concern and the resources are not limited then we should use SOAP web services. Like if we are creating a web service for payment gateways, financial and telecommunication related work, then we should go with SOAP as here high security is needed. REST is easier to use for the most part and is more flexible. It has the following advantages when compared to SOAP: a) Since REST uses standard HTTP, it is much simpler. b) REST is easier to implement, requires less bandwidth and resources. c) REST permits many different data formats whereas SOAP only permits XML. d) REST allows better support for browser clients due to its support for JSON. e) REST has better performance and scalability. REST reads can be cached, SOAP based reads cannot be cached. f) If security is not a major concern and we have limited resources. Or we want to create an API that will be easily used by other developers publicly then we should go with REST. g) If we need Stateless CRUD operations then go with REST. h) REST is commonly used in social media, web chat, mobile services and Public APIs like Google Maps. i) RESTful service returns various MediaTypes for the same resource, depending on the request header parameter “Accept” as application/xml or application/json for POST and /user/1234.json or GET /user/1234.xml for GET. j) REST services are meant to be called by the client-side application and not the end user directly. k) ST in REST comes from State Transfer. You transfer the state around instead of having the server store it, this makes REST services scalable. Question: What are the factors that help to decide which style of Web services – SOAP or REST – to use? Answer: Generally, REST is preferred due to its simplicity, performance, scalability, and support for multiple data formats. However, SOAP is favorable to use where service requires an advanced level of security and transactional reliability. But you can read the following facts before opting for any of the styles. Does the service expose data or business logic? REST is commonly used for exposing data while SOAP for logic. The requirement from clients or providers for a formal contract. SOAP can provide contract via WSDL. Support multiple data formats. Support for AJAX calls. REST can apply the XMLHttpRequest. Synchronous and asynchronous calls. SOAP enables both synchronous/ asynchronous operations whereas REST has built-in support for synchronous. Stateless or Stateful calls. REST is suited for stateless operations. Security. SOAP provides a high level of security. Transaction support. SOAP is good at transaction management. Limited bandwidth. SOAP has a lot of overhead when sending/receiving packets since it’s XML based, requires a SOAP header. However, REST requires less bandwidth to send requests to the server. Its messages are mostly built using JSON. Ease of use . REST based application is easy to implement, test, and maintain. #NGAutomation Building better QA for tomorrow

More
Develop Framework with Design Patterns

Develop Framework with Design Patterns

Introduction: This post is intended to bond all together in a complete guide how to do write better automation code using different design patterns. Generally, automation project consists of two parts. Automation framework project and tests project. Current guide is intended to describe how to build your automation testing framework. How to structure your tests is a different topic. Remember once having correctly designed framework then tests will be much more clean, maintainable and easy to write. I will show how to build automation framework using most popular design patterns: Page Object, Web Driver Factory, Facade, Null Object, Singleton Design Patterns Using Page objects Design Pattern while building automation: Everything starts by defining proper page objects. There is no fixed recipe for this. It all depends on the structure of application under test. The general rule is that repeating elements (header, footer, menu, widget, etc) are extracted as separate objects. The whole idea is to have one element defined in only one place (stay DRY)! Below is our HomePage object. What you can do generally is make search and clear search terms. Using WebDriver factory Design Pattern while building automation: WebDriver factory will be responsible for instantiating the WebDriver based on a condition which browser we want to run our tests with. The constructor takes an argument browser type. Browser type is defined as an enumeration. This is very important. Avoid passing back and forth strings. Always stick to enums or special purpose classes. This will save you time investigating bugs in your automation. public enum Browsers { Chrome, IE, Firefox } Using NullWebElement Design Pattern while building automation: This is null object pattern and implements IWebElement. There is a NULL property that is used to compare is given element is not found or no. Using WebDriver facade Design Pattern while building automation: WebDriver facade main responsibility is to define custom behavior on elements location. This gives you centralized control over elements location. The constructor takes browser type and uses the factory to create WebDriver instance which is used internally in the facade. FindElement method defines explicit wait. If the element is not found then NullWebElement which is actual implementation of Null object pattern. The idea is to safely locate elements with try/catch and then just use them skipping checks for null. Tests Creation and calling all design patterns as developed As I mentioned initially this post is about using efficiently design patterns in your framework automation project. Tests design are not being discussed here. Once you have designed the framework one simple test (without asserts) that makes search will look like the code below. Conclusion: Design patterns are enabling you to write maintainable code. They increase the value of your code. As shown in this series of posts they are not so complicated and you can easily adopt them in your automation. Most important is design patterns increase your value as a professional. So make the time to learn them! #NGAutomation Building better QA for tomorrow

More
Singleton and Null object patterns

Singleton and Null object patterns

Singleton Singleton pattern is used in a case where you want to restrict the instantiation of a class to only one object. The class should not require parameters for its construction. If the creation of a class requires significant resources then a singleton is a suitable solution. It is good that singletons are created when they are first needed, so-called lazy initialization. Example Most common usage of Singleton pattern is to limit WebDriver to only one object instance in the whole automation test project. private static IWebDriver webDriver; public static IWebDriver WebDriver { get { if (webDriver == null) { webDriver = new FirefoxDriver(); } return webDriver; } } Null object pattern: The idea is to make the code simpler and safe by skipping checks for null reference of a given object. Null object implements given interface and its methods are doing nothing. This makes the null object more predictable. You can safely invoke methods on the null object without the threat of a NullRefferenceException to break your application. This pattern is very well combined with singleton pattern where a null object is actually a singleton. In this case, you can check for reference or equality. In this post: I’m going to give slightly different usage example where Singleton is used along with Null object pattern. NullWebElement implements IWebElement interface so it must implement all methods and properties defined by the interface. This is done on lines 4 to 21. Properties are returning some values, but not null! Methods are doing nothing. From line 23 to 36 is the Singleton definition. If Singleton is an object you have defined then it should have a private constructor so no one is able to instantiate it. There is a private field which actually holds the reference to the singleton. NULL is a property which instantiates the singleton if not already instantiated and returns it. There are two main benefits of code above. The first benefit comes from the Null object pattern. You can locate an element which doesn’t exist and call some of its methods without your tests to crash. You might say that comparing for null is not a big overhead, but in big having a null check before each action is a waste of time. IWebElement element = null; try { element = webDriver.FindElement(By.CssSelector("notExisting")); } catch { element = NullWebElement.NULL; } element.Click(); It might be a discussion whether it is better to silent this failure error with a null object or leave to a massive crash. My opinion is you must fail the test and if you put some logging into Click method of the NullWebElement then you can easily trace the issue. The real benefit is you will have only one failed test instead of the whole bunch failed because of the crash. The second benefit comes from the Singleton pattern. You can easily compare some element against the NullWebElement.NULL. Most likely you will locate the element and use it safely because of null object pattern, but there might a case where you want to see if the element is actually not found. if (element == NullWebElement.NULL) { Console.WriteLine("Element not found!"); } Conclusion: Singleton is a pattern that you definitely should know. A null object with a combination of Singleton can decrease the amount of code you write by skipping the checks for null. I would say if adopted those can simplify your code which is a benefit in big projects. #NGAutomation Building better QA for tomorrow

More
Page objects design pattern

Page objects design pattern

Introduction: This is the most important pattern related to software automation. It enables you to create object repository with UI elements. Elements are separated from test logic. This pattern makes code much more maintainable and reusable. Never do this Without this pattern what you might do is start WebDriver, navigate to some test page. Locate element you need then click it. IWebElement element = webDriver.FindElement(By.CssSelector("div.find label")); element.Click(); This is good when you want to test the idea or do some quick demo. In a real-life project, this element might be needed in dozens of tests. What happens if the UI changes and CSS selector is not matching anymore? Here comes the maintainability problem, you have to search and replace all of them. The proper way In software engineering, there is a principle called DRY for short. Its idea is to have each element or action stored only once in a system. This avoids copy/paste and reduces the overhead for code maintenance. The same idea is used in Page Object pattern. a) Each page or re-usable part of a page (i.e. header, footer, menu) is a separate class. b) Class constructor takes WebDriver as an argument and uses it internally to locate elements. c) Each element is a private property (or getter in Java). d) Actions are public and internally operate with elements. In the code below SearchField is private property used only by SearchFor method which is exposed to available action on HomePage. An element can be located inside the action method but suggested approach gives better readability. And if an element is needed more than once then defining it separately is a must. public class HomePage { private IWebDriver webDriver; public HomePageObject(IWebDriver webDriver) { this.webDriver = webDriver; } private IWebElement SearchField { get { return webDriver.FindElement(By.Id("search")); } } public void SearchFor(string text) { SearchField.SendKeys(text); } } Invoking Page Objects: The page object is instantiated in the test and actions are invoked. HomePageObject homePage = new HomePageObject(webDriver); homePage.SearchFor("automation"); With this approach, you have one element defined in only one place. Only actions are exposed out of the page object. It is very clear what actions can be done on this page. Conclusion Always use page objects in your test automation. ALWAYS! #NGAutomation Building better for tomorrow

More
Facade Design Pattern

Facade Design Pattern

Introduction: Facade design pattern provides simple and easy to use interface to a larger and more complex code, API or set of APIs. If you have to deal with complex or poorly designed API you might find yourself confused by all the functionality available in it. Most likely you don’t need everything provided by the API. So for ease and better maintainability, only API features that are needed gets exposed outside the facade. In this way, you simplify the API usage saving time for your colleagues when maintaining this code. Also, you have control over how this external API is used and can prevent misunderstanding or misuse of it. If more functionality from API is needed this will require an update of the facade or adding new facade which exposes it. Example: It might not be a good idea to have the pattern in the name of the facade, but in the example, I’ve put it to ease. In this example, WebDriver instantiation is hardcoded to Firefox, but in real life, it will be instantiated based on some rules. Facade exposes Start, Stop and FindElement methods. All other WebDriver functionality is not accessible. A facade is used exactly the same way as WebDriver itself: WebDriverFacade webDriver = new WebDriverFacade(); webDriver.Start("https://automationrhapsody.com"); IWebElement logo = webDriver.FindElement(By.CssSelector("div#header-inner h1 a")); logo.Click(); webDriver.Stop(); Conclusion: WebDriver API is neither complex nor poorly designed, so maybe making a facade is not a mandatory thing. Still, I think having control over its usage is a good approach. In given example, you can see I use explicit wait so I locate exactly the same way all elements in my automation project. #NGAutomation Building better for tomorrow

More
Testing AI Enabled Platforms

Testing AI Enabled Platforms

Introduction: “Testing AI systems presents a completely new set of challenges. While traditional application testing is deterministic, with a finite number of scenarios that can be defined in advance, AI systems require a limitless approach to testing,” said Ankur Chaudhry, Founder Next Generation Automation. “ There is huge need to create new capabilities for evaluating data and learning models, choosing algorithms, and monitoring for bias and ethical and regulatory compliance. Experts in nearly every field are in a race to discover how to replicate brain functions – wholly or partially. In fact, by 2025, the value of the artificial intelligence (AI) market will surpass US $100 billion. For corporate organizations, investments in AI are made with the goal of amplifying the human potential, improving efficiency and optimizing processes. However, it is important to be aware that AI too is prone to error owing to its complexity. Let us first understand what makes AI systems different from traditional software systems: Software systems a) Features – Software is deterministic, i.e., it is pre-pro- grammed to provide a specific output based on a given set of inputs b) Accuracy – Accurate software depends on the skill of the programmer and is deemed successful if it produces an output in accordance with its design c) Programming – All software functions are designed based on if-then and for loops to convert input data to output data d) Errors – When software encounters an error, remediation depends on human intelligence or a coded exit function AI systems a) Features – Artificial intelligence/machine learning (AI/ML) is non-deterministic, i.e., the algorithm can behave differently for different runs b) Accuracy – Accuracy of AI algorithms depends on the training set and data inputs c) Programming – Different input and output combinations are fed to the machine based on which it learns and defines the function d) Errors – AI systems have self-healing capabilities whereby they resume operations after handling exceptions/errors The above figure shows the sequential stages of AI algorithms. While each stage is necessary for successful AI programs, there are some typical failure points that exist within each stage. These must be carefully identified using the right testing technique as mentioned below: Stage 1: Learning Process from Data Sources Points of Failures: • Issues of correctness, completeness and appropriateness of source data quality and formatting • Variety and velocity of dynamic data resulting in errors • Heterogeneous data sources How Testing Can be performed: • Automated data quality checks • Ability to handle heterogeneous data during comparison • Data transformation testing • Sampling and aggregate strategies Stage 2: Input data condition- ing – Big data stores and data lakes Points of Failures: • Incorrect data load rules and data duplicates • Data nodes partition failure • Truncated data and data drops How Testing Can be performed: • Data ingestion testing • Knowledge of development model and codes • Understanding data needed for testing • Ability to subset and create test data sets Stage 3: ML and analytics – Cognitive learning/ algorithms Points of Failures: • Determining how data is split for training and testing • Out-of-sample errors like new behavior in previously unseen data sets • Failure to understand data relationships between enti- ties and tables How Testing Can be performed: • Algorithm testing • System testing • Regression testing Stage 4: Visualization – Cus- tom apps, connected devices, web, and bots Points of Failures: • Incorrectly coded rules in custom applications resulting in data issues • Formatting and data reconciliation issues between reports and the back-end • Communication failure in middleware systems/APIs resulting in disconnected data communication and visualization How Testing Can be performed: • API testing • End-to-end functional testing and automa- tion • Testing of analytical models • Reconciliation with development models Stage 5: Feedback – From sen- sors, devices, apps, and systems Points of Failures: • Incorrectly coded rules in custom applications resulting in data issues • Propagation of false positives at the feedback stage resulting in incorrect predictions How Testing Can be performed: • Optical character recognition (OCR) testing • Speech, image and natural language pro- cessing (NLP) testing • RPA testing • Chatbot testing frameworks The right testing strategy for AI systems Given the fact that there are several failure points, the test strategy for any AI system must be carefully structured to mitigate risk of failure. To begin with, organizations must first understand the various stages in an AI framework as shown above figure. With this understanding, they will be able to define a comprehensive test strategy with specific testing techniques across the entire framework. Here are four key AI use cases that must be tested to ensure proper AI system functioning: • Testing standalone cognitive features such as natural language processing (NLP), speech recognition, image recognition, and optical character recognition (OCR) • Testing AI platforms such as IBM Watson, Infosys NIA, Azure Machine Learning Studio, Microsoft Oxford, and Google DeepMind • Testing ML-based analytical models • Testing AI-powered solutions such as virtual assistants and robotic process automation (RPA) Use case 1: Testing standalone cognitive features Natural language processing (NLP) • Test for ‘precision’ return of the keyword, i.e., a fraction of relevant instances among the total retrieved instances of NLP • Test for ‘recall’, i.e., a fraction of retrieved instances over total number of retrieved instances available • Test for true positives (TPs), true negatives (TNs), false positives (FPs), and false negatives (FNs). Ensure that FPs and FNs are within the defined error/fallout range Speech recognition inputs • Conduct basic testing of the speech recognition software to see if the system recognizes speech inputs • Test for pattern recognition to determine if the system can identify when a unique phrase is repeated several times in a known accent and whether it can identify the same phrase when it is repeated in a different accent • Test deep learning, the ability to differentiate between ‘New York’ and ‘Newark’ • Test how speech translates to response. For example, a query of “Find me a place I can drink coffee” should not generate a response with coffee shops and driving directions. Instead, it should point to a public place or park where one can enjoy his/her coffee Image recognition • Test the image recognition algorithm through basic forms and features • Test supervised learning by distorting or blurring the image to determine the extent of recognition by the algorithm • Test pattern recognition by replacing cartoons with the real image like showing a real dog instead of a cartoon dog • Test deep learning using scenarios to see if the system can find a portion of an object in a larger image canvas and complete a specific action Optical character recognition • Test OCR and optical word recognition (OWR) basics by using character or word inputs for the system to recognize • Test supervised learning to see if the system can recognize characters or words from printed, written or cursive scripts • Test deep learning, i.e., whether the system can recognize characters or words from skewed, speckled or binarized (when color is converted to grayscale) documents • Test constrained outputs by introducing a new word in a document that already has a defined lexicon with permitted words Use case 2: Testing AI platforms Testing any platform that hosts an AI framework is complex. Typically, it follows many of the steps used during functional testing. Data source and conditioning testing • Verify the quality of data from various systems – data correctness, completeness and appropriateness along with format checks, data lineage checks and pattern analysis • Verify transformation rules and logic applied on raw data to get the desired output format. The testing methodology/automation framework should function irrespective of the nature of data – tables, flat files or big data • Verify that the output queries or programs provide the intended data output • Test for positive and negative scenarios Algorithm testing • Split input data for learning and for the algorithm • If the algorithm uses ambiguous datasets, i.e., the output for a single input is not known, the software should be tested by feeding a set of inputs and checking if the output is related. Such relationships must be soundly established to ensure that algorithms do not have defects • Check the cumulative accuracy of hits (TPs and TNs) over misses (FPs and FNs) API integration • Verify input request and response from each application programming interface (API) • Verify request response pairs • Test communication between components – input and response returned as well as response format and correctness • Conduct integration testing of API and algorithms and verify reconciliation/visualization of output System/regression testing • Conduct end-to-end implementation testing for specific use cases, i.e., provide an input, verify data ingestion and quality, test the algorithms, verify communication through the API layer, and reconcile the final output on the data visualization platform with expected output • Check for system security, i.e., static and dynamic security testing • Conduct user interface and regression testing of the systems Use case 3: Testing ML-based analytical models Organizations build analytical models for three main purposes as shown below Figure The validation strategy used while testing the analytical model involves the following three steps: • Split the historical data into ‘test’ and ‘train’ datasets • Train and test the model based on generated datasets • Report the accuracy of model for the various generated scenarios While testing a model, it is critical to do the following to ensure success: • Devise the right strategy to split and subset historical dataset using deep knowledge of development model and code to understand how it works on data • Model the end-to-end evaluation strategy to train and recreate model in test environments with associated components • Customize test automation to optimize testing throughput and predictability by leveraging customized solutions to split the dataset, evaluate the model and enable reporting Use case 4: Testing of AI-powered solutions Chatbot testing framework • Test the chatbot framework using semantically equivalent sentences and create an automated library for this purpose • Maintain configurations of basic and advanced semantically equivalent sentences with formal and informal tones and complex words • Automate end-to-end scenario (requesting chatbot, getting a response and validating the response action with accepted output) • Generate automated scripts in Python for execution RPA testing framework • Use open source automation or functional testing tools (Selenium, Sikuli, Robot Class, AutoIT) for mul- tiple applications • Use flexible test scripts with the ability to switch between machine language programming (where required as an input to the robot) and high-level language for functional automation • Use a combination of pattern, text, voice, image, and optical character recognition testing techniques with functional automation for true end-to-end testing of applications Conclusion AI frameworks typically follow 5 stages – Learning from various data sources, Input data conditioning, Machine learning and analytics, Visualization, and Feedback. Each stage has specific failure points that can be identified using several techniques. Thus, when testing the AI systems, QA departments must clearly define the test strategy by considering the various challenges and failure points across all stages. Some of the important testing use cases to be considered are testing standalone cognitive features, AI platforms, ML-based analytical models, and AI- powered solutions. Such a comprehensive testing strategy will help organizations streamline their AI frameworks and minimize failures, thereby improving output quality and accuracy. At Next Generation Automation, Team holds tremendous expertise in testing AI Driven Platforms and this makes our clients to find right test partners to test their AI Enabled Applications with support of Next Generation Automation Experts. If you have any specific needs related to AI Testing for outsourcing you can get connected with us at: projects@nextgenerationautomation.com Regards, Ankur Chaudhry Founder Next Generation Automation #NGAutomation Building better QA for tomorrow

More
Automation Design Patterns

Automation Design Patterns

Design patterns very important to understand by any automation engineer as it helps build scale-able automation architecture. Basically design patterns are created to solve common problems in software design and now a days it start using for automation as well. There are really sophisticated design patterns available to solve complex issues in software development. But also there are easy to understand and adopt design patterns that can significantly improve readability and maintainability of our test automation code. 5 Most popular design patterns used in automation are: 1. Page Objects Pattern 2. Facade Pattern 3. Factory Pattern 4. Singleton pattern 5. Null object pattern Brief Information for every design pattern as below, for detailed explanation you can read Next Generation Automation other blogs specific to design pattern 1. Page Objects pattern This is the most important pattern related to software automation. It enables you to create object repository with UI elements. Elements are separated from tests logic. This pattern makes code much more maintainable and reusable. 2. Facade pattern The whole idea of facade design pattern is to provide simple and easy to use interface to a larger and more complex code, API or set of APIs. Most likely you don’t need everything provided by the API. So for ease and better maintainability, only API features that are needed gets exposed outside the facade. In this way, you simplify the API usage and you have control over how this external API is used and can prevent misunderstanding or misuse. 3. Factory pattern Factory pattern is used to create objects based on specific rules. You may have several classes implementing an interface. In your code, you do not want to bother defining which concrete class to instantiate or you might not know what object is suitable to get instantiated. This is why you handle the object creation task to the factory which knows exactly what object to create. With factory pattern, object creation is encapsulated. 4. Singleton pattern Singleton pattern is needed when you need exactly one object from a specific class in the whole application. 5. Null object pattern The idea is to make code simpler and safe by skipping null reference checks. Null object implements given interface and its methods are doing nothing. This makes the null object predictable. You can safely invoke methods on the null object without the threat of a NullReferenceException to break your application. #NGAutomation Building better QA for tomorrow

More
TestNG Interview Questions and Answers

TestNG Interview Questions and Answers

Question: What is TestNG? Answer: TestNG is a testing framework designed to simplify a broad range of testing needs, from unit testing to integration testing. Question. What are the annotations available in TestNG? Answer: @BeforeTest @AfterTest @BeforeClass @AfterClass @BeforeMethod @AfterMethod @BeforeSuite @AfterSuite @BeforeGroups @AfterGroups @Test Question: What is TestNG Assert and list out some common Assertions supported by TestNG? Answer: TestNG Asserts help us to verify the condition of the test in the middle of the test run. Based on the TestNG Assertions, we will consider a successful test only if it is completed the test run without throwing any exception. Some of the common assertions supported by TestNG are assertEqual(String actual,String expected) assertEqual(String actual,String expected, String message) assertEquals(boolean actual,boolean expected) assertTrue(condition) assertTrue(condition, message) assertFalse(condition) assertFalse(condition, message) Different TestNG Asserts Statements: a) Assert.assertEqual(String actual,String expected) : Asserts that two Strings are equal. If they are not, an AssertionError is thrown. Parameters: actual – the actual value expected – the expected value b) Assert.assertEqual(String actual,String expected, String message) : Asserts that two Strings are equal. If they are not, an AssertionError, with the given message, is thrown. Parameters: actual – the actual value expected – the expected value message – the assertion error message c) Assert.assertEquals(boolean actual,boolean expected) : Asserts that two booleans are equal. If they are not, an AssertionError is thrown. Parameters: actual – the actual value expected – the expected value d) Assert.assertTrue(condition) : Asserts that a condition is true. If it isn’t, an AssertionError is thrown. Parameters: condition – the condition to evaluate e) Assert.assertTrue(condition, message) : Asserts that a condition is true. If it isn’t, an AssertionError, with the given message, is thrown. Parameters: condition – the condition to evaluate message – the assertion error message f) Assert.assertFalse(condition) : Asserts that a condition is false. If it isn’t, an AssertionError is thrown. Parameters: condition – the condition to evaluate g) Assert.assertFalse(condition, message) : Asserts that a condition is false. If it isn’t, an AssertionError, with the given message, is thrown. Parameters: condition – the condition to evaluate message – the assertion error message Question: How to set test case priority in TestNG? Answer: We use priority attribute to the @Test annotations. In case priority is not set then the test scripts execute in alphabetical order. Question: What is Parameterized testing in TestNG? Answer: Parameterized tests allow developers to run the same test over and over again using different values. There are two ways to set these parameters: With testng.xml With Data Providers Let’s see passing parameters with testng.xml: With this technique, we could define the parameters in the testng.xml file and then reference those parameters in the source files. Create a java test class, say, ParameterizedTest.java Add test method parameterizedTest() to your test class. This method takes a string as input parameter Add the annotation @Parameters(“browser”) to this method. The parameter would be passed a value from testng.xml, which we will see in the next step. testng.xml Console Output: [TestNG] Running: Open Firefox Driver =============================================== nextGenerationAutomationLearnTestNG Total tests run: 1, Failures: 0, Skips: 0 =============================================== TestNG will automatically try to convert the value specified in testng.xml to the type of your parameter. Here are the types supported: String int/Integer boolean/Boolean byte/Byte char/Character double/Double float/Float long/Long short/Short Question. How can we create a data-driven framework using TestNG? Answer: By using @DataProvider annotation, We can create a Data Driven Testing Framework. Question: What are TestNG Groups? Answer: TestNG allows you to perform sophisticated groupings of test methods. Not only can you declare that methods belong to groups, but you can also specify groups that contain other groups. Then TestNG can be invoked and asked to include a certain set of groups (or regular expressions) while excluding another set. This gives you maximum flexibility in how you partition your tests and doesn’t require you to recompile anything if you want to run two different sets of tests back to back. Groups are specified in your testng.xml file and can be found either under the <test> or <suite> tag. Groups specified in the <suite> tag apply to all the <test> tags underneath. Script – Test Case 1: Script – Test Case 2: testng.xml: Group of Groups in TestNG Groups: Groups can also include other groups. These groups are called MetaGroups. For example, you might want to define a group all that includes smokeTest and functionalTest. Let’s modify our testng.xml file as follows: testng.xml – Group of Groups: Groups Exclusion: TestNG allows you to include groups as well as exclude them. You can ignore a group by using the <exclude> tag as shown below: For example, it is quite usual to have tests that temporarily break because of a recent change, and you don’t have time to fix the breakage yet. However, you do want to have clean runs of your functional tests, so you need to deactivate these tests but keep in mind they will need to be reactivated. You can also disable tests on an individual basis by using the “enabled” property available on both @Test and @Before/After annotations. Question: What are TestNG Listeners – Selenium WebDriver Answer: Listeners “listen” to the event defined in the selenium script and behave accordingly. The main purpose of using listeners is to create logs. There are many types of listeners such as WebDriver Listeners and TestNG Listeners. Let’s see how to implement TestNG Listeners. Step 1: Create a Class “ListenerTestNG” to implement ITestListener methods In the example we are implementing 3 methods of ITestListerner: onTestFailure, onTestSkipped, onTestSuccess. Step 2: Add the listeners annotation (@Listeners) in the Class “ListenerTestNGTestCase” The complete “ListenerTestNGTestCase” class after adding Listener annotation is mentioned below: Step 3: Execute the “ListenerTestNGTestCase” class. Methods in class “ListenerTestNG” are called automatically according to the behavior of methods annotated as @Test. Step 4: Verify the Output in the console. You could find the logs in the console. If you want to use listeners in multiple classes. Add the below lines of code in the TestNG.xml file <listeners> <listener class-name="listeners.listenerTestNG"/> </listeners> Final testng.xml file will be like this: Execute it by right clicking on testng.xml and run as TestNG Suite #NGAutomation Building better for tomorrow

More
Selenium Interview Questions & Answers

Selenium Interview Questions & Answers

Question: What is Selenium? Answer: Selenium is a suite of software tools to automate web browsers across many platforms (Different Operation Systems like MS Windows, Linux Macintosh etc.). It was launched in 2004, and it is open source Test Tool suite. Question: What is Selenium WebDriver? Answer: Selenium WebDriver is a tool for writing automated tests of websites. It is an API name and aims to mimic the behavior of a real user, and as such interacts with the HTML of the application. Selenium WebDriver is the successor of Selenium Remote Control which has been officially deprecated. Question: Explain Selenium Web Driver Architecture? Answer: Selenium Web Driver Architecture contains following components as mentioned below: Question: What is cost of WebDriver, is this commercial or open source? Answer: Selenium is an open source and free of cost. Question: How you specify browser configurations with Selenium 3.0? Answer: Following driver classes are used for browser configuration AndroidDriver, ChromeDriver, EventFiringWebDriver, FirefoxDriver, HtmlUnitDriver, InternetExplorerDriver, IPhoneDriver, IPhoneSimulatorDriver, RemoteWebDriver Question: Which web driver implementation is fastest? Answer: HTMLUnitDriver. Simple reason is HTMLUnitDriver does not execute tests on browser but plain http request – response which is far quick than launching a browser and executing tests. But then you may like to execute tests on a real browser than something running behind the scenes Question: What all different element locators are available with Selenium? Answer: Selenium uses following method to access elements: Question: How to capture screen shot in Webdriver ? Answer: Question: How do I clear content of a text box in Selenium 3.0 ? Answer: WebElement element= driver.findElement(By.id("ElementID")); element.clear(); Question: How to execute java scripts function ? Answer: JavascriptExecutor js = (JavascriptExecutor) driver; String title = (String) js.executeScript("pass your java scripts"); Question: How to count total number of rows of a table using Selenium 3.0 ? Answer: List {WebElement} rows = driver.findElements(By.className("//table[@id='tableID']/tr")); int totalRow = rows.size(); Question. How to delete Browser Cookies with Selenium Web Driver ? Answer: driver.Manage().Cookies.DeleteAllCookies(); Question: How to capture page title using Selenium ? Answer: String title = driver.getTitle(); Question: How to store current url using Selenium? Answer: String currentURL = driver.getCurrentUrl(); Question: How to store page source using Selenium? Answer: String pagesource = driver.getPageSource(); Question: What is the difference between Assert and Verify in Selenium? Answer: Assert: In simple words, if the assert condition is true then the program control will execute the next test step but if the condition is false, the execution will stop and further test step will not be executed. Verify: In simple words, there won’t be any halt in the test execution even though the verify condition is true or false. Question: What are Soft Assert and Hard Assert in Selenium? Answer: Soft Assert: Soft Assert collects errors during @Test Soft Assert does not throw an exception when an assert fails and would continue with the next step after the assert statement. Hard Assert: Hard Assert throws an AssertException immediately when an assert statement fails and test suite continues with next @Test Internal Advertisement: NGA Overseas Hiring Model Live Now. Model helps connect QA Automation Engineers directly with Overseas Employers for high growth Software Testing Jobs both Remote and Onsite. To know more about the offered service, click here . Question: What are the verification points available in Selenium? Answer: In Selenium WebDriver, there is no built-in features for verification points. It totally depends on our coding style. some of the Verification points are To check for page title To check for certain text with in web page To check for certain element (text box, button, drop down, etc.) To check for click operation To check for submit operation To Check for navigation from 1 link to other link Question: What are the different exceptions you have faced in Selenium WebDriver? Answer: Some of the exceptions I have faced in my current project are: a) ElementNotVisibleException b) StaleElementReferenceException Element Not visible Exception: This exception will be thrown when you are trying to locate a particular element on webpage that is not currently visible eventhough it is present in the DOM. Also sometimes, if you are trying to locate an element with the xpath which associates with two or more element. Stale Element Reference Exception: A stale element reference exception is thrown in one of two cases, the first being more common than the second. The two reasons for Stale element reference are The element has been deleted entirely. The element is no longer attached to the DOM. We face this stale element reference exception when the element we are interacting is destroyed and then recreated again. When this happens the reference of the element in the DOM becomes stale. Hence we are not able to get the reference to the element. Some other exceptions we usually face are as follows: c) WebDriverException d) IllegalStateException e) TimeoutException f) NoAlertPresentException g) NoSuchWindowException h) NoSuchElementException Question: What are the types of waits available in Selenium WebDriver? Answer: In Selenium we could see three types of waits such as Implicit Waits, Explicit Waits and Fluent Waits. Question: What is Implicit Wait In Selenium WebDriver? Answer: Implicit waits tell to the WebDriver to wait for a certain amount of time before it throws an exception. Once we set the time, WebDriver will wait for the element based on the time we set before it throws an exception. The default setting is 0 (zero). We need to set some wait time to make WebDriver to wait for the required time. Question: What is WebDriver Wait In Selenium WebDriver? Answer: WebDriverWait is applied on a certain element with defined expected condition and time. This wait is only applied to the specified element. This wait can also throw an exception when an element is not found. Question: What is Fluent Wait In Selenium WebDriver? Answer: FluentWait can define the maximum amount of time to wait for a specific condition and frequency with which to check the condition before throwing an “ElementNotVisibleException” exception. Question: How to input text in the text box using Selenium WebDriver? Answer: By using sendKeys() method Question: How to input text in the text box without calling the sendKeys()? Answer: Using Java Script Executor Question: How to clear the text in the text box using Selenium WebDriver? Answer: By Using clear method Question: How to get a text of a web element? Answer:
By using getText() method Question: How to get an attribute value using Selenium WebDriver? Answer: By using getAttribute(value) method It returns the value of the attribute passed as a parameter. HTML: <input name="nameSelenium" value="nextGeneration">Next Generation Automation</input> Selenium Code: Question: How to assert text of webpage using Selenium ? Answer: Selenium Code: Internal Advertisement: NGA Overseas Hiring Model Live Now. Model helps connect QA Automation Engineers directly with Overseas Employers for high growth Software Testing Jobs both Remote and Onsite. To know more about the offered service, click here . Question: How to click on a hyperlink using Selenium WebDriver? Answer: We use click() method in Selenium Question: How to submit a form using Selenium WebDriver? Answer: We use “submit” method on element to submit a form driver.findElement(By.id("form_1")).submit(); Alternatively, you can use click method on the element which does form submission Question: How to press ENTER key on text box In Selenium WebDriver? Answer: To press ENTER key using Selenium WebDriver, We need to use Selenium Enum Keys with its constant ENTER. driver.findElement(By.xpath("xpath")).sendKeys(Keys.ENTER); Question:How to pause a test execution for 5 seconds at a specific point? Answer: By using java.lang.Thread.sleep(long milliseconds) method we could pause the execution for a specific time. To pause 5 seconds, we need to pass parameter as 5000 (5 seconds) Thread.sleep(5000) Question: Is Selenium Server needed to run Selenium WebDriver Scripts? Answer: When we are distributing our Selenium WebDriver scripts to execute using Selenium Grid, we need to use Selenium Server. Question: What happens if I run this command. driver.get(“www.nextgenerationautomation.com”) ; Answer: An exception is thrown. We need to pass HTTP protocol within driver.get() method. driver.get("https://www.nextgenerationautomation.com"); Question: What is the alternative to driver.get() method to open an URL using Selenium WebDriver? Answer: Alternative method to driver.get(“url”) method is driver.navigate.to(“url”) Question: What is the difference between driver.get() and driver.navigate.to(“url”)? Answer: driver.get(): To open an URL and it will wait till the whole page gets loaded driver.navigate.to(): To navigate to an URL and It will not wait till the whole page gets loaded Question: Can I navigate back and forth in a browser in Selenium WebDriver? Answer: We use Navigate interface to do navigate back and forth in a browser. It has methods to move back, forward as well as to refresh a page. driver.navigate().forward(); – to navigate to the next web page with reference to the browser’s history driver.navigate().back(); – takes back to the previous webpage with reference to the browser’s history driver.navigate().refresh(); – to refresh the current web page thereby reloading all the web elements driver.navigate().to(“url”); – to launch a new web browser window and navigate to the specified URL Question: How to fetch the current page URL in Selenium? Answer: To fetch the current page URL, we use getCurrentURL() driver.getCurrentUrl(); Question: How can we maximize browser window in Selenium? Answer: To maximize browser window in selenium we use maximize() method. This method maximizes the current window if it is not already maximized driver.manage().window().maximize(); Question: What is the difference between driver.getWindowHandle() and driver.getWindowHandles() in Selenium WebDriver? Answer: driver.getWindowHandle() – It returns a handle of the current page (a unique identifier) driver.getWindowHandles() – It returns a set of handles of the all the pages available. Question: What are the ways to refresh a browser using Selenium WebDriver? Answer: There are multiple ways to refresh a page in selenium a) Using driver.navigate().refresh() b) Using driver.get(“URL”) on the current URL or using driver.getCurrentUrl() c) Using driver.navigate().to(“URL”) on the current URL d)driver.navigate().to(driver.getCurrentUrl()); e) Using sendKeys(Keys.F5) on any textbox on the webpage Question: What is the difference between driver.close() and driver.quit() methods? Answer: Purpose of these two methods (driver.close and driver.quit) is almost same. Both allow us to close a browser but still, there is a difference. driver.close(): To close current WebDriver instance driver.quit(): To close all the opened WebDriver instances Question: What is the difference between driver.findElement() and driver.findElements() commands? Answer: The difference between driver.findElement() and driver.findElements() commands is- findElement() returns a single WebElement (found first) based on the locator passed as parameter. Whereas findElements() returns a list of WebElements, all satisfying the locator value passed. Syntax of findElement()- WebElement textbox = driver.findElement(By.id(“textBoxLocator”)); Syntax of findElements()- List <WebElement> elements = element.findElements(By.id(“value”)); Another difference between the two is- if no element is found then findElement() throws NoSuchElementException whereas findElements() returns a list of 0 elements. Question: How to find whether an element is displayed on the web page? Answer: WebDriver facilitates the user with the following methods to check the visibility of the web elements. These web elements can be buttons, drop boxes, checkboxes, radio buttons, labels etc. a) isDisplayed() boolean elePresent = driver.findElement(By.xpath("xpath")).isDisplayed(); b) isSelected() boolean eleSelected= driver.findElement(By.xpath("xpath")).isSelected(); c) isEnabled() boolean eleEnabled= driver.findElement(By.xpath("xpath")).isEnabled(); Question: How to Handle Drop Down And Multi Select List Using Selenium WebDriver? Answer: To handle drop down and multi select list using Selenium WebDriver, we need to use Select class. The Select class is a Webdriver class which provides the implementation of the HTML SELECT tag. It exposes several “Select By” and “Deselect By” type methods. We use these methods to select or deselect in the drop down list or multi select object. The Select class is the part of the selenium package. To Handle Drop Down And Multi Select List in Selenium we use the following types of Select Methods. Types of Select Methods: i. selectByVisibleText Method ii. selectByIndex Method iii. selectByValue Method Types of DeSelect Methods: i. deselectByVisibleText Method ii. deselectByIndex Method iii. deselectByValue Method iv. deselectAll Method Example: WebElement mySelectElement = driver.findElement(By.name("dropdown")); Select dropdown = new Select(mySelectElement); dropdown.selectByVisibleText(Text); dropdown.selectByIndex(Index); dropdown.selectByValue(Value); Question: How to mouse hover on a web element using WebDriver? Answer: By using Actions class WebElement ele = driver.findElement(By.xpath("xpath")); //Create object 'action' of an Actions class Actions action = new Actions(driver); //Mouseover on an element action.moveToElement(ele).perform(); Question: How can we handle web based pop-up? Answer: Alerts are basically popup boxes that take your focus away from the current browser and forces you to read the alert message. You need to do some action such as accept or dismiss the alert box to resume your task on the browser. To handle alerts popups we need to do switch to the alert window and call Selenium WebDriver Alert API methods. There are two types of alerts. Windows Based Web Based/Browser Based To handle Browser based Alerts (Web based alert popups), we use Alert Interface. The Alert Interface provides some methods to handle the popups. While running the WebDriver script, the driver control will be on the browser even after the alert generated which means the driver control will be behind the alert pop up. In order to switch the control to alert pop up, we use the following command : driver.switchTo().alert(); Once we switch the control from browser to the alert window. We can use the Alert Interface methods to do required actions such as accepting the alert, dismissing the alert, get the text from the alert window, writing some text on the alert window etc., To get a handle to the open alert: Alert alert = driver.switchTo().alert(); To Click on OK button: alert.accept(); To click on Cancel button. alert.dismiss() To get the text which is present on the Alert. alert.getText(); To enter the text into the alert box alert.sendkeys(String stringToSend); To Authenticate by passing the credentials alert.authenticateUsing(Credentials credentials) For Windows Based, Need to use tools like AutoIT. Question: How to double click on element using Selenium ? Answer: WebElement element = driver.findElement(By.id("ElementID")); Actions builder = new Actions(driver); builder.doubleClick(element).build().perform(); Question: How to perform drag and drop in Selenium ? Answer: WebElement source = driver.findElement(By.id("Source ElementID")); WebElement destination = driver.findElement(By.id("Taget ElementID")); Actions builder = new Actions(driver); builder.dragAndDrop(source, destination ).perform(); Internal Advertisement: NGA Overseas Hiring Model Live Now. Model helps connect QA Automation Engineers directly with Overseas Employers for high growth Software Testing Jobs both Remote and Onsite. To know more about the offered service, click here . Question: How to handle hidden elements in Selenium WebDriver? Answer: It is one of the most important selenium interview questions. We can handle hidden elements by using javaScript executor (JavascriptExecutor(driver)).executeScript("document.getElementsByClassName(ElementLocator).click();"); Question: How to Find Broken Links Using Selenium WebDriver? Answer: One of the key test case is to find broken links on a webpage. Due to existence of broken links, your website reputation gets damaged and there will be a negative impact on your business. It’s mandatory to find and fix all the broken links before release. If a link is not working, we face a message as 404 Page Not Found. Let’s see some of the HTTP status codes. 200 – Valid Link 404 – Link not found 400 – Bad request 401 – Unauthorized 500 – Internal Error Consider a test case to test all the links in the home page of “NextGenerationAutomation.com” Below code fetches all the links of a given website (i.e.,NextGenerationAutomation.com) using WebDriver  commands and reads the status of each href link with the help of  HttpURLConnection  class. Question: What is JavaScriptExecutor and in which cases JavaScriptExecutor will help in Selenium automation? Answer: In general, we click on an element using click() method in Selenium. For example: In general, we click on an element using click() method in Selenium. Sometimes web controls don’t react well against selenium commands and we may face issues with the above statement (click()). To overcome such kind of situation, we use JavaScriptExecutor interface. It provides a mechanism to execute Javascript through Selenium driver. It provides “executescript” & “executeAsyncScript” methods, to run JavaScript in the context of the currently selected frame or window. There is no need to write a separate script to execute JavaScript within the browser using Selenium WebDriver script. Just we use predefined interface named ‘Java Script Executor’. We need to import the JavascriptExecutor package in the script. Package: import org.openqa.selenium.JavascriptExecutor; Syntax: JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript(Script,Arguments); Script – The JavaScript to execute Arguments – The arguments to the script(Optional). May be empty. Returns – One of Boolean, Long, String, List, WebElement, or null. Let’s see some scenarios we could handle using this Interface: 1. To type Text in Selenium WebDriver without using sendKeys() method 2. To click a Button in Selenium WebDriver using JavaScript 3. To handle Checkbox 4. To generate Alert Pop window in selenium 5. To refresh browser window using Javascript 6. To get innertext of the entire webpage in Selenium 7. To get the Title of our webpage 8. To get the domain 9. To get the URL of a webpage 10. To perform Scroll on an application using Selenium 11. To click on a SubMenu which is only visible on mouse hover on Menu 12. To navigate to different page using Javascript Question: How to verify PDF content using Selenium 3.0? Answer: NextGeneration Automation will explain the procedure to verify PDF file content using java WebDriver. As some time we need to verify content of web application PDF file, opened in browser. Use below code in your test scripts to get PDF file content. //get current URL PDF file URL URL url = new URL(driver.getCurrentUrl()); //create buffer reader object BufferedInputStream fileToParse = new BufferedInputStream(url.openStream()); PDFParserPDFParser = newPDFParser(fileToParse); PDFParser.parse(); //savePDF text into strong variable String pdftxt = newPDFTextStripper().getText(pdfParser.getPDDocument()); //closePDFParser object PDFParser.getPDDocument().close(); After applying above code, you can store all PDF file content into “pdftxt” string variable. Now you can verify string by giving input. As if you want to verify “Selenium or WebDiver” text. Use below code. Assert.assertTrue(pdftxt.contains(“Next Generation Automation”)); Question: How to handle Ajax calls in Selenium WebDriver? Answer: Handling AJAX calls is one of the common issues when using Selenium WebDriver. We wouldn’t know when the AJAX call would get completed and the page has been updated. In this post, we see how to handle AJAX calls using Selenium. AJAX stands for Asynchronous JavaScript and XML. AJAX allows the web page to retrieve small amounts of data from the server without reloading the entire page. AJAX sends HTTP requests from the client to server and then process the server’s response without reloading the entire page. To handle AJAX controls, wait commands may not work. It’s just because the actual page is not going to refresh. When you click on a submit button, the required information may appear on the web page without refreshing the browser. Sometimes it may load in a second and sometimes it may take longer. We have no control over loading time. The best approach to handle this kind of situations in selenium is to use dynamic waits (i.e. WebDriverWait in combination with ExpectedCondition) Some of the methods which are available are as follows: 1. titleIs() – The expected condition waits for a page with a specific title. wait.until(ExpectedConditions.titleIs(“Deal of the Day”)); 2. elementToBeClickable() – The expected condition waits for an element to be clickable i.e. it should be present/displayed/visible on the screen as well as enabled. wait.until(ExpectedConditions.elementToBeClickable(By.xpath("xpath"))); 3. alertIsPresent() – The expected condition waits for an alert box to appear. wait.until(ExpectedConditions.alertIsPresent()) !=null); 4. textToBePresentInElement() – The expected condition waits for an element having a certain string pattern. wait.until(ExpectedConditions.textToBePresentInElement(By.id(“title’”), “text to be found”)); Question: List some scenarios which we cannot automate using Selenium WebDriver? Answer: 1. Bitmap comparison is not possible using Selenium WebDriver 2. Automating Captcha is not possible using Selenium WebDriver 3. We can not read bar code using Selenium WebDriver Question: What is Object Repository in Selenium WebDriver? Answer: Object Repository is used to store element locator values in a centralized location instead of hard coding them within the scripts. We do create a property file (.properties) to store all the element locators and these property files act as an object repository in Selenium WebDriver. Question: How you build Object Repository in your project? Answer: In QTP, there is an Object Repository concept. When a user records a test, the objects and its properties are captured by default in an Object Repository. QTP uses this Object Repository to play back the scripts. Coming to Selenium, there is no default Object Repository concept. It doesn’t mean that there is no Object Repository in Selenium. Even though there is no default one still we could create our own. In Selenium, we call objects as locators (such as ID, Name, Class Name, Tag Name, Link Text, Partial Link Text, XPath, and CSS). Object repository is a collection of objects. One of the ways to create Object Repository is to place all the locators in a separate file (i.e., properties file). But the best way is to use Page Object Model. In the Page Object Model Design Pattern, each web page is represented as a class. All the objects related to a particular page of a web application are stored in a class. Question: What is Page Object Model in Selenium? Answer: Page Object Model is a Design Pattern which has become popular in Selenium Test Automation. It is widely used design pattern in Selenium for enhancing test maintenance and reducing code duplication. Page object model (POM) can be used in any kind of framework such as modular, data-driven, keyword driven, hybrid framework etc. A page object is an object-oriented class that serves as an interface to a page of your Application Under Test(AUT). The tests then use the methods of this page object class whenever they need to interact with the User Interface (UI) of that page. The benefit is that if the UI changes for the page, the tests themselves don’t need to change, only the code within the page object needs to change. Subsequently, all changes to support that new UI is located in one place. Question: What is Page Factory? Answer: We have seen that ‘Page Object Model’ is a way of representing an application in a test framework. For every ‘page’ in the application, we create a Page Object to reference the ‘page’ whereas a ‘Page Factory’ is one way of implementing the ‘Page Object Model’. Page Object is a class that represents a web page and hold the functionality and members. Page Factory is a way to initialize the web elements you want to interact with within the page object when you create an instance of it. Code Snippet: @FindBy(how=How.XPATH, using="//div[text()='Account Settings']") WebElement profileDropdown; @FindBy(how=How.XPATH, using="//text()[.='Log Out']/ancestor::span[1]") WebElement logoutLink; @FindBy(how=How.XPATH, using="///div[text()='Good afternoon, SoftwareTesting!']") loggedInUserNameText; FbLoginPage loginpage = PageFactory.initElements(driver, FbLoginPage.class); Question: What are the advantages of Page Object Model Framework? Answer: Code reusability – We could achieve code reusability by writing the code once and use it in different tests. Code maintainability – There is a clean separation between test code and page specific code such as locators and layout which becomes very easy to maintain code. Code changes only on Page Object Classes when a UI change occurs. It enhances test maintenance and reduces code duplication. Object Repository – Each page will be defined as a java class. All the fields in the page will be defined in an interface as members. The class will then implement the interface. Readability – Improves readability due to clean separation between test code and page specific code Question: How can you use the Recovery Scenario in Selenium WebDriver? Answer: By using “Try Catch Block” within Selenium WebDriver Java tests. try { driver.get("www.SoftwareTestingMaterial.com"); }catch(Exception e){ System.out.println(e.getMessage()); } Question: How to verify response 200 code using Selenium ? Answer: Next Generation Automation will explain you to verify HTTP response code 200 of web application using java webdriver. As webdriver does not support direct any function to verify page response code. But using "WebClient" of HtmlUnit API we can achieve this. Html unit API is GUI less browser for java developer, using WebClent class we can send request to application server and verify response header status. Below code, used in my Webdriver script to verify response 200 of web application String url = "http://www.google.com/"; WebClient webClient = new WebClient(); HtmlPage htmlPage = webClient.getPage(url); //Verify response Assert.assertEquals(200,htmlPage.getWebResponse().getStatusCode()); Assert.assertEquals("OK",htmlPage.getWebResponse().getStatusMessage()); If HTTP authentication is required in web application use below code. String url = "Application Url"; WebClient webClient = new WebClient(); DefaultCredentialsProvider credential = new DefaultCredentialsProvider(); //Set some example credentials credential.addCredentials("UserName", "Passeord"); webClient.setCredentialsProvider(credential); HtmlPage htmlPage = webClient.getPage(url); //Verify response Assert.assertEquals(200,htmlPage.getWebResponse().getStatusCode()); Assert.assertEquals("OK",htmlPage.getWebResponse().getStatusMessage()); Question: Where you have applied OOPS in Automation Framework Answer: OOPS concepts contains following: a) ABSTRACTION b) INTERFACE c) INHERITANCE d) POLYMORPHISM e) METHOD OVERLOADING f) METHOD OVERRIDING g) ENCAPSULATION Internal Advertisement: NGA Overseas Hiring Model Live Now. Model helps connect QA Automation Engineers directly with Overseas Employers for high growth Software Testing Jobs both Remote and Onsite. To know more about the offered service, click here . ABSTRACTION In Page Object Model design pattern, we write locators (such as id, name, xpath etc.,) in a Page Class. We utilize these locators in tests but we can’t see these locators in the tests. Literally we hide the locators from the tests. Abstraction is the methodology of hiding the implementation of internal details and showing the functionality to the users. INTERFACE Basic statement we all know in Selenium is WebDriver driver = new FirefoxDriver(); WebDriver itself is an Interface. So based on the above statement WebDriver driver = new FirefoxDriver(); We are initializing Firefox browser using Selenium WebDriver. It means we are creating a reference variable (driver) of the interface (WebDriver) and creating an Object. Here WebDriver is an Interface as mentioned earlier and FirefoxDriver is a class. An interface in Java looks similar to a class but both the interface and class are two different concepts. An interface can have methods and variables just like the class but the methods declared in interface are by default abstract. We can achieve 100% abstraction and multiple inheritance in Java with Interface. INHERITANCE We create a Base Class in the Framework to initialize WebDriver interface, WebDriver waits, Property files, Excels, etc., in the Base Class.We extend the Base Class in other classes such as Tests and Utility Class. Extending one class into other class is known as Inheritance. POLYMORPHISM Combination of overloading and overriding is known as Polymorphism. We will see both overloading and overriding below. Polymorphism allows us to perform a task in multiple ways. METHOD OVERLOADING We use implicit wait in Selenium. Implicit wait is an example of overloading. In Implicit wait we use different time stamps such as SECONDS, MINUTES, HOURS etc. A class having multiple methods with same name but different parameters is called Method Overloading METHOD OVERRIDING We use a method which was already implemented in another class by changing its parameters. To understand this you need to understand Overriding in Java. Declaring a method in child class which is already present in the parent class is called Method Overriding. Examples are get and navigate methods of different drivers in Selenium ENCAPSULATION All the page classes in a framework are an example of Encapsulation. In POM classes, we declare the data members using @FindBy and initialization of data members will be done using Constructor to utilize those in methods. Encapsulation is a mechanism of binding code and data together in a single unit. Question: How to handle browser (chrome) notifications in Selenium? Answer: In Chrome, we can use ChromeOptions as shown below. ChromeOptions options = new ChromeOptions(); options.addArguments("disable-infobars"); WebDriver player = new ChromeDriver(options); Question: How To Highlight Element Using Selenium WebDriver Answer: In selenium we need to get the help of JavascriptExecutor interface to achieve this. Let’s make the above code as a function. So whenever we want to highlight particular element, we could use this method to achieve our goal. Question: How to achieve Database testing in Selenium? Answer: As we all know Selenium WebDriver is a tool to automate User Interface. We could only interact with Browser using Selenium WebDriver. Sometimes, we may face a situation to get the data from the Database or to modify (update/delete) the data from the Database. If we plan to automate anything outside the vicinity of a browser, then we need to use other tools to achieve our task. To achieve the Database connection and work on it, we need to use JDBC API Driver. The Java Database Connectivity (JDBC) API provides universal data access from the Java programming language. Using the JDBC API, you can access virtually any data source, from relational databases to spreadsheets and flat files. It lets the user connect and interact with the Database and fetch the data based on the queries we use in the automation script. JDBC is a SQL level API that allows us to execute SQL statements. It creates a connectivity between Java Programming Language and the database. Using JDBC Driver we could do the following i. Establish a Database connection ii. Send SQL Queries to the Database iii. Process the results Script to get the data from the Database – Database Testing: Script to update the data in the Database – Database Testing: Script to delete the data in the Database – Database Testing: Internal Advertisement: NGA Overseas Hiring Model Live Now. Model helps connect QA Automation Engineers directly with Overseas Employers for high growth Software Testing Jobs both Remote and Onsite. To know more about the offered service, click here . Question: How To Download File Using AutoIT In Selenium WebDriver Answer: Download File Using AutoIT In Selenium WebDriver Selenium can not handle file downloading because browsers use native dialogs for downloading files. Sometime we need to download file from AUT(Application Under Test). There are several ways to automate download file in Selenium but here we see download file using AutoIT in Selenium WebDriver. AutoIt Introduction: AutoIt Tool is an open source tool. It is a freeware BASIC-like scripting language designed for automating the Windows GUI and general scripting. It uses a combination of simulated keystrokes, mouse movement and window/control manipulation in order to automate tasks in a way not possible or reliable with other languages (e.g. VBScript and SendKeys). AutoIt is also very small, self-contained and will run on all versions of Windows out-of-the-box with no annoying “runtimes” required! Now the question is how we do download file using AutoIT Tool in Selenium WebDriver. Follow the below steps: Step 1: Download Autoit tool from https://www.autoitscript.com/site/autoit/downloads/ and install it Step 2: Open SciTE Script editor and add the below mentioned AutoIt script and save it as ‘DownloadFile.au3’ in your system. AutoIt Script: Step 3: Once the file is saved, we need to convert the ‘DownloadFile.au3’ to ‘DownloadFile.exe’. To do this we need to compile the ‘DownloadFile.au3’ Right click on the file ‘DownloadFile.au3’ and click on ‘Compile Script’ to generate an executable file ‘DownloadFile.exe’ Step 4: In Eclipse, add the below mentioned Selenium Script and run In the above Selenium Script, we did call the AutoIt Script after clicking on the browser button which transfers windows popup box and download the required file. #NGAutomation Building better for tomorrow

More
bottom of page