First of all, we would like to note that mathematics helps to settle one’s mind and improve logical thinking. You must admit that these 2 categories are significantly important during software development and testing.
Also, it worth mentioning that software is mainly based on system behavior logic and has an orthogonal design that any developer must understand.
The biggest difference between structural and behavioral view is that the structural one focuses on software base notation. At another point, the behavioral view covers all the aspects of the software’s intent.
The main difficulty for QA is the fact that almost 70% of all the technical documentation is created by developers and for developers’ aims (and it is oriented to structural information, not to the behavioral one). Both these kinds of information are important due to their defects.
Further, we will talk about such a concept as a discrete mathematical method, with the help of which any tester can analyze the connections between software structure and its behavior logic.
The Use of Discrete Mathematical Methods During Testing
Every day QA engineers work with logical formulas, parameters behavior, and structural layers of information. Their professional task is to check and control the system state.
It means that tester should have mathematic and algorithmic thinking in order to clearly see the logic of tested software.
If the QA specialist uses discrete mathematical methods in his/her daily activity, then all the logical processes during software testing will be qualitatively interconnected, actions will be sequential, and any tested function will be thoroughly analyzed.
Discrete mathematics knowledge helps to find the ultimate solution in any work situation. For example, you can set the optimal set of test cases without including all the acceptable scenarios.
Also, discrete mathematics allows visualizing specific software parameters that were checked and covered with tests.
Unfortunately, our world isn’t perfect. So expected results can be radically different from the actual ones. Consequently, the main task of the QA department is to run all the test cases during software testing.
To better understand discrete math usage in the QA sphere, you can take a look at the Venn diagram that clearly demonstrates this correlation.
Such a program allows not only finding a particular set of test cases but also comparing the usage (applicability) of some set. Moreover, discrete math allows optimizing and analyzing sets of test processes that influence software functioning.
Set Theory and Its Role in the Testing
We will analyze this theory in the context of one test case when the tester has to check the “Next day” app performance logic (a program that shows what the day will follow after some date entry).
So, set theory allows creating so-called pseudocode:
- M1={month:month has 30 days}
- M2={month:month has 31 days except December}
- M3={month:month is February}
- M4={month:month is December} D1={day:1<=day<=28}
- D2={day:1<=day<=29}
- D3={day:1<=day<=30} D4={day:1<=day<=31}
- Y1={year:year is a leap year}
- Y2={year:year is not a leap year}
QA can run all possible tests on the basis of this data. Such a data format increases the speed of test running and reduces the risk to skip some serious defect.
Graph Theory
The most part of the discrete math is based on the so-called graph theory that studies graphs. Specialists use these graphs for a qualitative view of the connections between data or some objects. The most common example of the graph is a computer network.
Graphs play a key role in software development. For example, with their help, one can divide some functions (difficult tasks) into small parts. This action allows us to understand more effectively the business logic.
Now let’s get back to the software testing and imagine that we have some process flow (for example, task moving in the task tracking system). Also, we have some task specifications and can move it to another stage (direct graph). Or we can reach some point where we cannot edit the nature (indirect graph).
Now, imagine that tester has an entity set and actions that can be performed with this entity. And with the help of a connectivity matrix, he/she can shorten the set of test cases.
The process of reducing the number of test cases is the most important part of any kind of software testing. That’s because there is a maximum testing coverage, and the unnecessary checks are not performed.
The tester’s task is to cover the web product using effective test cases that can check all the possible combinations of software processes. QA specialists can achieve the greatest success with fewer efforts and using the basic principles of discrete math (algorithms) to find the most suitable set of test cases.
Also, discrete math allows understanding the way software performs because any web product uses special algorithms and methods of discrete math (along with logic). This means that if we know how the program works, we can find there a bug which the ordinary user won’t see.
Petri Net
Here we can see how the software works on the base of microservices technologies with the Petri net.
In this picture, we can see that the system is in the initial state and it has to get an incoming signal that comes from another system. Some particular action has to be done depending on get results.
In other words, Petri nets show the dynamics of the whole system. If there is some problem, it can be quickly located.
Neural Networks
All artificial neural networks are also based on the graph principle. They can process data with human neurons. Every part of the neural system is based on the graph that consists of the input node, hidden layer, and originating node.
Some part of the information goes to the input layer, and algorithms of the hidden layer allow processing data with the following sending results to the outgoing stage. Thus, the neural network can perform an activity on the basis of this data.
Millennium Testing
The last example of discrete math usage in the QA sphere will be software testing development. Nowadays, there are a lot of testing methods and approaches referred to as millennium testing which were developed and implemented in the early 21st century.
BDD (Behavior Driven Development) is a part of so-called millennium testing which allows testers to build a high correlation between function acceptance and the checks used for some functional testing.
The basic structure of working BDD functioning is built on the dynamic graph (Petri net).
Conclusion
To sum up, we would like to emphasize the main advantages of discrete math usage in the daily life of a quality assurance company:
- Effective help in analyzing the business logic of the developed functionality;
- Capability to divide difficult tasks into small components;
- Effective testing performance in less time;
- Clear visualization of the software internal structure.
No doubt, discrete math allows improving the efficiency of any software testing. Every aspect of discrete math simplifies the interpretation of software and all its lifecycles.
Leave A Comment