The practice path of a ten-year test, I hope it can help you clarify the reality

For newcomers who have just entered the software testing job, how to grow quickly and healthily on the career path, the author talks about his own views:

1. Interest is the best teacher For software testing work, it is usually relatively boring. If there is no interest, it is difficult to last.

I recently participated in a software testing project. In the testing team, there were three school students who came to work in the company as part-timers. They were all undergraduates and postgraduates majoring in software, and they all had good foundations. However, only one of them performed the most, because he cherished this social practice job opportunity, worked hard, and found many high-priority bugs. The other two students withdrew for various reasons after participating in the project for less than a month. In my communication with them, one of them said that the testing work is too boring and not challenging, and he prefers to do software development work. Because this classmate doesn't like to do software testing, he actually lacks a basic understanding of software testing technology. So he only found 3 bugs during the 7-day testing work (under normal circumstances, other testers can find 5 bugs per day). Therefore, he has the lowest effectiveness from the performance appraisal. Although another classmate is willing to do software testing, he feels that the current black-box testing is too simple to learn advanced techniques of testing technology. He prefers to learn white-box testing and be able to test the software source code by himself. The current project does not have this part of the content, so although his work performance is also good, he is not very motivated. Therefore, it is suggested that when looking for a job, students first need to know whether you are willing to do software testing, whether you are willing to do white box testing or functional black box testing, and do not blindly participate in the work. It's all a waste.

2. Testers must learn to think. Testing is a technical job and needs to learn to think proactively.

If you meet a good test supervisor (team leader), he will take the initiative to solve the actual technical difficulties of your test, which is your luck. But the test problem is complicated, and the test supervisor is very busy. He doesn't have time to solve any technical problems you encounter. You need to analyze the nature of the problem yourself, try various solutions, and search for articles on the Internet. It is best if you still can't solve it. Ask your supervisor for help. We are opposed to appearing at a loss when encountering problems, and don't ask some "mentally retarded" questions, otherwise the supervisor will think that you are not good at solving problems and lacking in learning ability, which will be detrimental to future development. How do testers think? Think in terms of the phenomenon of the problem. Is the problem caused by lack of professional knowledge in testing, or is it caused by vague and wrong test documents such as test cases, is it an individual phenomenon, or is it a common phenomenon that exists in other contents of the test project. The test should be viewed from the perspective of simulating the user's use, so the severity of the problem should be analyzed from the perspective of the final use. Before asking about the final solution, make sure you have tried various solutions based on your own experience, and try to tell the test supervisor about the problems and guesses you have found, to prove that you have actively thought about it, but have not found a good solution, Or it is not sure whether the method is feasible.

3. Choose suitable testing and learning materials. The technology of software testing is extensive and profound. Where should beginners start?

You can learn from the following aspects: The first is the training materials provided by the company. Testing New employees generally have to go through a short training after arriving in the company, which is the best first-hand material for learning. The pertinence is particularly strong, and it is a summary of the test knowledge that the company will use in the future. It is very pertinent and practical. If you have any questions that you don’t understand, you can ask them at any time, because you are a newcomer to the test, and if you don’t know what to ask, no one will doubt your ability. The second is to learn with the help of test documents of test projects, including test plans, test cases, and test defect databases. You can first look at what bugs have been found before, how these bugs were discovered, what are the rules and characteristics, and learn how others write tests. bug report. The third is to read test books and test websites and forums. There are a lot of these contents. It is recommended to use the time after work to selectively choose test books according to your own knowledge, and read the basics first. The content quality of officially published books is relatively high, while the articles on test websites and forums are mixed, some are just a few words, and many still have errors. Therefore, you need to have a certain ability to identify, otherwise it will be misleading and waste time.

4. Consolidate the test knowledge base. To practice martial arts, you need to practice "squatting horse stance" first. Otherwise, you can only learn a few superficial moves such as knives, guns and sticks, and even hurt yourself. Martial arts masters have a solid foundation. The inner strength is very deep.

The same is true for software testing. Many newcomers in the testing industry hope to take shortcuts, and often listen to the propaganda of various testing and training institutions, thinking that after a few days of ability improvement classes, they can enter the hall of testing masters. This is wrong, and they will suffer a lot. . Another mistake is to blindly learn various large-scale commercial automated testing software before learning the basic concepts of testing. As a result, it takes a lot of time and money to learn the specific operation of the tools. When it comes to actual test projects, tools cannot be effectively used to solve actual test problems. In fact, as a novice tester, most of them start with manual functional testing, and large-scale automated testing can only be used if you become a testing master. In addition, the operation of testing tools is a very simple technical issue. The key is how to play the role of testing tools, which requires testing strategies. Therefore, beginners should learn the basic knowledge of testing honestly, learn various testing terms, testing concepts, testing classifications, testing processes, and the execution process of testing items, etc. If you don't understand these things, your future career development will be restricted. Learning is a painful process, but learning is an inevitable way to enhance skills. There is no shortcut to learning test knowledge. It needs to be accumulated over time, hard work, thinking, and summary.

5. Continuous learning of industry knowledge In addition to learning and mastering testing technology, testers also need to continuously learn industry knowledge. This is the best way to distinguish ordinary testing technicians from testing industry experts.

What industry knowledge do you learn? Depending on the application domain of the software you are testing. For example, if you are testing application software in the telecommunications industry, then you need to learn the knowledge of the telecommunications industry, including terminology, business and industry technology. How to study it? Can communicate with customers, communicate with developers, read professional books and articles. Learning industry knowledge is a process of continuous improvement. Every industry has a very systematic knowledge structure. First, learn the theories and techniques most needed in the work. Then when there are opportunities and interests, continue to refine and deepen. Advanced testers need to be proficient in testing technology, master industry knowledge, and be able to provide industry software testing and quality assurance solutions. For starters, realize that with consistent effort, it is possible to become an expert in the testing industry. A journey of a thousand miles begins with a single step, and the most important thing at present is to start with testing the introductory knowledge.

 Software testing is an unfathomable industry. One of its characteristics is that it is easy to get started and difficult to go deep. To be honest, as an experienced tester, I dare not say with certainty that I have reached the late stage.

Testers must be proficient in a programming language, such as Python, JAVA, and C++, which is the basis for in-depth learning and testing. Some entry-level testers may be able to fool them if they don’t understand, but the poster said that they don’t know the programming language in the later stage of the test. In addition to the language, it is necessary to master a performance testing tool on the Internet, such as JMeter, LoadRunner, etc. These are the foundations of testers. I will not go into details. If you follow the route I planned below to learn, you can go a lot detour. (I put the supporting learning courseware on the small card at the end, interested friends can click)

The first stage of testing basics
Testing basics is the most important part of software testing. As long as you are doing testing, no matter what kind of testing, you must learn the basics and theoretical knowledge of testing.
What is the best level of learning? It is best to be able to understand and retell it in your own words.
After all, during the initial test of the interview, the questions asked are all assessed from the basic theory.
What is the basis of the test?

The definition of test, the classification of test, the method of test, the life cycle of test.
Writing of test plans, test scenarios, test strategies, and test cases.
The definition of BUG, ​​the classification of BUG, ​​the six elements of BUG, ​​and the life cycle of BUG.
The relationship between testing and development processes, waterfall flow, V-shaped, W-shaped (double V), spiral, agile, etc.
Analysis and management methods such as PDCA and 5W2H
Quality management system CMMI (understanding)
Well, it is probably the above content. All of the above are theoretical and document capabilities. As long as you are willing to memorize and write, you can master them independently.

Common testing tools in the second stage
Testing tools are always the right-hand man of software testers. You can’t completely rely on tools, but you can’t be without tools. In the process of learning software, you must focus on the use of intermediate software testing tools. The figure below covers elementary and intermediate levels If you want to learn the testing tools that software testing engineers need, start learning.

In the software testing professional circle, there are thousands of tools, and it is impossible to use all of them. At least you must know which tools are available, when to use which tools, and what problems each tool can solve, and then apply several tools in depth. , Let me summarize it for you below.

test management tool

Zen Road: simple and easy to use, mainstream in the market, mostly in the Internet industry
Jira: simple and easy to use
QC/ALM: complex, charged, and used more in the telecom/financial industry
bugzilla: simple in function
svn: code and document management tool
git: but multi-branch management better than svn

Interface Test Tool

Jmeter (open source)
postman
SoapUI
recommends using jmeter and postman.

performance testing tool

loadrunner: large and comprehensive, it is still a bit difficult to master, a heavyweight tool, past and present is the industry leader
jmeter: performance open source testing tool based on java platform, in fact, it is also very powerful, and it is relatively easy to use
Locust: one based on python performance testing tool

White Box Testing Tools

junit/testng: unit testing framework under java
unittest/pytest: unit testing framework under python
cppunit: cross-platform c++ unit testing framework
PhpUnit: unit testing framework under Php language
TestBed: a heavyweight white box testing software that can Carry out unit testing, integration testing, and static testing, commonly used in the military industry
Klockword: static testing tool, commonly used in the military industry

Continuous Integration Tool


Jenkins: Hudson, a relatively common CI tool

network testing tools

Based on the HTTP/HTTPs protocol, the network testing tools include:
wireshark
fiddler
charles

app automation tools

appium: This should be regarded as the most popular app-based automated testing framework
at
present
. Test, use Python language
Robotium: a foreign Android automated testing framework, usage comparison

web security testing tool


Appscan: It is a tool that is used a lot. After scanning, most of the vulnerabilities can be found out
.
, the processing speed is very fast, and it can handle 2000 requests per second.

The third stage of code learning
Well, after learning the above two parts, congratulations, you are already an excellent junior test engineer.
Next, you have to consider your development direction.
Should you become an automated test engineer?
Or a performance test engineer?
Or a security test engineer?
ah! This question is so difficult! I don't know how to choose.
Anyway, I know a little bit about everything, and I can meet for any position.
Regarding the choice of direction, see my article

Well, I believe you already have the answer in your heart, then let's continue to talk about it below.
At this stage, we should learn code. Regarding the choice of programming language, I recommend Java or python.
There is also a database that must be mastered! In the study of tools, I think you can already master the related applications of the database!
So now you can learn programming languages,
but you don't have to learn as deeply as development.
For example, Java, you only need to learn the JavaSE part is enough for you. The same is true for python, just learn the basics.
In short, you can choose one of the two to study in the early stage.
What? You ask me what I learned.
Of course I can do both,
hahahahahahaha, no surprise! Not surprisingly! 

Automation direction

When you have basically mastered the code, um, very good, the next step is to learn various automated tests.

Various single-ended testing frameworks: unittest (python), pytest (python), JUnit (java)
WEB automated testing framework: selenium (applicable to java\python\javascript)
APP automated testing framework: appium (applicable to java\python\javascript )
The above content, choose according to the language you learn.
Appiunm and selenium are selected according to the projects you participate in.
But it doesn't matter, anyway, sooner or later you have to learn.
There are too many tutorials in this part. After you have learned the basics of programming, just go to Baidu, and many blog forums have tutorials.
And depending on your level at that time, you can easily understand it.

performance direction

The mastery of loadrunner and jmeter is more in-depth.
You can write scripts by hand, off the record.
Learned multi-threaded programming, can write java or python by hand, and directly implement pressure testing without tools.
Learning linux, after all, performance always deals with servers.
Learn the relevant knowledge of the system architecture, so that you can analyze the bottleneck of the system more easily.
To be honest, the hint of performance direction is more difficult, because there are too many things to master.
The performance test has been done in depth, which is basically the level of the architect.
Maybe you are now looking at this performance-oriented learning with a look of confusion.
It doesn't matter, when you learn the programming language above, you won't be confused.

 

security direction

Penetration testing
SQL injection,
brute-force cracking ,
database removal ,
etc.
In fact, security testing is basically biased towards network attack and defense, which is the legendary hacker, but we are all good people, and the development direction of this is white hat.
It is recommended to know Chuangyu's learning system.
I guess you are even more confused when you see this.
It's okay, you'll know what I'm talking about when you learn the basics.
After all, you are still a rookie.
Don't bother with such little things.

Everyone at this stage, the normal situation should be the level of an intermediate test engineer.

The fourth stage of architecture learning


After the first three stages of learning are completed, you should consider how to write code more reasonably.
How to test more comprehensively.
How can we better guarantee the quality of the project.
In my opinion, at this stage, you should go back and relearn the basics of testing.
Because the improvement at this stage is the improvement of thinking and methods.
All the above are teaching you how to do it.
At this stage you have to discover for yourself why you did what you did.
After crossing this stage, you can basically become an expert.
Learning is a matter of course. At this time, you should have mastered a lot of frameworks, and you can even develop suitable frameworks yourself.
Automated testing frameworks, performance testing frameworks, and more.
Already have a set of things of their own.
If you pretend to be aggressive in a group or on a forum, others will respectfully call you a big boss.
Maybe you have also learned some other technologies, and even stepped into the direction of the full stack.
In short, at this stage, there is no learning route.

If the article is helpful to you, remember to like, bookmark, and add attention. I will share some dry goods from time to time...

Finally:  I have compiled a complete set of software testing learning tutorials for you. If you need it, you can get it for free 【保证100%免费】

                           

Guess you like

Origin blog.csdn.net/nhb687096/article/details/131168862