Switching to software testing, the road to self-study is bumpy [I hope my sharing will make you less detours]

By chance, I came into contact with the software testing industry under the recommendation of a friend, so I planned to study software testing by myself, and I experienced difficulties and setbacks along the way.

When I first started learning, I didn’t know where to start. After searching for a week, I couldn’t find a learning route. For this reason, I frantically searched for information on the Internet, but later found that the information I found was too messy, and I started to learn the difficulties as soon as I came up. The progress has been stuck in place.

Because I am not proficient in programming languages, the preliminary test script writing, debugging, execution and other operations are very difficult, and I often get stuck in a certain link and cannot move forward. This caused me to encounter great obstacles in the early stages of my studies, and at the same time felt that my self-confidence had been hit. [The study notes at the time hahahaha]

Later, by chance, I joined a qq group, and the group owner sent me a learning road map, which directly opened my Ren Du Ermai, hahaha, I put the picture below, interested friends can see it one time.

In the actual test project, I also encountered many problems. For example, when I need to conduct functional testing, I will miss some important test points due to insufficient understanding of product features and requirements; when performing performance testing, I may ignore some special situations or scenarios, resulting in test results appearing deviation. These questions made me very frustrated, and even doubted whether I was suitable for software testing.

For this reason, I would like to give some suggestions to friends who want to change careers or who are studying to avoid doing useless work while studying.

1. Generally speaking, when testing newcomers, you first need to lay a good foundation. You can test the theoretical foundation by reading some classic books or there are many free resources on the Internet. Choose the first two basic books, and you will benefit a lot.

2. At the beginning, it is not recommended to join too many technical groups or other forums to ask questions. If you encounter problems in the early stage, you can search and try to solve them yourself. Of course, you need to control a stop loss point, and don’t spend too long on a problem

3. While learning the basics by yourself, you must take good notes, and you must do it after your own understanding. You can use mind maps to connect what you have learned before and after

4. After reading a book or a stage, you can take a self-assessment and consolidate or check for omissions by finding some classic written test questions or some istqb questions, and consolidate what you have learned in a targeted manner

5. Next, you can find some projects to do or go to the crowdtest platform to see some basic project testing processes, including the writing specifications of basic test documents, etc. The testin crowdtest platform is a good platform for training, at least test case design and execution And bug exploration and submission of defects are very good.

6. At present, many platforms will offer some free public courses. Through the technical discussion group, you can receive news push, set a good time to listen to some test methods in professional fields, and you can quickly understand the general process. (Be sure to go through strict screening and choose high-quality ones, otherwise it will waste a lot of time)

The following is the general knowledge of software testing learning

Phase 1 Test Basics

The basics of testing are the most important part of software testing. As long as you are doing testing, no matter what kind of testing it is, 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 pay attention to the use of software testing tools. The following figure covers what junior and intermediate software testing engineers need Testing tools, if you want to learn well, 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

禅道:简单好用,市场主流,互联网行业居多
Jira:简单好用
QC/ALM:复杂,收费,电信/金融行业使用较多
bugzilla:功能简单
svn:代码和文档管理工具
git:但是多分支管理比svn好

Interface Test Tool

Jmeter(开源)
postman
SoapUI
推荐使用 jmeter 和 postman。

performance testing tools

loadrunner:大而全,要学精通还是有点难度,重量级工具,过去和现在都是行业老大
jmeter:基于java平台的性能开源测试工具,其实也很强大,而且比较好用
Locust:基于python的一个性能测试工具

White Box Testing Tools

junit/testng:java下的单元测试框架
unittest/pytest:python下的单元测试框架
cppunit:跨平台的c++单元测试框架
PhpUnit:Php语言下的单元测试框架
TestBed:一个重量级的白盒测试软件,可以进行单元测试、集成测试、静态测试,军工行业常用
Klockword:静态测试工具,军工行业常用

Continuous Integration Tool

Jenkins:比较常见的一种CI工具
Hudson

network testing tools

以HTTP/HTTPs协议为主,网络测试工具有:
wireshark
fiddler
charles

app automation tools

appium:这个应该算是目前最流行的基于app的自动化测试框架了
uiautomator:安卓自动化测试框架,基本上支持安卓的所有事件操作
Monkey:安卓自带的测试工具
Monkey Runner:Monkey改进版,支持自己编写脚本测试,用Python语言
Robotium:一款国外的Android自动化测试框架,用法比较

web security testing tool

appscan:算是用的非常多的一款工具了,扫描后能够将绝大部分的漏洞找出来
fiddler:网络抓包工具
burpsuite:暴力破解、抓包工具
skipfish:这是一个轻量级的安全测试工具,处理速度很快,每秒可处理2000个请求。

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.

 This post ends here, and finally, I hope that friends who read this post can gain something.

I have also prepared all the materials in this article, please reply to 【Information】to get it for free if you need it.

If you think the article is not bad, please like, share, and leave a message, because this will be the strongest motivation for me to continue to output more high-quality articles!

Guess you like

Origin blog.csdn.net/xiao1542/article/details/130581703