Today we are going to share with you how to learn about automated testing, starting with job requirements. If you look at recent career opportunities, when it comes to “software test engineer”, there are almost always requirements for automated testing. Such as:

1. Knowledge of Selenium, APPIum or other automated testing frameworks;

2, Familiar with at least one object-oriented development language, have some code background is preferred;

Familiar with Java or Python, have some test automation experience and code reading ability;

4. Familiar with interface integration testing, able to use JMeter, Postman, SoapUI and other interface testing tools.

And so on. I’m not going to list them all. Suddenly automated testing is everywhere, as if the test engineer’s ability to automate testing has become standard. This article starts from the requirements of automated testing, simple automated testing literacy, strive to let you understand automated testing in a minute.

So we from the “automated test” five words to analyze.

Test: We’re familiar with this one. The classic explanation is “program testing is the process performed to find errors.” This definition, from G.J.Myers’s classic book the Art of Software Testing, shows us what testing is all about: process.

Testing is a process performed to find errors in software. This process can include the following:

1. Run the tested software and perform its functions;

2. Run other tools to check inside and outside the software.

In short, it’s a process, a process of execution. Here’s a diagram of the most common test:

automation

In combination with the above, automated testing is to make the software under test run itself, performing the functions of the software; Or let other tools run their own, examining the inside and outside of the software.

Since testing is a process, automated testing is the process of automatic execution.

Next we discuss a core issue: automation. What does automatic mean? Let the machine move, it is automatic. Wouldn’t it be clearer to say that automating a machine to run through all the functions of a piece of software as required by a human is automation?

Here’s the thing, the machine. Let the machine move, it is the man who commands the machine to operate. Have you ever thought about how machines know what humans want? In the example above, the test lead simply tells the test engineer and the command delivery is complete. But human direct communication, far easier than man-machine communication ah.

First, machines can’t understand “human language”, whether in Chinese or English…

Secondly, the machine will default “assembly language”, should be the vast majority of children’s shoes will not, and the short-term master can not come.

Okay, “Programming language.” It’s time to pull out our other chart:

With a programming language, there is a bridge between man and machine, and the rest of the job is to help the machine choose tools. Do the corresponding test, you need to find the corresponding tool, so that automation automatically up. Having come here, I hope you’ve understood the basic principle of automatism.

We then continue our discussion of automated testing by introducing a variety of common tools. Before we explore further, let’s look at the common categories of testing. Under different classification dimensions, we can divide into different tests, and we will analyze them carefully.

From the practice process of software testing: unit testing, integration testing, confirmation testing, system testing, acceptance testing……

From the method and strategy of software testing: white box testing, black box testing, gray box testing……

From the perspective of software testing: functional testing, performance testing, compatibility testing, security testing, exploratory testing……

From the technical degree of software testing: manual testing, automated testing, test development……

Only part of the classification of these dimensions can be done by “manual visual inspection” of “human flesh test”, the rest is actually done by machine in a broad sense. Let’s extract this section of testing: system testing – black box testing – functional testing – manual testing. Undeniably, this line is currently the focus of software testing practitioners, and the area outside of it is where automated testing comes in.

Automated testing

Let’s take a look at the major automated testing solutions, all of which, without exception, consist of a programming language for human-machine communication, plus tools for machine manipulation.

Functional automation testing

VBScript + QTP(HP UFT), commercial function automation test scheme

Python/PHP/Java/C#/JavaScprit/Ruby + Selenium/Appium + unit testing framework, open source functional automation testing solution

Selenium/Appium itself is not a testing tool, but a tool that a machine uses to operate a browser, and it understands multiple languages:

Java, C# these two heavy (zhong) languages

Python, Ruby, two scripting light languages

PHP and JavaScript, two languages that deal specifically with the Web

The tool plus the specified language can let the machine to operate the browser, but at this point cannot do the testing, so each language’s own unit testing framework is needed to complete the construction of the functional automation test solution.

The Python 2 + Robot Framework + Selenium Library plugin + unit testing Framework is a temporary solution, which is not recommended by the author, mainly based on two points:

Philosophy: This is a keyword-based solution, so keywords are the specialty of QTP (HP UFT), not the intent of Selenium

Technology: Python 2 is going to die out after all. If you’re doing automated testing from scratch, you might as well start with Python 3. However, the Robot Framework doesn’t support Python 3…

Python/Java/C#/JavaScprit/Ruby + Gauge, another open source functional automation test solution

Thoughtworks’ automated testing tool based on BDD concepts

Gauge is a complete test scheme in itself

Gauge is a test solution that covers everything from requirements analyst (BA) to test engineer (QA)

Java/Python + Macaca, alibaba’s functional automation test solution, the disadvantage is less documentation

JavaScript + TestCafe, DevExpress’s open source automated testing solution

Pure Node.js-TestCafe does not use Selenium, and plug-ins are not required to run tests in a real browser. It is built on top of Node.js, so it integrates with modern development tools and works well

No additional setup or configuration – TestCafe is all setup immediately after running test NPM install

Complete testing tool – Using a single startup command, TestCafe launches the browser, runs tests, collects results, and generates reports

JavaScript + Postman, a free Web interface for automated testing solutions

Groovy + SoapUI, open source Web interface automation test solution

Automated performance testing

Java/C + HP LoadRunner, commercial version of the performance test solution

Java + JMeter, open source version of the performance test solution

Python + Locust, open source performance test solution

Here, we borrow a diagram from Martin Fowler, one of the founders of agile development methods, who used the concept of a pyramid to show the level of testing.

Programming languages, object-oriented programming is preferred, because a large number of open source technical solutions are based on object-oriented programming

Third party testing tools and testing frameworks, these are mainly through the official website documentation

The concept and design of the test, the tools and the language, are only the means of testing, how to prepare the test data, how to set up the test checkpoints and test steps, these determine the success of the test

In addition, the comprehensive front-end and back-end server technology is the guarantee of test execution.

Above, hope to help you, have been helped to the friends welcome to praise, comment.