As a tester, what is its real core competence? This question has always puzzled me. When I was not in the industry, I heard voices like “Testing is a promising job, the demand is greater than the supply”, and others like “testing involves touching code, clicking a mouse and everyone…”. I entered this industry with the psychological choice that I do not know whether it is good or bad or what it is. During the period, I admit, there was a period of time, I think as a test if can be very familiar with the code, can write a tool is likely to become the leader of wulin, life and day qi. It seems that the core competence of testing is the mastery of the code, besides which the use cases of functional testing seem to be the lowest and most worthless output.

However, from today’s point of view, some of the problems and phenomena I have encountered and seen, I begin to challenge some of my ideas. Such as: Now many groups are working on code level testing tools, such as coverage tools, code scanning tools (mainly to follow the relevant syntax rules to do things such as null pointer risk, undefined variables, Whether the if else branch conditions are mutually exclusive, etc.), of course, there are some high-end ways to check each branch through business flow backtracking, and send emails to the corresponding stakeholders whenever there is a risk. On the surface it looks very high-end, grand, classy, everything is automated, everything looks under control. Turn one’s hand over the clouds, and then cover it with rain. But what about the reality? The quality of the final product is reflected in the actual and substantial results of the functional test, whether the code is scanned automatically or the coverage statistical analysis. Say so, show good obscure, for example ~ ~ ~

XX project introduced Hudson construction automatic integration scheme, and both front and back stages were connected. In this way, after submitting codes for testing, functional tests would be carried out as scheduled without any accidents, codes would be scanned automatically in the background, and the results would also be mailed to the corresponding people. In all have, as the version of the arrival of the east wind, crackling began, and then put outside,, and then ,,,, and then helpless pain, ~ ~ ~ why? After the release of the version, “the game props mysteriously disappeared, the client inexplicably crashed, and the actual value of pets was inconsistent with the expected ,,,,” Then I conducted a process of R&D debugging, bill of lading test, R&D analysis, test analysis, DAI writing, QA audit and leader audit

In fact, when the root cause of these problems is found, we all look at it in hindsight and say, “What’s wrong? Shouldn’t that be an easy question to ask? I just want to say that after the battle of Red Cliff, everyone knows that we should pay attention to the wind and not respond to the mentality of black swan, and we may not even know about swans before the battle, let alone black and white. What do you mean? Don’t worry. Give me some time to type and code slowly

First of all: The first blessing mysteriously disappeared, finally found the cause of “the front desk when the client in the network of the volatile, the server returns did not reach the client before the client not refresh button and related data, players can be the second time for the button operation, two requests to the server, the server after processing the first request, After the check result is success, the primary items of the player are deducted and an advanced item is generated and returned to the player. Note that at this time, the second request reaches the server, unfortunately, it is also the probability of success hit. At this time, the server processes as long as the probability hits, in order to avoid loss to our company, The lower-level items used for evolution are deducted first, then the rest of the dependencies are progressively deducted, and the higher-level items are returned to the player. Have a problem at this time, the first request item is successful, is the need to deduct the evolution of props, after deducting items, for the second request is actually does not meet the need of the number of props, but the background processing logic is as long as the hit probability, the success that you will succeed, this time in order to avoid losses, buckle goods first, at this time, To the second step is to deduct the props, found the balance is not enough,,, return to failure, but,,,, the somebody else’s first success successful props, yao,,, didn’t ~ ~ ~ this code coverage is OK (with the corresponding check upgrade use cases), code scanning is also OK, because found empty do very in place,,, But the root cause of this problem is a lack of design, which leads to problems in logical processing. This is something that we can’t find through automation, just by reading the code and scanning the results. It can only be found through the use case design, unfortunately, there is no such part in the use case design: weak network use case design, thus, “say goodbye”, can only reward the player with a cute smile, background log verification and compensation for the player ~ ~ ~

Second: what is the root cause of client crashes? In hindsight, the causes of abnormal client crash are as follows: Item refresh in the front end of the client is not real-time (this is understandable, because who would be idle to do real-time data query interaction with the background, and it is not a function with high requirements for real-time data. From the perspective of CAP, it is indeed acceptable to sacrifice real-time data for a function to query and set up stall items. However, for this reason, when the player selected the item stall owner offline before the player click to buy, at this time the player click to buy, sorry, the null pointer is abnormal ======) core. So why didn’t this bug be exposed through early code checks? The reason is as follows: the tool itself is insufficient, which leads to the failure to support the check of the branch of the business flow when encountering the branch of the business flow with break when doing short call check (LATER I heard that coverity can be introduced to solve the problem, which is being introduced now, but it is said that the charge is also expensive). Just update the bug causes the network going an urgent update, to be honest, when much of the problem, even as the test group in front of you to work overtime for ten days, half a month in the team, it seems, in front of outsiders feel you pay is meaningless, because 1 determines pay equal to ten thousand zero in front of you.

Well, no more examples. Anyway, as I run into more and more problems and think about root-cause queries, I’m starting to ask myself, as a testing practitioner, is code mastery really as high, important, and irreplaceable as legend has it? Or are we going in the wrong direction, and we, as test practitioners, have become too obsessed with the weapon of choice, believing that the winner is the winner? The actual results are often quite different.

Having said that, what are the main core competencies for testing? I personally think it can be understood as the following:

1. Quick learning and thinking ability. This special effect is mainly used for quick understanding of needs and improving the depth, efficiency and breadth of problem finding.

2. Problem divergence ability. This special effect is mainly used for the induction and summary of the impact surface, coverage

3. Communication and coordination skills. This special effect is mainly used to promote the solution of the problem and the reasonable coordination of resources, to ensure the requirements of the character ratio on the project

4. Summary. This stunt is mainly used to gain experience, level up, and move towards the rich

Finally, I just want to say that after knowing to do the right thing, we should think about how to do the right thing. Only in this way can we go further and further in the right direction. Of course, I do not mean to say that my understanding is right, but in line with the mentality of thinking alone without friends, will be lonely and unheard-of, I would like to make an exchange with you here. Guys, isn’t it time we started thinking about how to build a use-case design architecture (generic architecture) that I’ve tested the best of everyone else to build a use-case production architecture? So, combine our code scan and coverage to better guarantee the quality of the extranet, get more and higher recognition?

These materials should be the most comprehensive and complete preparation warehouse for my friend [Software Testing]. This warehouse also accompanied me through the most difficult journey. I hope it can also help you

Follow my wechat public account [sad Latiao] for free ~

Send a word: the appearance of the world depends on your gaze at its vision, their value depends on your pursuit and mentality, all good wishes, not in the waiting to have, but in the struggle for.

My learning exchange group: 902061117 group of technical cattle to communicate and share ~

If my blog is helpful to you, if you like my blog content, please “like” “comment” “favorites” one key three even oh!