My Items

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

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

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

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

C# Interview Questions

Question: What is C#? Answer: C# is a computer programming language. C# was created by Microsoft in 2000 to provide a modern general-purpose programming language that can be used to develop all kinds of software targeting various platforms including Windows, Web, and Mobile using just one programming language. Today, C# is one of the most popular programming languages in the world. Millions of software developers use C# to build all kinds of software. C# is the primary language for building Microsoft .NET software applications. Developers can build almost every kind of software using C# including Windows UI apps, console apps, backend services, cloud APIs, Web services, controls and libraries, serverless applications, Web applications, native iOS and Android apps, AI and machine learning software, and blockchain applications. Question: Tell advantages of using C#? Answer: C# with the help of Visual Studio IDE, provides a rapid application development. C# is a modern, object-oriented, simple, versatile, and performance-oriented programming language. C# is developed based on the best features and use cases of several programming languages including C++, Java, Pascal, and SmallTalk. C# syntaxes are like C++. .NET and the C# library is similar to Java. C# supports modern object-oriented programming language features including Abstraction, Encapsulation, Polymorphism, and Inheritance. C# is a strongly typed language and most types are inherited by the Object class. C# supports concepts of classes and objects. Classes have members such as fields, properties, events, and methods. Here is a detailed article on C# and OOP. Question: What is an object in C#? Answer: C# language is an object-oriented programming language. Classes are the foundation of C#. A class is a template that defines what a data structure will look like, and how data will be stored, managed, and transferred. A class has fields, properties, methods, and other members. While classes are concepts, objects are real. Objects are created using class instances. A class defines the type of an object. Objects store real values in computer memory. Any real-world entity which has some certain characteristics or that can perform some work is called an Object. This object is also called an instance, i.e. a copy of an entity in a programming language. Objects are instances of classes. For example, we need to create a program that deals with cars. We need to create an entity for the car. Let’s call it a class, Car. A car has four properties, i.e., model, type, color, and size. To represent a car in programming, we can create a class, Car, with four properties, Model, Type, Color, and Size. These are called members of a class. A class has several types of members, constructors, fields, properties, methods, delegates, and events. A class member can be private, protected, and pubic. Since these properties may be accessed outside the class, these can be public. An object is an instance of a class. A class can have as many instances as needed. For example, Honda Civic is an instance of Car. In real programming, Honda Civic is an object. Honda Civic is an instance of the class Car. The Model, Type, Color, and Size properties of Honda Civic are Civic, Honda, Red, 4 respectively. BMW 330, Toyota Carolla, Ford 350, Honda CR4, Honda Accord, and Honda Pilot are some more examples of objects of Car. Question: What is Managed or Unmanaged Code? Answer: Managed Code “Managed code is the code that is developed using the .NET framework and its supported programming languages such as C# or VB.NET. Managed code is directly executed by the Common Language Runtime (CLR or Runtime) and its lifecycle including object creation, memory allocation, and object disposal is managed by the Runtime. Any language that is written in .NET Framework is managed code". Unmanaged Code The code that is developed outside of the .NET framework is known as unmanaged code. “Applications that do not run under the control of the CLR are said to be unmanaged. Languages such as C or C++ or Visual Basic are unmanaged. The object creation, execution, and disposal of unmanaged code is directly managed by the programmers. If programmers write bad code, it may lead to memory leaks and unwanted resource allocations.” The .NET Framework provides a mechanism for unmanaged code to be used in managed code and vice versa. The process is done with the help of wrapper classes. Question: What is Boxing and Unboxing in C#? Answer: Boxing and Unboxing both are used for type conversions. The process of converting from a value type to a reference type is called boxing. Boxing is an implicit conversion. Here is an example of boxing in C#. // Boxing int anum = 123; Object obj = anum; Console.WriteLine(anum); Console.WriteLine(obj); The process of converting from a reference type to a value type is called unboxing. Here is an example of unboxing in C#. // Unboxing Object obj2 = 123; int anum2 = (int)obj; Console.WriteLine(anum2); Console.WriteLine(obj); Question: What is the difference between a struct and a class in C#? Answer: Class and struct are both user-defined data types, but have some major differences: Struct The struct is a value type in C# and it inherits from System.Value Type. Struct is usually used for smaller amounts of data. Struct can’t be inherited from other types. A structure can't be abstract. No need to create an object with a new keyword. Do not have permission to create any default constructor. Class The class is a reference type in C# and it inherits from the System.Object Type. Classes are usually used for large amounts of data. Classes can be inherited from other classes. A class can be an abstract type. We can create a default constructor. Question: What is the difference between Interface and Abstract Class in C#? Answer: Here are some of the common differences between an interface and an abstract class in C#. A class can implement any number of interfaces but a subclass can at most use only one abstract class. An abstract class can have non-abstract methods (concrete methods) while in case of interface, all the methods have to be abstract. An abstract class can declare or use any variables while an interface is not allowed to do so. In an abstract class, all data members or functions are private by default while in interface all are public, we can’t change them manually. In an abstract class, we need to use abstract keywords to declare abstract methods, while in an interface we don’t need to use that. An abstract class can’t be used for multiple inheritance while the interface can be used as multiple inheritance. An abstract class use constructor while in an interface we don’t have any type of constructor. Question: What is enum in C#? Answer: An enum is a value type with a set of related named constants often referred to as an enumerator list. The enum keyword is used to declare an enumeration. It is a primitive data type that is user-defined. An enum type can be an integer (float, int, byte, double, etc.). But if you use it beside int it has to be cast. An enum is used to create numeric constants in the .NET framework. All the members of enum are enum type. There must be a numeric value for each enum type. The default underlying type of the enumeration element is int. By default, the first enumerator has the value 0, and the value of each successive enumerator is increased by 1 enum Day {Sat, Sun, Mon, Tue, Wed, Thu, Fri}; Some points about enum: Enums are enumerated data types in c#. Enums are not for the end-user, they are meant for developers. Enums are strongly typed constant. They are strongly typed, i.e. an enum of one type may not be implicitly assigned to an enum of another type even though the underlying value of their members is the same. Enumerations (enums) make your code much more readable and understandable. Enum values are fixed. Enum can be displayed as a string and processed as an integer. The default type is int, and the approved types are byte, sbyte, short, ushort, uint, long, and ulong. Every enum type automatically derives from System.Enum and thus we can use System.Enum methods on enums. Enums are value types and are created on the stack and not on the heap. Question: What is the difference between “continue” and “break” statements in C#? Answer: Using break statement, you can 'jump out of a loop' whereas by using a continue statement, you can 'jump over one iteration' and then resume your loop execution. Question: What is the difference between constant and readonly in C#? Answer: Const is nothing but "constant", a variable of which the value is constant but at compile time. It's mandatory to assign a value to it. By default, a const is static and we cannot change the value of a const variable throughout the entire program. Readonly is the keyword whose value we can change during runtime or we can assign it at run time but only through the non-static constructor. Question: Can “this” be used within a static method? Answer: We can't use 'this' in a static method because the keyword 'this' returns a reference to the current instance of the class containing it. Static methods (or any static member) do not belong to a particular instance. They exist without creating an instance of the class and are called with the name of a class, not by instance, so we can’t use this keyword in the body of static Methods. However, in the case of Extension Methods, we can use the functions parameters. Let’s have a look at the “this” keyword. The "this" keyword in C# is a special type of reference variable that is implicitly defined within each constructor and non-static method as a first parameter of the type class in which it is defined. Question: What are Properties in C#? Answer: C# properties are members of a C# class that provide a flexible mechanism to read, write or compute the values of private fields, in other words, by using properties, we can access private fields and set their values. Properties in C# are always public data members. C# properties use get and set methods, also known as accessors, to access and assign values to private fields. We have three types of properties: Read/Write, ReadOnly, and WriteOnly. Question: What are accessors? Answer: The get and set portions or blocks of a property are called accessors. These are useful to restrict the accessibility of a property. The set accessor specifies that we can assign a value to a private field in a property. Without the set accessor property, it is like a readonly field. With the 'get' accessor we can access the value of the private field. In other words, it returns a single value. A Get accessor specifies that we can access the value of a field publically. Question: What is the difference between the dispose and finalize methods in C#? Answer: The finalize and dispose, both methods are used to free unmanaged resources. Finalize Finalize is used to free unmanaged resources that are not in use, like files, database connections in the application domain and more. These are resources held by an object before that object is destroyed. In the Internal process, it is called by Garbage Collector and can’t be called manual by user code or any service. Finalize belongs to System.Object class. Implement it when you have unmanaged resources in your code, and make sure that these resources are freed when the Garbage collection happens. Dispose Dispose is also used to free unmanaged resources that are not in use like files, database connections in the Application domain at any time. Dispose explicitly it is called by manual user code. If we need to dispose method so must implement that class by IDisposable interface. It belongs to IDisposable interface. Implement this when you are writing a custom class that will be used by other users. Question: What is the difference between String and StringBuilder in C#? Answer: StringBuilder and string are both used to string values, but both have many differences on the bases of instance creation and also in performance. String String is an immutable object. Immutable is when we create string objects in code so we cannot modify or change that object in any operations like insert new value, replace or append any value with existing value in a string object. When we have to do some operations to change string simply it will dispose of the old value of string object and it will create a new instance in memory for hold the new value in string object, It’s an immutable object that holds a string value. Performance-wise, string is slow because it creates a new instance to override or change the previous value. String belongs to the System namespace. StringBuilder System.Text.Stringbuilder is a mutable object which also holds the string value, mutable means once we create a System.Text.Stringbuilder object. We can use this object for any operation like insert value in an existing string with insert functions also replace or append without creating a new instance of System.Text.Stringbuilder for every time so it’s using the previous object. That way, it works fast compared to the System.String. StringBuilder is a mutable object. Performance-wise StringBuilder is very fast because it will use the same instance of StringBuilder object to perform any operation like inserting a value in the existing string. StringBuilder belongs to System.Text.Stringbuilder namespace. Question: What are delegates in C# and the uses of delegates? Answer: A Delegate is an abstraction of one or more function pointers (as existed in C++; the explanation about this is out of the scope of this article). The .NET has implemented the concept of function pointers in the form of delegates. With delegates, you can treat a function as data. Delegates allow functions to be passed as parameters, returned from a function as a value and stored in an array. Delegates have the following characteristics: Delegates are derived from the System.MulticastDelegate class. They have a signature and a return type. A function that is added to delegates must be compatible with this signature. Delegates can point to either static or instance methods. Once a delegate object has been created, it may dynamically invoke the methods it points to at runtime. Delegates can call methods synchronously and asynchronously. The delegate contains a couple of useful fields. The first one holds a reference to an object, and the second holds a method pointer. When you invoke the delegate, the instance method is called on the contained reference. However, if the object reference is null then the runtime understands this to mean that the method is a static method. Moreover, invoking a delegate syntactically is the exact same as calling a regular function. Therefore, delegates are perfect for implementing callbacks. Delegates maintain three important pieces of information: The parameters of the method. The address of the method it calls. The return type of the method. A delegate is a solution for situations in which you want to pass methods around to other methods. You are so accustomed to passing data to methods as parameters that the idea of passing methods as an argument instead of data might sound a little strange. However, there are cases in which you have a method that does something, for instance, invoking some other method. You do not know at compile time what this second method is. That information is available only at runtime, hence Delegates are the device to overcome such complications. Question: What are sealed classes in C#? Answer: Sealed classes are used to restrict the inheritance feature of object oriented programming. Once a class is defined as a sealed class, the class cannot be inherited. In C#, the sealed modifier is used to define a class as sealed. In Visual Basic .NET the Not Inheritable keyword serves the purpose of the sealed class. If a class is derived from a sealed class then the compiler throws an error. If you have ever noticed, structs are sealed. You cannot derive a class from a struct. The following class definition defines a sealed class in C#: // Sealed class sealed class SealedClass { } Question: What are partial classes? Answer: A partial class is only used to split the definition of a class in two or more classes in the same source code file or more than one source file. You can create a class definition in multiple files, but it will be compiled as one class at run time. Also, when you create an instance of this class, you can access all the methods from all source files with the same object. Partial Classes can be created in the same namespace. It isn't possible to create a partial class in a different namespace. So use the “partial” keyword with all the class names that you want to bind together with the same name of a class in the same namespace. Question: What is boxing and unboxing in C#? Answer: Boxing and Unboxing are both used for type converting, but have some differences:Boxing Boxing is the process of converting a value type data type to the object or to any interface data type which is implemented by this value type. When the CLR boxes a value means when CLR converting a value type to Object Type, it wraps the value inside a System.Object and stores it on the heap area in the application domain. Unboxing Unboxing is also a process that is used to extract the value type from the object or any implemented interface type. Boxing may be done implicitly, but unboxing has to be explicit by code. The concept of boxing and unboxing underlies the C# unified view of the type system in which a value of any type can be treated as an object. Question: What is IEnumerable<> in C#? Answer: IEnumerable is the parent interface for all non-generic collections in System.Collections namespace like ArrayList, HastTable etc. that can be enumerated. For the generic version of this interface as IEnumerable<T> which a parent interface of all generic collections class in System.Collections.Generic namespace like List<> and more. In System.Collections.Generic.IEnumerable<T> have only a single method which is GetEnumerator() that returns an IEnumerator. IEnumerator provides the power to iterate through the collection by exposing a Current property and Move Next and Reset methods, if we don’t have this interface as a parent so we can’t use iteration by foreach loop or can’t use that class object in our LINQ query. Question: What is the difference between late binding and early binding in C#? Answer: Early Binding and Late Binding concepts belong to polymorphism in C#. Polymorphism is the feature of object oriented programming that allows a language to use the same name in different forms. For example, a method named Add that can add integers, doubles, and decimals. Polymorphism we have 2 different types to achieve that: Compile Time also known as Early Binding or Overloading. Run Time is also known as Late Binding or Overriding. Compile Time Polymorphism or Early Binding In Compile time polymorphism or Early Binding, we will use multiple methods with the same name but different types of parameters, or maybe the number of parameters. Because of this, we can perform different-different tasks with the same method name in the same class which is also known as Method overloading. Run Time Polymorphism or Late Binding Run time polymorphism is also known as late binding. In Run Time Polymorphism or Late Binding, we can use the same method names with the same signatures , which means the same type or same number of parameters, but not in the same class because the compiler doesn’t allow for that at compile time. Therefore, we can use that bind at run time in the derived class when a child class or derived class object will be instantiated. That’s why we call it Late Binding. We have to create my parent class functions as partial and in driver or child class as override functions with the override keyword

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:

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. #NGAutomation

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

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

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

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

Selenium Coding Exercises

Helps 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 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.

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 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

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

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

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

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

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

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/ 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/ 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

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/ 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

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