After two years of outsourcing, I only did 5 things seriously, and now I successfully got the Byte Offer...

Preface

Yes, I worked for an outsourcing company for two full years. Before joining this company, that is, two years ago, I started planning my own life, so I did not slack off during these two years.

Now, I have switched jobs to Byte and successfully got the offer. My situation is very ordinary, I have a bachelor's degree and no background. I want to share my experience this time to encourage others who have the same starting point as me.

Byte interview questions (technical part)

1. Basic linux statements

2. http/https protocol related

3. Communication skills and the ability to promote common problems at work

4. Modify fields in database and join table query

5. The depth of past projects

6.Return code and problem source

7. Interface request methods and differences (post/get)

8.charles always accesses fixed parameters and break points

9. Where does H5 testing look at interface data, and how to locate whether the problem is front-end or back-end; the difference between Android testing and iOS testing

10. How to use jmeter to do single interface testing, and how to judge and summarize the parameters of the interface

11.Exercise test questions

There are two hourglasses, one with 7 minutes and one with 11 minutes. How to ensure that the two hourglasses are finished in 15 minutes?

There are 8 balls. 1 ball is lighter. You can use a scale to weigh the lighter ball in the fastest way.

There are 2 candles. Each candle can burn for 1 hour. How can I burn it for 15 minutes?

12. Use case design (abnormal types, coverage, and divergence considered): Likes in Moments, comments in Moments, red envelopes on WeChat (for example, the balance is -3, define front-end and back-end issues), short videos in Moments, WeChat transfers, TikTok Like the sound, music player page

Didi Chuxing tested a case from point a to point b, and Douyin short video version was upgraded to add the functions of likes and comments to create a case design.

13. Each module of the project I have done is clearly described. Linux, adb command, test process, how to test the interface test, etc.

14. How to use fiddler to locate problems, for example, the balance is -3, how to determine the problem

15. How does fiddler capture https packages, how to simulate weak network, how to modify the request parameters and return parameters, and how to connect mobile Android and iOS (answer to the proxy)

16. The input and output parameters of the interface have not changed, but the interface logic has changed. How to test it?

17. liunx command decompression package check log log information filtering

18. Database index, relational database and non-relational database, why use non-relational database?

19. Do you understand indexes? Briefly explain the principles of indexing and when to add indexes (based on business, let’s talk about when and how to use indexes).

20. How to conduct interface testing, how to test, and what are the testing methods?

21. How to optimize concurrency problems (depends on your idea of ​​​​locating the problem)

22. How do you implement interface automation?

23. Please tell me how your project is tested.

24. The number of items in the shopping cart is correct, but when you get to the order page, you don’t know how to position them.

25. There are also shopping cart, settlement, and shopping cart items. What should I do if there are fewer items in the payment-completed order? How to position the problem is actually to examine how to position:

26. I also asked about the difference between the equal sign and is in Python.

The first thing: distinguish the stages and make a plan

After I went to college, I became clear about my current situation, and I also understood that if I want to change my life, I need to know how to plan. Therefore, from the beginning of my internship, I have already made a plan for my career, and my plan is clearly divided into several stages, and the goals and focus of each stage have been established.

  • The first stage: 0~3 years; the first time I gave myself was 3 years, and I completed my first job change in 3 years, and I needed to jump to a larger platform.
  • The second stage: 3 to 7 years; establish your own development direction, whether it is automated test engineer, test development, performance testing or security testing, but I know that no matter which direction you develop, the reserve of technical knowledge must be systematic and complete.
  • The third stage: 7~Future; At this stage, I should have completed my own development direction. At this time, I need to think about life, or continue my hobbies, enjoy life, or start a business.

The second thing: sort out knowledge and learn again

During my three years at Vipshop, I prepared for job-hopping and the second stage of development, so I sorted out my knowledge and started learning again. In the past three years, I have never failed to improve myself, and my learning direction is also based on the knowledge route I have sorted out, step by step, in an orderly manner.

Phase 1 testing basics

Testing basics is the most important and rewarding part of software testing. As long as you are doing testing, no matter what kind of test it is, you must learn the basics and theoretical knowledge of testing.

What is the best level to learn? It is best to be able to understand it and express it in your own words.

After all, during the preliminary test of the interview, the questions asked are all based on basic theory.

So what are the basic contents of testing?

The definition of testing, classification of testing, testing methods, and testing life cycle. 
Writing of test plans, test scenarios, test strategies, and test cases. 
Classification of BUG, ​​six elements of BUG, ​​life cycle of BUG, ​​definition of BUG, 
​​relationship between testing and development process, waterfall flow, V-shaped, W-shaped (double V), spiral, agile, etc. 
PDCA, 5W2H and other analytical management methods 
quality management system CMMI (understand)

Well, that's probably the above content. All of the above are theoretical and documentation skills. As long as you are willing to memorize and write, you can master them independently.

Second stage tool learning

After learning the basics of software testing, it’s time to learn tools.

In fact, it is really easy to learn tools, so you don’t have to worry about the choice of tools.

Just learn the most basic tools and learn whatever tools you will use in the future.

At this stage, the focus of learning tools is on the learning of interface testing. The learning of all tools is to pave the way for the learning of interface testing.

Below I will list the tools and knowledge points that need to be learned. Just learn them in order.

  • Simple network protocols: TCP/UDP, HTTP/HTTPS
  • Basic operations and common instructions of Linux.
  • Basic operations of MySQL database and common sql statements.
  • Use of fiddle packet capture tool.
  • Use of postman interface testing tool.
  • Use of jmeter and loadrunner performance testing tools.

The third stage of code learning

OK, after studying the above two parts, congratulations, you are already an excellent junior test engineer.

Next, you have to consider your development direction.

Do you want to 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 either.

Anyway, I know a little bit about everything and can interview for any position.

Regarding the choice of direction, read my article.

Well, I believe you already have the answer in your mind, so let’s continue.

At this stage, we should learn code. Regarding the choice of programming language, I recommend python.

There are also databases that must be mastered! In the study of tools, I think you can already master the related applications of database!

So now you can go and learn programming languages,

But it doesn’t have to be as in-depth as development.

Such as Java. The same is true for python (python has become mainstream now)

In short, it is OK for you to choose one of the two in the early stage. My suggestion is to learn python

What? You ask me what I learned.

Of course I can do both.

Hahahahahaha, are you surprised? No surprise!

The third thing: blog frequently and take more notes

Qualified developers must develop good study and work habits. Why should programmers blog frequently and take more notes? The reason is simple:

  1. Organize your thinking and strengthen your understanding.
  2. Convenient for future review and review.
  3. Record growth.
  4. Practice writing and organization skills.
  5. Feedback and interact with other people, others will find some problems that you can't find, and improve your thinking.

The fourth thing: social interaction and broadening the circle

I believe every working social worker knows the importance of connections, and we developers also need to accumulate our own connections. Therefore, during my three years at Vipshop, I didn’t just go out early and come back late and work on the computer all day long. I would use my remaining time to participate in some communities, communicate with peers, and participate in offline activities. Meetings or activities are a more direct way for me to expand my circle.

The fifth thing: know how to review and prepare for interviews

I have learned to review myself and give myself a summary every year, including all aspects of knowledge, work, life and emotions, to see whether I have further improved my richness. This year is the end of the third year of my first phase. I also want to make a summary of the past three years. At the same time, I also need to start my job-hopping plan and prepare for interviews.

Summarize

Laymen’s perception of programmers is very simple and there are many stereotypes, but no matter what, as testers, we must face ourselves. If we can't even distinguish between self-deprecation and inferiority, then our development will only go so far.

Therefore, the best policy is to plan yourself as early as possible and develop towards your goals, instead of blaming others and waiting until you are 30 to worry.

Send a sentence:

If you don’t want to become a “tool person”, don’t stop growing, create your own unique value, and possess irreplaceable and scarce attributes, so that you won’t be eliminated and can make choices as you wish when encountering changes.

Now I will share with you the knowledge structure of software testing engineers, I hope it can help you!

1. Testing Basics

Understand the basic skills of testing, master the use of mainstream defect management tools, and be proficient in the operation and maintenance of the test environment

Programmer Uncle Lei Test basics
Test plan/test case Black box use case design equivalence class/boundary value/scenario analysis/decision table/cause and effect diagram analysis/error inference
defect Defect life cycle/defect classification/defect management tool ZenTao/Jira
database Mysql/environment setup/add, delete, modify/query/associated query/stored procedure
Linux System setup/basic instructions/log analysis/environment setup

2. Necessary knowledge of Linux.
As the most popular software environment system, Linux must be mastered. Current recruitment requirements require Linux capabilities.

Programmer Uncle Lei Linux essential knowledge
Linux system introduction and preparation As the most popular software environment system nowadays, you must know how to learn Linux. You will start with the introduction of the CenterOS version system, installation, directory structure and other basic contents, and also prepare for the subsequent self-built test environment.
Linux remote tool Xshell Detailed introduction on how to get started using Linux and perform regular remote management and file transfer operations, including the tools Xshell and Xftp
Linux file attributes and management Linux files, basic directory attributes, file operations, file management, directory operations, directory management. Avoid self-destructive operations and how to prevent accidental operations
Linux user and group management How to add, delete, modify users and groups in Linux, and grant corresponding permissions, so that you no longer get stuck due to permission issues
Linux file editor The use of Linux file editor vi, command mode, input mode, operation examples, shortcut keys, pipe commands, usage experience. How to edit in a system without graphics?
Linux common system settings Network settings, environment variables, disk management, time settings, system resources, firewall, everything is available, don't worry about being clueless.
Linux installation software Linux installation commands, and how to install through installation files downloaded from the network such as tar, gz, etc., such as MySQL database installation.
Linux Docker container Explanation of Docker container technology, image management, warehouse, container creation, startup, operation, image packaging, and catching up with popular industry technologies

3. Shell Script
Master Shell Script: including Shell basics and applications, Shell logic control, and Shell logic functions

Programmer Uncle Lei Shell
Linux Shell Basics and Applications Introduction to shell script programming, environment types, variables, parameters, operators, use of arrays, close contact with scripts
Linux Shell logic control Shell logic application, test command, process control, data input and output, script logic is no longer monotonous, and you can play tricks
Linux Shell functions How to write shell script functions, call files to each other, and apply scripts in practice. What can you do if you know how to develop, test, and operate?
Windows Script Batch Enough playing with Linux, let’s take a look at the usage of regular Windows commands, how to write batch scripts, and practical applications. Linux is not everywhere. Windows scripts are also one of the commonly used scripts. When you see this, you may use Windows.

4. Internet Program Principles

The only way to automate: basic knowledge of front-end development and essential knowledge of Internet networks 4. Internet Program Principles

Programmer Uncle Lei Internet program principles
Web front-end development basics Learn basic content of HTML and CSS. Why were test courses developed? Sorry, if not, automation may not be welcome. Many automated testing problems arise from the development foundation.
Web front-end development script JavaScript is the most mainstream script learning. Similarly, this will also be involved in automated testing. In fact, dynamic scripts are often used in some tools, and they are also JavaScript languages.
Developer debugging tools for testing applications Although the browser's F12 is named a developer tool, testing actually plays a key role in both functional testing and automated testing. Such as parsing HTML, locating elements, debugging scripts, monitoring network packet capture, etc.
Internet program network architecture Understand the birth of Internet programs in detail through network architecture, logical details, how Internet communication principles transfer data to other computers, and what is the relationship between TCP, UCP, HTTP, and other protocols.
HTTP protocol data structure analysis Completely analyze the HTTP protocol data structure, including Request and Response data formats, the definition and usage of Header, what each status represents, and how to identify errors. Analyze the position of parameters in the protocol, rest structure, various common body data forms, parsing methods, and causes of common data parsing errors.
Cookie and Session mechanism Interpret what Cookie is, what relationship it has with Session, how to test Cookie and Session, and what you need to pay attention to

5. MySQL database

software testing engineers must have MySQL database knowledge, not just the basic "add, delete, modify and check".

Programmer Uncle Lei MySQL database
MySQL database testing application MySQL environment construction, basic use of client Navicat and data operations, learning and consolidating basic SQL syntax, adding, deleting, modifying, and checking are indispensable, and mastering the usage of various conditions
MySQL advanced query Query upgrade, master multi-table query, subquery, query grouping, use of statistical functions, and study and analyze classic interview questions
MySQL custom function Since there are built-in functions, there is certainly no shortage of places for custom functions, which are often used. Just like any development language, they are inseparable from the definition and use of functions.
MySQL stored procedure SP How to define the stored procedure that is essential for the database, usually also called SP? How to test? How to use it more safely, test what else can be done with stored procedures, and more content that is convenient for testing
MySQL things and programming Database transaction use cases, the principle and use of indexes, the application of database SQL programming in testing, and how to use it to quickly and accurately generate a large amount of specified test data

6. Packet capture tools
Fiddler, Wireshark, Sniffer, Tcpdump and various packet capture tools are suitable for various projects. There is always one that suits you.

Programmer Uncle Lei Packet capture tool
Principles and methods of packet capture Only by understanding the principle of packet capture can we truly use a suitable tool and choose the appropriate direction and method, otherwise it will be in vain.
Packet capture tool selection Classification and functions of packet capture tools, which tool is suitable for what kind of project, and how to identify the advantages of the tool
Fiddler basic functions As a professional HTTP system packet capture tool, this article introduces its principle in detail, how to filter data, how to search for the desired data, and how to capture packets in various environments such as web, non-web, mobile phone, HTTPS protocol, etc.
Fiddler advanced features Learn to use it for interface testing, power outage, scripting, etc. to modify and replace data, simulate data for interface Mock testing, and create your own defined menu functions.
Wireshark It is not so much a packet capture, but an analysis tool after packet capture. Under each system, other packet capture tools integrated with the system are used to capture, organize and display data. It has powerful filtering and analysis functions.
Sniffer Black technology packet capture tool, there are many versions, very professional packet capture tool
Tcpdump Linux、Android系列的系统中的抓包插件神器

七、接口测试工具

接口测试神器,你绕不开的强大工具:Jmeter。小巧灵活:Postman

程序员雷叔 接口测试工具
Jmeter接口测试入门 Jmeter简介,环境准备,目录结构介绍 ,如何录制脚本,以及基础组件的使用,线程、作用域、HTTP请求、定时器、断言等等
Jmeter接口测试进阶使用 Jmeter逻辑控制、前置处理器、后置处理器、监视器、结果树,如何参数化、正则表达式关联、事务、检查点等等。并带领大家对带有token等动态数据的项目进行实战演练
Jmeter接口测试高级功能 Jmeter脚本思考时间、随机时间、线程启动间隔、并发集合点、联机远程调用,webservice、websocket、jdbc、命令调用等等
Postman接口测试工具使用 行业标准HTTP、rest接口测试神器,基本请求、分组保存、动态变量、脚本、数据关联、参数化、自动断言、批量运行、持续集成。思路类似其他接口工具,避免泛滥学习

八、Web自动化测试Java&Python
了解自动化的目的,熟练掌握TestNG&unittest自动化框架,以及断言与日志处理

程序员雷叔 Web自动化测试Java&Python
自动化框架思路引导 我们做自动化到底为了什么?节省人力、加快速度、还是让机器代替手动、还是提升自我。应该如何建立思路,而非无脑进坑任机器摆布
Java&Python3开发环境及基本语法 Java&Python开发环境搭建,基础语法入门,让不会代码的以最快速度入门,方便适应后续自动化测试开发内容学习,代码够用即可,并不是学得越多越好
Java&Python3集合类型与面向对象开发 Java&Python各种基本类型、集合数据类型的理解与操作,循环语句、判断语句,面向对象的开发,函数的使用,类的使用
Selenium3环境与浏览器驱动配置 基于selenium3的web自动化环境搭建,正确的浏览器配置,不再为起不了浏览器而烦恼。支持IE、Firefox、Chrome等等
Selenium3多种定位及动态操作 selenium3常见定位方法,属性和值的获取,如何动态判断不一定存在的元素,复杂的网页结构,需要多步骤操作的元素等等
特殊情况处理(js、特殊控件等) selenium3自动化测试中,常见的特殊情况处理,如日期、控件、智能等待、文件上传下载、网页嵌套结构,各种弹窗的处理方式,cookie处理,JavaScript脚本调用等
TestNG&unittest自动化框架使用 Python unittest、Java TestNG自动化框架的使用,环境处理、基本使用逻辑,数据驱动模型,数据库数据载入等
自动化框架断言与日志处理 自动化中最重要的是什么?作为测试当然是断言,没有断言的自动化毫无用处,如何展示日志与结果是自动化测试的根本
PageObject框架设计模式 PageObject框架设计模式,到底是做什么的?如何更好的快速管理控件,从此做起

九、接口与移动端自动化
专业接口调用、测试解决方案。组建完整的web和接口自动化框架,Appium整体使用

程序员雷叔 接口与移动端自动化
接口自动化方案Requests Python Requests、Java HTTPclient接口框架,都是专业的接口调用、测试的解决方案,使用简单快速,结合工具的使用方式和功能,快速上手并对其操作,解决其中的疑难杂症
web+自动化框架整合 自动化测试是相通的,如何将web与接口、甚至更多的测试类型和方向结合起来,组成完整的自动化框架
Appium环境搭建 Appium环境相对复杂,针对Android系统进行完整的环境搭建演练,解决环境上的问题,并进行基本的自动化操作
Appium自动化实战与框架结合 Appium整体使用与web自动化类似,引导使用典型功能,并针对一款APP进行实战操作



十、敏捷测试&TestOps构建
揭开TestOps的神秘面纱,持续集成Jenkins框架烂熟于心

程序员雷叔 敏捷测试&TestOps构建
构建敏捷测试运维架构体系 敏捷测试是什么?为什么需要敏捷,行业都提到的devops又是什么?TestOps能做什么
持续集成Jenkins框架实战 持续集成最常见的一套框架,介绍Jenkins操作、权限、系统管理等,常用构建与运行实例讲解
静态扫描测试Sonar 一款自动化的代码扫描工具,便捷式快速扫描代码中的问题,做到提前发现,统一规范,自动化中的代码测试神器

十一、性能测试&安全测试
软件测试的彼岸:性能测试和安全测试,选个方向努力爬坑吧!

程序员雷叔 性能测试&安全测试
性能测试学习路线 如何学习性能测试,性能测试到底该怎么学习,使用什么工具?工具并不代表性能,接口的基础对性能测试非常重要,而工具只是辅助,更多的是思路和策略。你不会并不是分析而是准备阶段
loadrunner脱离浏览器录制专题 IE无法启动被测网站?打不开浏览器?程序无法在浏览器中被打开?这些都没关系,还是一样能录制,但录制是偷懒专用的,对于学习有一定的辅助作用,也会带入无法脱离的坑
性能测试工具操作实践 loadrunner、jmeter,有了前面的基础使用,看懂脚本不是问题,带上关键的参数化、动态数据关联、事物、日志,大部分的脚本都可以搞定进行实践
系统监控方案实施 工具自带监控?系统监控?JVM内部监控?数据库监控?各种监控的意义何在,如何在各种情况下精准监控数据
安全测试起源与工具介绍 应该如何进行安全测试,安全测试都有哪些分类?都会用到什么样的工具,各自的作用又是什么,如web漏洞扫描,端口扫描,系统扫描等
web安全测试手工实战 接口测试在安全中的作用,不会手动的安全测试,那就永远无法理解自动化以后产出的结果
安全扫描工具测试实践 实际介绍以及使用APPscan、awvs等专业安全扫描工具
企业安全建设(SDLC) 企业应该如何进行安全建设,制定更安全的软件生命周期。从哪些方面进行着手

上面就是我为大家整理出来的一份软件测试工程师发展方向知识架构体系图。希望大家能照着这个体系在3-4年内完成这样一个体系的构建。可以说,这个过程会让你痛不欲生,但只要你熬过去了。以后的生活就轻松很多。正所谓万事开头难,只要迈出了第一步,你就已经成功了一半,等到完成之后再回顾这一段路程的时候,你肯定会感慨良多。

 

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取  

 

Guess you like

Origin blog.csdn.net/chengxuyuznguoke/article/details/133086403