Unlock the entire StrongQA

Functional Testing

If you have bought a new car but it cannot move – this is not a bad car. That means you have bought a broken car for a definite amount of money signing a purchase and sale document voluntarily, approving you are satisfied with everything in this deal. You may say that it is impossible! Still, the situations given in the example are not rare in the world of IT. In other words, the accuracy of demands which you have for the future product will allow to create  the most precise software and afterwards test it to correspond with given demands. Functional testing is a good instrument which allows checking software for the ability to do business-tasks. Considering that the main target of the future product is to make profits, testing functional demands allows to realise whether we will get it or not.

Functional testing is software testing aimed to check the ability of functional demands, that is the ability to do tasks necessary for the users.

Advantages of functional testing:

  • this testing type is conducted in the conditions close to the customer’s ones (it is ideal if there are the same operating systems, browsers, database etc.).

Disadvantages of functional testing:

  • the possibility to omit logical mistakes in software;
  • the probability of redundant testing.
Functional testing automation is mostly appropriate and preferable in comparison with other testing types, as positive result of the testing reveals the ability to work in general.

Functional demands include:

  • functional suitability;
  • accuracy;
  • interoperability;
  • compliance;
  • security.

These are the main functional demands types. There can be more or fewer depending on the type of software. Also the number of testing of each testing type can be considerably different. For example, bank sphere system will have more security testing, testing educational programmes will be aimed at interaction ability.

Functional suitability

Functional suitability defines whether software carries out its basic functions or it does not.

This testing type allows to reveal functional flaws which are essential for decision-making – whether the application should be launched into production.

For the resultful testing there should be made a list of what is going to be tested and what’s not, prioritize the demands depending on risks, and on this basis prioritize testing scenario. This will give an opportunity to focus and not to omit more important functions while testing.

Business processes that describe the scenario of everyday system application are used in the basis of functional adaptability. In this aspect testing scenario as a rule is based on the cases of using the system similarly to the real life use.

Accuracy

Testing accuracy is defined by correspondence of the outcome with the slightest error which leads to various loss while final realization of the decision.

Accuracy can be positive and negative. Why is that? Tests can cover particular functionality with high density on which the customer’s business does not simpliciter depend. In this case a critical mistake can be omitted which will lead to significant loss of time and resources. Testing by such scenario can be called a negative accuracy.

However, engaging experienced specialists to the process of testing strategy preparation (for example, specialists of the company StrongQA), positive accuracy can be achieved – when the biggest amount of tests cover the most critical parts of the functional. This gives an opportunity to carry out testing faster and more often which allows to develop the application (and business) faster.

That is why a conclusion can be made that choosing staff for planning and carrying out testing  is an important stage in realization of the IT project.

Interoperability

Interoperability is the ability of a system or a product interact with other systems or products not demanding additional actions from the customer.

Nowadays, these characteristics of a software product has a unique significance, as there are quite few loop systems and they have narrow specialization (for example, aircraft software and space industry software, defence industry). Most commercial systems can integrate with other external systems, which enables various services function.

Software with a good ability to interact can be easily integrated with other systems not demanding any serious modifications. In this case, the number of changes and time, necessary to carry them out, is not considerable, which differs this application from rivals to the best advantage, allows to switch over new platforms, the number of which increases every year.

If the suggested decision will not be flexible it will either get outdated too fast, or its adaptation will be financially pointless. The ideal variant will be flexible decision which can be easily adapted vertically (as the systems develop in time), as well as horizontally (adaptation to the largest possible number of decisions from side companies).

For example, if your application works successfully in all browsers with all operating systems then it will cover larger target auditory than proprietary apps.

Compliance

At the very beginning of its development IT industry did not have exact rules and strict standards. Still nowadays standardization refers this sphere, too. That’s why it becomes critical for serious projects to correspond the given standards. Special authorities and companies watch their fulfillment.

Nowadays it is worth following the tendencies in the world of standardization in IT sphere to bring the developing decisions as close to standards as possible.

This strategy has many advantages:

  • only the companies with highly qualified staff can afford the development by standards – which indicates the level of the company-developer on the whole;
  • easier integration of standard decisions from different developers;
  • formalization of the development process (and its clarity on all stages).

It is likely, that the times of “Wild programming” are passing. That’s why companies have to care of standardization of processes while fulfilling their activity. Company StrongQA pays special attention to the issues of quality of the development process and testing software, which permits to speak of a high quality of a product.

Security

Testing security— is evaluating software vulnerability to various attacks.

Computer systems are very often a target of illegal break-in. Break-in means a wide range of actions: hackers’ attempts to break into a system because of keeping score, angry staff’ revenge, frauds’ hacking for illegal profits. Testing security checks actual reaction of the security mechanisms, installed into the system, to the break-in. While testing security a tester plays a hacker.

He is allowed everything:

  • attempts to learn the password with the help of external means;
  • System attack with the help of special utilities that analise security;
  • suppression and knocking the system (in hope it will refuse to serve other customers);
  • purposeful mistakes input hoping to penetrate the system during reactivating;
  • looking through not secret data hoping to find the key to enter the system.

There is a great deal of examples of vulnerabilities and attacks. Even having done the whole circle of security testing you cannot be 100 % sure that the system is really safe. But you can be sure that the percentage of illegal breaks, data robberies and data loss will be much lower than of those who have not had testing security done.

Having unlimited time and resources a good security testing will break any system. A system designer’s task is to make the costs of the penetration higher than the value of the information gotten it the end.


Theoretical and practical limits of functional testing

The theory of testing rejects unjustified level of trust to series of successfully done tests. Unfortunately, most results in testing theory are negative, meaning that “testing a programme can be used to demonstrate the existing flaws but it will never show their absence”. The main reason to this is that complete (overwhelming) testing is unachievable for real software.

1 Ratings