How do I get started with testing?
I am studying in an ordinary college. I started to look for a job as an intern while I was in college. I stumbled into a start-up company that does industrial big data by mistake.
At the beginning, I didn't have a clear career development direction, mainly doing some basic work of environment construction. However, due to his high execution efficiency and strong sense of responsibility, he was appreciated by the boss of the company during the internship and was assigned to be in charge of project testing. After graduation, he became a test engineer in the product R&D department.
Most of my work is mainly based on functional testing, and I have also traveled on business trips and worked part-time on various products, operation and maintenance, and pre-sales work. In short, I will rush wherever the company needs it. Although the starting point is not high, I have learned a lot from testing work experience. I have dabbled in functional testing, UI automation testing, interface automation testing, performance testing, security testing and compatibility testing.
I will also quickly learn various skills according to work needs, such as computer programming, network, storage, scheduling and other knowledge, which also laid the foundation for me to learn continuous integration and data middle platform later.
What did I learn in starting a small company?
Test work pays special attention to results, while the normal state of small start-up companies is that time is tight, tasks are many, and iterations are fast.
So how to deal with this challenge, complete the testing work efficiently, and ensure the quality of the project smoothly?
After all kinds of work pressure, practical exploration and ups and downs, I figured out the core points: sort out the company's existing product development process, and clarify how to carry out testing work at each stage of development.
To put it simply, it is to figure out the key steps in the whole process of developing and executing software testing:
1. Obtain requirements, functional design, detailed design specifications and other necessary documents
2. Obtain budget and schedule requirements
3. Determine project-related personnel and their responsibilities, report requirements, necessary standards and processes (such as version process, change process, etc.)
4. Identify high-risk parts of the application, set priorities, and determine the scope and limitations of testing
5. Determine the method of testing - unit testing, integration testing, system testing, acceptance testing, etc.
6. Determine the environmental requirements (software/hardware/communication, etc.)
7. Determine the testing tools and environment (record/playback tools, coverage analyzers, test tracking, issue tracking, etc.)
8. Determine test input requirements
9. Identify tasks, task responsibilities, and corresponding workloads
10. Set up schedule estimates, schedules, milestones, etc.
12. Determine the equivalence class of input, boundary value analysis, error class
12. Prepare test plan documents and required reviews
13. Write test cases
14. Necessary review of test cases
15. Prepare test environment and test tools, obtain required user manuals/reference documents/configuration guidance/installation guidance, establish tracking process, log and archive process, and obtain test data
16. Get and install software version
17. Execute the test
18. Evaluate and report test results
19. Track issues and fixes
20. Retest if required
21. Maintain and modify test plans, test cases, test environments and test tools throughout their life cycle
After sorting out the development and software testing process, further clarify the testing work, phase objectives, main tasks, and passing criteria of each testing stage, and finally carry out the testing work, which will get twice the result with half the effort.
Why choose to become a test developer?
With more than a year of work experience, I have deeply experienced that it is not enough to have a clear process. Within the company, the feedback cycle between the development team and the testing and operation and maintenance personnel is too long, resulting in many defects in the software development process and quality:
- Testers wait for "good" builds;
- Defect reports don't come to the development team until weeks after the new feature is developed;
- Operations and maintenance personnel have been waiting for documentation or bug fixes;
Although from the perspective of testing, I can think of many ways to improve the software delivery process, but it is difficult to implement it. Because I don't write code and don't have a deep understanding of the logic of R&D business implementation, I can't understand how this bug appears, and I can't see the essence through the appearance. Sometimes the sentence "you don't understand" developed by R&D makes me feel that communication is really difficult. I was suffocated in my heart, and I really hoped that I could "hold the sky" by myself.
Only by becoming a test development engineer who can test and understand code can he help R&D and testing to improve testing efficiency to the greatest extent, and then help the company improve the overall R&D efficiency. This has also become my unswerving career growth goal.
Break the boat, quit your job to learn test development skills
Buffett and Munger said that the best investment in the world is investing in yourself.
In order to learn test development technology, I shared a set of courses from my friends (he spent thousands of dollars to buy them at the time). I feel that the outline is very comprehensive and the knowledge system is complete.
Affected by the epidemic in 2020, many testing tasks can only be processed remotely and online. However, the efficiency of teamwork is not high, and project iteration is still too fast. I always feel that after receiving the test work, I can only complete it as soon as possible, but it is difficult to implement it according to the original plan and achieve a good standard. This feeling of being exhausted and anticlimactic made me dumb to eat Coptis chinensis, and I couldn't tell the pain.
This kind of work mode made me hate it, and I couldn't bear it. After persisting for a period of time, I decided to resign, and I was officially unemployed at home to study the course "Advanced Python Automation Test Development Practical Combat". On the one hand, adjust your current physical and mental state, and on the other hand, you will break through the boat, enrich yourself, and move towards a better self-test development!
Are you ready for the big move? Let's talk about dry goods! ⬇️
Learning experience and test interview experience
You must have your own learning direction. The goal is to be a T-shaped talent. When ensuring breadth, you must also have one or two specializations, so that you can stand out in the interview.
Here I share my personal systematic learning route and key pre-interview preparation skills:
1. Basic knowledge of testing
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 severity of BUG, the six elements of BUG, and the life cycle of BUG.
Defect report writing, test report writing, ZenTao management tool application
Second, test tool learning
Test management tools: QC, Zen Tao, Testlink, svn, git, etc.
Performance test management tools: Loadrunner, Jmeter, Locust
Interface testing tools: Jmeter, postman, etc.
Continuous Integration Tool: Jenkins
App automation tools: appium, Monkey, Monkey Runner, etc.
Web security testing tools: appscan, Fiddler, burpsuite
3. Linux system + MySQL database
Linux: Build a test environment and deploy, view logs, locate bugs, and master some of the commonly used Linux commands
Database: database addition, deletion, query and modification operations, sorting, aggregation functions, grouping, paging, connection query, subquery, self-association; advanced database function database design, command line operation database, function, stored procedure, view, transaction, index, foreign key , user password, etc.
4. Python programming + data structure
Basics of Python programming: computer composition principles, Python development environment, Python variables, flow control statements, advanced variable types, function applications, file operations, object-oriented, exception handling, modules and packages
Data Structures: Algorithms, Time and Space Complexity, Stacks and Queues, Binary Trees
Sorting Algorithms: Bubble Sort, Selection Sort, Insertion Sort, Quick Sort, Hill Sort
5. Automated testing
1) Web automated testing
Build a web automation test environment
Element positioning methods and element operations
UnitTest Framework, UnitTest Assertions, Parameterization, Test Reports, Fixtures
The design idea of PO mode, encapsulating the page
Data-driven implementation, log processing
Automated testing process, automated code implementation, project automation framework design
2) Interface test
The concept of interface and interface testing
HTTP request message
HTTP response message
Three-way handshake and four-way handshake of TCP connection
Writing and analyzing interface test documents
Fiddler/charles capture packet
postman (commercial tool, very useful)
jmeter (powerful, interface, pressure take all)
requests (interface automation, which can be implemented with python+requests+pytest+ddt+git framework)
3) Performance testing
Understanding Performance Indicators
Classification of Performance Testing
Design reasonable performance test scenarios
Performance monitoring analysis and tuning
Use of performance tools
4) APP automated testing
App packaging and server deployment
Use of ADB commands
Use of the Monkey testing tool
Use of Appium testing tools
Master the basic technology of automated testing of mobile APP
5) Security testing
Mysql injection
XSS injection
vulnerability scan
Sensitive Information Leakage
File Upload
Information verification
6) Continuous integration
Developer submits code to svn
The tester checks out the source code
Compile and package
upload server
deployment start
Develop test scripts and complete tests
Manual Testing Learning Points
For newcomers with zero foundation, they must first learn basic theoretical knowledge, and then do demand analysis and use case analysis after having a certain computer foundation and software testing foundation, so this stage focuses on laying the foundation and writing test cases
Learning objectives: master basic test theory, writing and management of various test documents, database operation, meet the needs of most enterprises
Familiar with black-box test case design methods and functional test case design Familiar with test management tools Zen Road, QC Familiar with test plans, test schemes, core content of test reports SQL database language Familiar with e-commerce and application manual project testing
Interview
The interview peak season of Golden September Silver October is coming soon, and everyone hopes to take this opportunity to find a job they like, but no matter what, no matter what kind of interview, if you want to avoid being abused by the interviewer, you have to use the Make comprehensive preparations for the explosive interview questions. Of course, in addition to this, you also need to lay a solid foundation in your daily life, so that no matter how the interviewer digs into a knowledge point, you can handle it well~
- BugRequired fields
- Briefly describe the life cycle of BUG?
- What do you think is the key to doing a good test case job?
- What phases should a complete set of tests consist of?
- What does software acceptance testing include?
- What is the strategy for system testing?
- Write test report
- Describe the life cycle of software testing activities?
- Briefly describe the "80-20 principle" in software testing.
- Composition of a Defect Test Report
- What is a stress test? What factors need to be considered in stress testing?
- What is the purpose of software testing?
- Common methods of black box test case design
- Which is the most important step in the steps of unit testing, integration testing, system testing, acceptance testing, and regression testing?
- Please tell me the advantages and disadvantages of manual testing and automated testing
- How to implement automated testing
- What is a stress test? What factors need to be considered in stress testing?
- Talk about your understanding of CI/CD
- What do you think software test engineers need to do in a team? What's the value? …
I participated in a total of 5 interviews. The interview questions shared here only show part of the interview questions. Due to space constraints, it is not convenient to read, so I will not post them all.
Finally, I would like to thank everyone who has read my article carefully. Reciprocity is always necessary. Although it is not a very valuable thing, you can take it away if you need it:
These materials should be the most comprehensive and complete preparation warehouse for [software testing] friends. This warehouse has also accompanied tens of thousands of test engineers through the most difficult journey, and I hope it can help you! Partners can click the small card below to receive