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

Contact Us:

info@nextgenerationautomation.com

Customer Care: (Mon to Fri : 10 AM to 5 PM)

+91 95883-35889

© 2020 by Next Generation Automation