Functional Testing is the basic guarantee for a game. Professional functional testing is required, including use case testing, exploratory testing, and automated software testing.
Before use case testing, Tencent QA engineers design test cases for the game based on product requirements. The test cases cover all test scenarios (including fault tolerance cases and boundary cases) in consideration of the following aspects to ensure stability of basic functions:

Function testing includes:

Functional accuracy: Verify that system functionality meets the requirements of the documentation. Test cases should first ensure that all function points related to the current update of the design documentation are covered.

Representation consistency: Verify that the UI specification and texts of the verification user interface are consistent with product requirements.

Functional robustness: When invalid data (data that does not comply with requirements) is input or abnormal operations are performed, verify that product functionality and logic are normal, errors are reported correctly, and no crashes occur.

System compatibility: The product functions should work properly on different terminals, platforms, and browsers.

Version compatibility: According to product requirements, the functions should remain available or meet expectations on software of different versions

Multi-terminal interworking: The same function should be presented consistently on different terminals and platforms and the data should also be consistent.

Terminal interaction: The test cases should include mobile network switching cases, and poor network coverage cases, and cases where audio and video applications are interrupted by incoming calls.

Boundary cases: Boundary value analysis is a type of black box or specification based testing technique in which tests are performed using the boundary values.

Exploratory testing is to perform design testing and execution testing at the same time, that is, testing and exploration are simultaneous. This is contrary to the script-based testing technique (where test steps are predefined). No test steps are predefined, nor the testing is conducted strictly with planning. Sometimes, the exploratory testing is confused with ad hoc testing. The ad hoc testing is an off-the-cuff and temporarily prepared testing procedure for searching bugs. According to the definition, everyone can perform ad hoc testing. However, the exploratory testing proposed by Cem Kaner is a delicate and thoughtful process compared with the ad hoc testing. In actual application, we apply the SMART criteria when thinking about how to conduct exploratory testing (See Figure 1-1). Figure 1-2 shows a comparison of valid bugs found in pure scripted testing (ST) and exploratory testing (ET) in Project A.

Automated software testing is to automate operations that are repeatedly performed in functional test cases, which reduces human labor. Testers prepare scripts using internal automated tools and perform continuous integration from build creation to automatic smoke testing, thus efficiently completing a round of build acceptance. After the smoke testing is successful, the system automatically submits the result, and then testers start test case execution testing.
The ultimate goal is to check whether the product meets the fixed requirements and expectations, and ensure that the product is free of functional defects and can operate stably after launch.