Tuesday 17 November 2020

Remote QA: Pass Over Layers of the Test Automation Pyramid

 Indeed, even before the command of agile techniques like Scrum, we realized we ought to automate our tests. In any case, we didn't. Automated tests were viewed as costly to compose and were frequently composed months, or now and again years, after an element had been customized. One reason that the team thought it was hard to compose tests sooner was on the grounds that they were computerizing at some unacceptable level. A compelling test automation system calls for robotizing tests at three distinct levels, as appeared in the figure underneath, which portrays the test automation pyramid


At the base of the test automation pyramid is unit testing. Unit testing should be the establishment of a strong test automation technique and as such speaks to the biggest piece of the pyramid. Automated unit tests are awesome in light of the fact that they give explicit information to a software engineer—there is a bug and it's on line 35. Software engineers have discovered that the bug may truly be on line 61 or 52, however it's a lot more pleasant to have an automated unit test thin it down than it is to have a tester state, "There's a bug by they way you're recovering part records from the information base," which may speak to at least 1,000 lines of code. Likewise, on the grounds that unit tests are generally written in a similar language as the framework, developers are frequently most open to keeping in touch with them. We should skip for a second the center of the test automation pyramid and bounce right to the top: the user interface level. 


Automated user interface testing is set at the highest point of the test automation pyramid since we need to do as meager of it as could be expected under the circumstances. Assume we wish to test a basic number cruncher that permits a user to enter two numbers, click either a duplicate or separation catch, and afterward observe the consequence of that activity. To test this through the user interface, we would script a progression of tests to drive the user interface, type the proper qualities into the fields, press the increase or separation catch, and afterward analyze expected and real qualities. Testing thusly would surely work yet would be weak, costly, and tedious. Furthermore, testing an application this way is incompletely redundant—consider how frequently a set-up of tests like this will test the user interface. Each test case will conjure the code that associates the increase or gap catch to the code in the guts of the application that figures it out. Each test case will likewise test the code that showcases results. Etc. Testing through the user interface like this is costly and should be limited. In spite of the fact that there are many test cases that should be summoned, not all should be gone through the user interface. Furthermore, this is the place where the service layer of the test automation pyramid comes in. Albeit I allude to the center layer of the test automation pyramid as the service layer, I am not limiting us to utilizing just a service-oriented architecture. 


All applications are comprised of different services. In the manner we are utilizing it, a service is something the application does because of some information or set of data sources. Our model adding machine includes two services: multiply and divide. Service-level testing is tied in with testing the services of an application independently from its user interface. So as opposed to running twelve or so multiplication test cases through the mini-computer's user interface, we rather play out those tests at the service level. Where numerous associations have turned out badly in their test automation endeavors throughout the years has been in disregarding this entire center layer of service testing. Albeit automated unit testing is great, it can cover just such an extensive amount an application's testing needs. Without service-level testing to fill the hole among unit and user interface testing, all other testing winds up being performed through the user interface, bringing about tests that are costly to run, costly to compose, and weak.

Monday 16 November 2020

5 Open-source test automation frameworks

 As we enter the last quarter of 2020, Technosoft Academy's group chose to gather together the best open-source test automation frameworks out there, to assist you with picking the correct one for you! 

Here are the upsides and downsides of 5 diverse open-source test automation frameworks. 

1. Robot Framework 

Robot Framework (RF) is a test automation system for acknowledgment testing and acknowledgment test-driven turn of events (ATDD). This system is written in Python, however can likewise run on Jython (Java) and IronPython (.NET), and subsequently is cross-platform (Windows, Linux, or MacOS). 

Pros: 

It disentangles the test automation measure by using the keyword-driven testing (KDT) approach, which assists testers with making intelligible tests that are handily made. 

It is simple to utilize test data grammar. 

Has a rich ecosystem around it comprising of different nonexclusive test libraries and devices that are created as discrete undertakings. 

Has numerous APIs that make it profoundly extensible. 


Despite the fact that it is anything but an implicit capacity, RF empowers to execute parallel tests through pabot library or Selenium Grid. 


Cons: 

It is difficult to redo HTML reports. 

Main concern: This cross-platform system is strongly suggested on the off chance that you are focusing for KDT automation with a wide scope of libraries and augmentations. On the off chance that you need to add new keywords (through RF test library APIs), an essential information in Java/Python/C programming language is required. 


2. JUnit 

JUnit is a system for unit testing of Java applications, used to compose and run repeatable tests. 


Pros: 

Tests are written in ethical Java which is known as the main programming language around the world. 

Supports test-driven turn of events (TDD). 

Empowers you to make your own unit test case suite. 

Coordinates very well with different instruments (for instance, Maven) and with IDEs (for instance, IntelliJ). 

Has history – so it has an enormous user base that makes it simple to discover documentation on it. 


Cons: 

In the event that a deriding capacity is required, one necessities to add Mockito (or some other taunting library). 

Tests are not meaningful by non-technical individuals, since for instance the techniques names in JUnit are compelled by Java shows. 

Main concern: If you're hoping to compose unit testing for your Java application, it's presumably the most ideal decision. Be that as it may, for functional testing or non-Java applications, you ought to think about different arrangements. 


3. Spock 


Spock is a testing and particular structure for Java and Groovy applications. It depends on JUnit. 


Pros: 

Makes discernible tests and supports plain English sentences, making it simple to peruse. 

Gives the encompassing setting, so it effectively empowers you to see how to fix a disappointment. 

Has implicit ridiculing and hitting abilities. 

Supports data-driven-tests (DDT). 


Cons: 

Requires an essential information on the Groovy programming language. 

Primary concern: If your application depends on JVM and you are focusing for BDD test automation with DSL, this structure is only for you! 


4. NUnit 

NUnit is a unit testing structure for every .Net language. Initially roused by Junit, it is composed totally in C#, and has been totally overhauled to exploit many .NET language highlights. 


Pros: 

Snappy commencement and test execution. 

Accompanies affirmations and comments. 

Empowers parallel testing. 

Supports test-driven turn of events (TDD). 


Cons: 


It isn't cross-platform as it is utilized distinctly for .Net dialects. 

It doesn't incorporate into the Visual Studio ecosystem, so utilizing it implies more support. 


Main concern: A decent open-source system for C# unit testing, with a long history and great standing. Be that as it may, on the off chance that you're as of now utilizing .NET dialects, you may think about MSTest. 


5. TestNG 


TestNG is a test automation structure for Java that is roused by JUnit and NUnit, however incorporates improved and new functionalities (NG – Next Generation). It is intended to cover all the test automation classifications: unit testing, functional test, start to finish, joining testing, and so on 


Pros: 

It is effectively incorporated into the Maven cycle. 

Enables the designer to compose adaptable and amazing tests. 

Supports Data Driven testing (DDT). 

Comments are straightforward. 

Test cases can be gathered without any problem. 

Permits you to make parallel tests. 


Cons: 


Just backings Java, so you have to have in any event an essential information on the Java programming language. 

You need to put time in structure arrangement and plan. 


Main concern: If you use Java, are searching for start to finish test automation system and ready to put some time in structure arrangement – you should think about utilizing TestNG.

What is the learning curve for JavaScript?

  The language of choice for creating dynamic websites is JavaScript. You may learn JavaScript online at your own speed. You don't have ...