Time flies, and in the blink of an eye, I have worked in Ali for 8 years. The work pressure is high and the pace is fast, but I have indeed grown technically, especially when you maintain the system related to the big promotion. It took a lot to get to P7 thought
At the beginning of my career, like most testers, I first came into contact with pure functional interface testing. At that time, I was doing testing in an e-commerce company. In this technology-hungry IT industry, continuous learning is crucial. But what I did before was the most basic business work. As time passed, I became confused about my self-worth and the meaning of my position.
One is that I feel like I’m wasting time, and the other is that I’ve been doing functional testing for almost 2 years, and I feel like I’m living in a muddle every day, and my salary has never risen, and my position has never been promoted. Many colleagues around me have either been promoted or raised their salary. Either change jobs and go to work in a better company, especially feeling that I am doing nothing.
After serious thinking, I decided to join a big factory. After several months of hard work, I successfully joined Tencent. It has been eight years now. I am especially grateful for my determination and courage. I am also a person who loves to learn. The work experience of the past few years has been compiled into a complete note. This note has helped friends get 10 offers from Tencent, Ali, Meituan, etc.!
Learning routes in all directions of software testing
Just starting to learn, if you haven't even planned the complete learning steps, it is basically impossible to learn to test.
The author's successful landing also benefited from the fact that I found some high-quality notes, tutorials and guidance from some big guys on the Internet.
Here, I will also organize the technical points in all directions of learning software testing to form a summary of knowledge points in various fields. , its usefulness is that you can find the corresponding learning resources according to the above knowledge points to ensure that you learn more comprehensively.
Software testing learning (work) technical route:
You can choose the direction of software testing. Only when you choose the right direction can you learn the corresponding content. First, you need to know what kind of work you can do. Here is a brief introduction of what you can do after learning software testing:
- Functional testing of requirements
Participate in requirements review meetings, formulate test plans, write test cases, review test cases, execute test cases, submit bugs, regression verify bugs, send test reports, conduct online verification and other activities.
- Automation Test Engineer
Use automated testing tools such as Robot Framework, Python+unitest/pytest, Selenium, etc. to complete page UI automation or interface automation, improve testing efficiency, and expose problems as soon as possible.
- Performance Test Engineer
According to the project requirements, formulate a stress test plan for important interfaces, use Jmeter and other testing tools to conduct stress tests, cooperate with developers to find system bottlenecks, and produce stress test reports.
- Test Development Engineer
Some companies have special test platforms and test tools to complete functions such as bug statistics and quality analysis, interface automation statistics, etc., and this part of the development work will be undertaken by test development engineers. Test development has higher requirements for technology and coding.
Junior software test engineer professional skills reserve
1) Understand the basics of computer and software testing
a. Basic computer knowledge
Computer components, operating system classification, common system architecture (B/S and C/S), commonly used DOS commands
b. Basic theoretical knowledge of software testing
The purpose, definition, principle of software testing, product quality model, basic process of software testing
2) Commonly used Linux commands
In software testing, sometimes we need to build the test environment by ourselves, or deploy automation projects on the server. The servers basically use the Linux system, so we need to master some basic Linux commands
3) SQL statement
In software testing, the verification of test results or the preparation of test data in automation will be done by operating the database. Therefore, for the most basic addition, deletion, modification, and query SQL statements of the database, it is necessary to be able to write independently
4) Writing of manual test cases (most important)
As a software test engineer, the most basic requirement is the ability to write use cases. How to write a test case with high coverage and low repetition rate is the ability that should be constantly pursued when entering the software testing industry.
5) Defect management
Understand how to manage the bugs proposed by testers in the team, so as to ensure that the bugs of the project can be fixed in time
Mastering the above skills, for a student who has just entered the software testing industry, he will definitely be able to gain a firm foothold.
Intermediate software test engineer professional skills reserve
1. Professional skills related to interface testing
Whether it is automated testing or performance testing, or even developing in the direction of test development, the most basic thing is to test the interface. Therefore, if you want to be a good intermediate software test engineer, the first step is to be able to complete the interface test.
1) Basic theoretical knowledge related to interface and interface testing
Including the concept of interface and interface testing, the principle of interface testing, the process of interface testing, http protocol, Restful interface style. These things need to be understood
2) Use of interface tools: Postman and Jmeter
For interface testing, you can use code or tools. Usually, interface testing is done using tools at most. There is no other reason, "efficient".
3) Packet capture tools: Fiddler and Charles
During the test, in order to locate the front-end and back-end problems, we will use the packet capture tool to view the results returned by the interface. In order to locate the problem is the front-end, or the back-end.
These two tools, we generally choose one of the two to learn, because their functions are the same.
2. Programming language learning
The implementation of automated testing mainly relies on code to complete. So to be able to automate testing, you first need to master a programming language. Currently, the mainstream automated testing programming languages in the industry are python and java. I personally recommend python, because for newcomers, it is less difficult to get started. If you can study all day, you can get started with python in about 10 days
3. Automated testing and learning
After learning Python, we can start learning about automated testing.
The purpose of automated testing is mainly to reduce the time for regression testing.
Automated testing in software testing is divided into UI automation and interface automation.
After passing the above study, let's see what abilities you have?
SQL statements, Linux common commands
Manual test case writing and defect management
Use packet capture tools for front-end and back-end problem location
Use Postman or Jmeter for interface testing
Use Python for interface/UI automation testing
Knowledge points that senior test engineers need to master
At this stage, you need to broaden your knowledge system, and at the same time have a deeper understanding of the advanced stage, code quality, test architecture, microservices and middleware, containerization, automated test design, test architecture, CI/CD, and shift left testing , test phase, test shifted right.
One of the differences between test development and R&D posts is that R&D pays more attention to depth, while test development pays more attention to breadth.
For example: you need to understand CI/CD, because the test platform/tool you make may need to be connected to the CI/CD pipeline or the operation and maintenance monitoring system
Another example: when you do performance testing, if you don't understand the core knowledge of architecture design, you may encounter many problems that are difficult to solve when doing full-link stress testing and service degradation testing.
Find a test development JD to compare, and you can also see that this post is for middleware and performance testing. All privatization platforms understand.
In addition to broadening your knowledge system, you also need to refine your coding skills.
In short, big factories use Java a lot. If you want to go to a big factory, you basically have to be familiar with Java, otherwise the interview will be easily passed.
Interview real question sharing
personal information
- Self-introduction item (important)
- The biggest challenge in the project, the project that took the longest time, and the thing with a sense of accomplishment
- The most impressive bug in the project
- Is there anything you want to ask?
- Suitable for business testing or technical testing
- Why Byte
- Describe your strengths and weaknesses in 3 words
test
- Understanding of test development, why you want to do test development, understanding of test development
- Classification of software
- What is interface testing
- Test cases for WeChat red envelopes
- Test case for WeChat comment function
- Test the Alipay payment code and design test cases
- black box testing method
- white box testing approach
- The process of software testing
- How to design test cases for the login function?
- How to test online bank transfer, design a test case.
- Given a website, how should you test it?
- A paper cup with an advertisement, please design a test case?
- Imagine a login box, including ID, password, login, cancel, remember password (check box), write as many test points as you can think of?
- Test case for testing Taobao shopping cart
- Design a test case for Douyin sliding video up and down
- Design Douyin app user login test
- interrupt test
- Test in a scene, recommend filters
- Circle of friends like comment test case
Situational questions
- If many users in one area of Douyin cannot download videos
- If the user receives a text message from the bank indicating that the deduction has been successful, but the merchant has not received the money, what do you think will be the problem?
- Enter a url, what happened?
- How to implement a user login function
- Reduce performance consumption caused by transactions under high concurrency?
- If an API interface has an unstable bug, how to determine it?
- If you submit a bug and the developer tells you that it does not exist, what should you do?
- Reasons why visiting pages load slowly and how to fix them
- If you disagree with your leader, what will you do
- If the image upload fails, analyze the reason
- For the comment function, how do you design the interface, and what are the main parameters that need to be passed?
- What is the reason for the white screen on the app page?
- During the full-link stress test, it was found that the CPU load rate of a certain server was 100%, and the disk and memory usage were normal. How would you analyze the possible cause?
- Design a system for buying train tickets, input the departure station and arrival station, and return all possible results
- What happens after the add to cart request
- Reasons why Taobao users fail to pay
If you have many puzzles in the software testing industry, welcome to communicate and discuss with me in the industry's communication group. There are free tutorial materials and testing resources at each stage in the group, hoping to help you break through the bottleneck in front of you
Python basics
- Python's memory pool mechanism
- The difference between python arrays and lists
- Which packages do you use in python, the standard library
- Difference between procedural and object oriented languages
- reflection
- python data structure
- The underlying implementation of dict and list
- python decorator, function, usage
- Advantages of compiled and interpreted languages
- garbage collection mechanism
- GIL lock
- is and ==
- The difference between __new__ and __init__
- Write multithreading in python, print 123 in a loop
operating system
- Read-write locks, differences, application scenarios
- What is the difference between thread and process
- What is a deadlock, the conditions of a deadlock
- How to prevent deadlock,! Avoid deadlocks, checks for deadlock occurrences
- What is the difference between the heap and the stack and the storage mode?
- Memory Leaks and Memory Overflows
- Multithreading and multiprocessing, and application scenarios
- Process communication method
- How does multithreading work
- How computer memory is managed
- Process Scheduling Method
- What are Linux user mode and kernel mode
- What is the difference between process state, process state ready and waiting state
- What is virtual memory for?
- Thread Pool
- Implementation of thread safety
- Process and thread context switching
- coroutine
computer network
- TCP three-way handshake, four-way wave process
- Why does the client wait for a period of time in the TIME_WAIT state
- CLOSING state
- If the server does not receive the third ack, but receives the data sent by the client, what will the server do?
- Talk about get and post
- http status code
- TCP and UDP
- The process of an HTTP request (the whole process from entering the URL to returning)
- http和https
- stateless and connectionless
- OSI seven-layer model, what protocols are there in each layer
- HTTP protocol request message structure
- How does TCP ensure reliable transmission and how to deal with packet loss
- Talk about sliding windows
- What is the difference between SYN and ACK packets in the TCP three-way handshake, and what is included
- How to implement RUDP if UDP wants to be reliable
- semi-join attack
- TCP sticky packet and unpacking
- What are cookies and sessions, why use cookies and sessions
- DNS protocol and function
- DNS query method
- Function and working mode of ARP protocol
- What is the maximum size of an Ethernet packet
- Are there security issues during the three-way handshake? Describe what security issues exist? How to defend against such security issues?
- web attack, CSRF attack
- How does TCP perform congestion control? How does congestion control determine congestion?
- How does TCP fast retransmission determine the loss?
- Where is the https certificate stored?
- Long connection and short connection and their respective applicable scenarios
database
- The sql statement takes the id group within one month and takes the name of the youngest student in each class in a grade. The grade table outputs the grades of the top three, and the bottom three. Copy the data of table A to table B to query that each subject has a score greater than 80 Filter out the records for each hour by the name of the students. Investigate where. Investigate the difference between the aggregation function where and having. Query the number of repetitions in a database sql query. Query the student id and average score query total of students whose average score is lower than 60 in the student score sheet. The name of the person with the highest score Usage of the user id limit who has logged in three times within a period of time in the user table
- Database engines and their differences InnoDB MyISAM MEMORY:
- How to query mysql log
- (Multiple) Reasons for slow query speed and how to solve it
- What is a database transaction? how to use
- The meaning and difference of primary key, foreign key and index
- The characteristics of transactions (ACID), talk about the meaning of each characteristic
- type of index
- What is a clustered index and what is a non-clustered index
- What is the data structure of the index
- prefix index
- MySQL/MongoDb port number
- The database has several forms of joins between tables (left join, right join, inner join, full join)
- Talk about the data structure and application scenarios in redis
- three paradigms
- database isolation level
- Why use b+ tree index instead of hash
Linux
- Common commands to view process ps view all processes long format ps -ef print current folder files ls -al a all files l detailed information soft link ln -sa target hard link ln create directory mkdir modify permissions chmod view files: move files mv can also rename copy file cp delete file rm -r recursive delete -f delete read-only file wildcard? Single character, *multiple characters, [az] character set grep regular search display line number -n query number -c reverse selection -v view specified process ps -ef | grep pid view command history history view disk space df -hl view file Size du Find files find [directory] Find by name -name "h*" Terminate a process starting with h kill -9 pid
- How to prevent newcomers from misuse rm -rf
- Find the process with process number 199 ls -ef|grep 199
- The number of lines containing keywords in a file grep -c "key" ./file
- The number of lines in the files ending in .log that contain keyword a but not keyword b grep "a" ./file | grep -cv "b"
interview information
Our advanced study of automated testing must be to find a high-paying job. The following interview questions are the latest interview materials from first-tier Internet companies such as Ali, Tencent, and Byte, and some big guys have given authoritative answers. A set of interview materials believes that everyone can find a satisfactory job.
The above information should be very helpful for friends who want to test advanced. Those who need it can click the business card below to get it for free.