Core knowledge of the site architecture
Nowadays, Internet products already occupy the majority of the software industry's wall to Jiangshan. As a test engineer, you are often dealing with the testing of Internet products, especially Web application products.
At this point, if you want to do the Internet product functional testing other than testing, such as performance testing, stability testing, full-link pressure measurement, failover (Failover) testing, dynamic cluster capacity scaling testing, service degradation testing and security penetration testing, you need to master the structure of the site knowledge. Otherwise, you will be helpless in the face of such tests.
For example, if you do not know the application scenarios and fundamentals of the distributed cache cluster such as Memcached, if you do not know cache breakdown, cache avalanche, cache pre-heating, cache cluster expansion limitations and so on, you can not design a specific problem for the cache system test cases;
For example, if you are not aware of the scalability architecture design of the Web site, do not know the application Server load balancing the basic principle of implementation, do not understand the database read and write separation technology, you can not complete such as failover, dynamic cluster capacity scaling, service degradation and other related testing, It is also difficult to locate and adjust the various bottlenecks that may be encountered during performance testing and full-link pressure measurement.
It's kind of like when we were doing traditional software product testing, we had to understand the architecture of the software, and now that the object being tested is an Internet product, we have to understand the site architecture.
Therefore, I strongly recommend you to master the core knowledge of the site architecture, you do not need to be like a system architect to master the various architectures, and according to business selection, but you need at least understand the basic knowledge of architecture and core principles.
Based on this, I arranged a series of articles at the end of the column, including the website high-performance architecture design, website high-availability architecture design, website scalability Architecture design and website Extensibility Architecture Design, give you a detailed explanation of the core knowledge of the Internet architecture, improve your Internet product testing ability.
Container Technology
"Container" is no longer a strange word, most people in the actual work more or less to use the container technology. Compared with traditional virtual machines, container technology has an overwhelming advantage in terms of light weight, resource occupancy and operational efficiency.
In addition to the test engineers who specialize in container testing, there is a growing opportunity for general test engineers to access container technology.
Many medium-and large-scale Internet companies are implementing containerized development and operations, and the software version that developers submit to test engineers is typically a Docker Image that is tested directly on the container. Some companies also package test cases and execution frameworks into Docker Image, with version management mechanisms to implement container test containers.
For test development engineers, there are more scenarios where the container needs to be applied. For example, the current mainstream Selenium Grid has already provided the official Docker version, which can be used to build a test execution environment directly in a container, or easily in cloud computing platforms such as Pivotal Cloud Foundry and Google Cloud Platform Quickly establish a test execution environment on the
The Docker-based Selenium Grid greatly reduces the amount of upgrade maintenance, such as Web Driver, browser version, and daemon process versions on a batch virtual machine node.
Test development engineers can also provide some test tools in the form of Docker Image, rather than in the form of traditional installation packages or JAR files, enabling test tools to be available out of the box.
It can be seen that container technology has slowly penetrated the various aspects of software development and operations, and as a new generation of test development engineers, you must master the principles and methods of Docker and Kubernetes as well as using VMware.
How can a test engineer quickly have knowledge of containers and get started with Internet product testing involving container technology?
Here, I would like to emphasize with you the choice of learning materials, must pay attention to the authority, I give you the recommendation is still the Docker website tutorial, where you can completely clear the Docker concept and specific use method, then combined with specific actual combat, I believe you will reap quite abundant.
Cloud computing
On the one hand, many enterprises, especially Internet enterprises, are trying to "cloud up", that is, gradually turn the production environment from the original centralized data center mode to private cloud or hybrid cloud mode.
Some time ago, some of EBay's product lines announced a partnership with Pivotal Cloud Foundry to move some product lines to the cloud. Obviously, as a test engineer, you have to understand the technical details of the service's deployment in the cloud to better complete the testing task.
On the other hand, the test base service is also moving toward the cloud as an infrastructure for testing services, such as Test Execution Environment Service (execution Service) and test data service. For example, Sauce Labs, which is popular abroad, is a well-known public cloud service for test execution environments.
Some large internet companies often also consider building their own test execution private cloud. The most typical is, based on the Appium + Selenium Grid, to build a mobile device test execution private cloud.
So, in addition to the engineers who specialize in the test of cloud computing platform, must master the knowledge of cloud computing, other Internet product test engineer, also need to be able to understand and master basic cloud computing knowledge and technology.
In my opinion, for the study of cloud computing, your focus should be on how to use the infrastructure and services provided by the cloud. The effective learning method I recommend is to refer to the official documentation of the cloud solution you are using and try it out with the actual case, and the learning effect will be better.
You can try to deploy your own applications with cloud services, and integrate with your application with a variety of services (configuration services, database services, etc.) provided by the cloud platform. In addition, I recommend that you try to build your own small application cluster with cloud platform to experience the dynamic contraction and expansion of cluster size. You can also try to publish your service directly on the cloud platform using a Docker deployment.
Further, you can try to build your own Selenium gird cluster in the cloud, now Selenium Gird has released the corresponding Docker version image, you can easily build your own Selenium Grid on the cloud platform.
Instead of thinking about how complex this is, and understanding the basic concepts of Docker and how to use the cloud platform, you can quickly build such Selenium clusters in a short period of time.
Believe that these basic scenarios will help you understand the core features of the cloud platform and use scenarios to help you test the product accordingly.
DevOps thinking
DevOps emphasizes the complete lifecycle management of software through the collaboration and communication of highly efficient automation tools, such as development, testing, and operations, in order to achieve more frequent and continuous delivery of high-quality software, with the fundamental goal of improving the delivery capabilities of the business.
The concrete manifestation of DevOps can be tools, methods and pipelines, but its deeper connotation is still in the way of thinking, agile and lean as the core, through the discovery of problems, with a systematic approach or tools to solve problems, so as to achieve continuous improvement.
As a result, test engineers must also have a deep understanding of the core and essence of DevOps ideas in order to make the most fit design for the implementation of automated test and test tool platforms. Whether it is a test engineer or a test development engineer, it will be an important driving force for successful DevOps practices.
To really learn and master DevOps, not simply to learn the use of several tools, more important is the need to have a DevOps thinking, can combine the various tools organically, to provide efficient CI/CD pipeline.
For DevOps, the learning path I suggest is that you can start with a deep grasp of tools like Jenkins, get skilled applications and combine various plugin to achieve a flexible and efficient pipeline setup, and then gradually integrate more tools into the pipeline to accomplish more tasks.
I believe that through this study, when you face the relevant testing work, it is inevitable that can be easily addressed.
Front-end development technology
The development of the front-end development technology, new framework and technology emerge, vue.js,angular and React and so on people overwhelmed. Also, many component libraries developed on the basis of such frameworks can be used directly, such as ANTD, which greatly reduces the difficulty and time cost of front-end development.
But what is the relationship between the development of front-end development technology and testing?
From the point of view of the test engineer, if you can master the front-end development technology, it means that you can do the front-end test more effectively, more prone to identify potential defects. At the same time, you can build your own test page, to complete the various types of front-end components of the refinement test, greatly improve test coverage and efficiency.
From the point of view of test development engineers, many test platforms and tools require UI interfaces, such as test data services and test execution services built by many companies, and if you are familiar with basic front-end development techniques, you can easily and efficiently build a UI for test platforms and tools.
With regard to the learning path of the front-end technology, usually you need to master the most basic JavaScript, CSS, JQuery and HTML5 knowledge, and then to learn some mainstream front-end development framework, such as Angular.js, Backbone.js and so on. Of course now the node. JS ecosystem is very well developed, if you can master node. js, then a lot of things can be handy to achieve.
I personally recommend downloading some sample code from the Web to learn, while learning to use scaffolding from scratch to build your own front-end applications.
Summarize
In order to cope with the technological trends and test the software products, software test engineers need to have a lot of non-test expertise, including: Website architecture, container technology, cloud computing technology, DevOps thinking, and the core knowledge and practice of front-end development technology.
For this kind of new technology learning, I highly recommend you to read the official website of the document and code samples. This way, you can make less detours and ensure that the content you are learning is up to date.
Of course, I share with you these non-testing expertise, just a lot of technology, you will encounter more technology in the actual test work, I hope you can extrapolate, continue to expand their knowledge, towards an excellent test engineer, architect efforts!
What are the non-test knowledge that software test engineers need to master? ---punch-in day