What is a stress test?

Asked

Viewed 11,672 times

19

I see some questions here in the OS, old and new, in various languages, asking how to do a stress test.

  • What would be a stress test?
  • What this test measures?
  • This test is a reliable way to measure, whatever has to be measured?
  • In PHP, is it advisable to perform some stress tests? If so, where could I use it?
  • Interesting article: http://www.devmedia.com.br/testes-de-performancecarga-e-stress/26546

  • 16

    It’s kicking the server till he’s mad at you.

  • 4

    Watch Domingão do Faustão

1 answer

17


Stress test is performed to subject the software to extreme situations. Basically, the stress test is based on testing the software limits and evaluating its behavior. Thus, it is evaluated up to when the software may be required and what failures (if any) arise from the test.

Stress testing is critical in applications where efficiency is an important feature. For example:

  • File servers and web servers, which must meet requests from a large number of customers;

  • Industrial applications such as the control of a petroleum;

  • Computer games, which need acceptable performance for are commercially viable.

Let’s consider as an example the implementation of a web server used in e-commerce. A maximum of 5000 transactions per minute were established for a given execution venue when setting the system requirements. A stress test can then be done to answer several questions:

  • The system achieves the goal?
  • What is the maximum number of transactions actually possible?
  • If the execution platform degrades (for example, a failure partial network, lack of disk space, etc.), as the system if will carry?

In certain cases it is preferable that the execution of the program be maintained even if it degrades, avoiding a complete stop. A typical example are financial systems.

Failure possibilities under difficult operating conditions, such as recording incorrect operations, must be detected and avoided. A good stress test should be able to reveal this information to evaluators.

The great difficulty of performing a stress test is to properly configure the execution platform. For example: if the reviewer is interested in knowing the minimum amount of memory available for a program to work, physically removing RAM chips is a very laborious solution. In addition to RAM, there are several other parameters, such as disk, CPU and network installations, and it would be impossible to mount and disassemble a computer with different settings for all tests. This is done using stress tools.

An example of a tool that can be used for a stress test is Winstress, of Ultra-X. It is a program that allows artificially reducing the performance of a computer, according to the configuration desired by the evaluator. You can vary parameters such as CPU load, available memory, available disk space and network load.

There are also specific tools for testing network applications. Such tools allow testing a program by simulating an arbitrary number of connections. Some examples are Dieseltest and Opensta, for Internet applications, and Dbmonster, for testing SQL applications.

Other stress tools:

There are a ton of open source products for testing, look at http://www.opensourcetesting.org. Of these I highlight the following:

ab - http://httpd.apache.org apache stress tool, useful for simple load testing.

jmeter - http://jakarta.apache.org/jmeter works well for generating small/medium loads from a single machine, tests different HTTP protocols and allows creating reasonably complex scenarios.

Tsung - http://tsung.erlang-projects.org/ tool capable of simulating very complex scenarios using stochastic modeling of users. Works well to generate huge loads from various machines

slamd - http://www.slamd.com/ very cool sun product, allows creating scenarios and works in a distributed way, can generate large loads, but not compared to Tsung.

Siege - http://www.joedog.org/JoeDog/Siege many people who use Siege for simple load testing, can generate a very large load from a single station, but it’s a lot to process the results or use complex scenarios.


Hardware

For the stress test to be completely efficient, it is also necessary to know if the machine you are working has a good capacity, network and the like, among many N factors that can influence.

But I leave at least one tool for testing:

Heavyload allows to make the following tests:

  • CPU stress

Use your processor or even a specific number of processor cores for full capacity. Heavyload performs complex calculations to simulate the load on your processor.

  • Write test file

Check how your system behaves when confronted with the smallest disk space

  • Allocate memory

    You would like to test how well your computer works with scarce memory?

Among many other tests.


You knew:

THE 13 MAJOR TYPES OF SOFTWARE TESTING

When we talk about software testing we should always remember that these are divided into several types according to their particular purpose.

1. Test of Configuration

Test whether the software works on the hardware to be installed.

2. Test of Installation

Tests whether the software installs as planned, on different hardware and under different conditions such as little memory space, network interruptions, installation interruptions etc.

3. Integrity test

Test software’s resistance to failures (robustness).

4. Test of Safety

Tests whether the system and data are securely accessed, only by the author of the actions.

5. Functional Testing

It tests functional requirements, functions and use cases. "Does the application do what it should do?"

6. Test of Unity

Test an isolated component or system class.

7. Test of Integration

Test whether one or more combined components work satisfactorily. Some say that the integration test consists of several unit tests.

8. Test of Volume

Tests the behavior of the operating system with the "normal" volume of data and transactions involving the database over a long period of time.

9. Test of Performance

The performance test is divided into 3 types:

  • Cargo test
  • Tests the software under normal conditions of use. E.g.: response time, number of transactions per minute, concurrent users etc.
  • Stress test (as explained above)
  • Stability Test: Test whether the system keeps functioning satisfactorily after a period of use.

10. Test of Usability

Test focused on user experience, consistency of interface, layout, access to functionality etc.

11. White Box and Black Box Tests

Basically, white box testing involves the code and the black box, no.

12. Regression Testing

Retain a system or component to check if any recent modification has caused any unwanted effects, and make sure the system still meets the requirements.

13. Test of Maintenance

Tests if the change of environment did not interfere with the functioning of the system.


  • Related Topics:

What is the difference between a load test and a stress test?

  • I think that given the expectation that we write increasingly scalable solutions, what is tested is the ability to withstand extreme situations of combination hardware + software, and not just software. I.e.: with infinite memory, storage and bandwidth, magic processors and zero latency, no software would ever have any stress problem of any kind.

  • 4

    @Renan bad algorithm undermines even a perfect Turing machine

  • I added a little bit for this part. Because this has N factors that would need to be raised.

  • @Jeffersonquesado a Turing machine is an abstraction that has infinite memory and time at its disposal. A real computer is not a Turing machine =p

  • @Renan why said that even for something perfect and ideal can be undermined by a bad algorithm

  • No. For a Turing machine, the concept of an algorithm being better or worse than another does not make sense. It also deals with a more or less complex algorithm. Treating performance or complexity analysis with Turing machines makes no sense.

Show 1 more comment

Browser other questions tagged

You are not signed in. Login or sign up in order to post.