background image
<< Client/Server - The kinds of network testing you can perform | Client/Server - Stress testing >>
Client/Server - Functional testing
<< Client/Server - The kinds of network testing you can perform | Client/Server - Stress testing >>
User's Guide
341
19 I
NTRODUCTION
TO
C
LIENT
/S
ERVER
T
ESTING
The kinds of network testing you can perform
To test for problems with concurrent access to the same database record, you
need to write specific scripts that synchronize two clients to make requests of
the same records in your server's database(s) at the same time. Your goal is to
encounter faulty read/write locks, software deadlocks, or other concurrency
problems. See "Code for concurrency test example" on page 389 for an
example of a test that demonstrates the necessary 4Test coding techniques.
Once the application passes the functional tests, you can test the boundary
conditions that might be reached by large numbers of transactions. The next
sections describe this kind of testing.
Stress testing
Stress testing verifies that running a particular command or set of commands
a large number of times does not break the software. For example, stress
testing discovers a failure to release resources. This is no different than stress
testing for a non-distributed application, but as with functional testing, you
need to discover whether the application functions properly with a remote
server under stress conditions. You can do this type of stress testing with a
single client.
You can create stress tests by repeating the same commands a large number
of times. Usually, the 4Test code looks like this:
for i = 1 to 50
DoSomeCommands ()
For example, you can stress-test remote logins or you can stress-test all
application operations that allocate significant amounts of memory (to see if
they release that memory). One simple form of stress testing is to set up your
functional tests to repeat indefinitely and then run them night and day over a
two- to four-day period.
Load testing
Load testing verifies that running a large number of concurrent clients does
not break the server or client software. For example, load testing discovers
deadlocks and problems with queues. SilkTest's unique architecture provides
built-in load testing. You can implement your functional tests using multi-
application techniques and then, after completing functional testing on a
single machine, you can run them on multiple targets. Unlike simulated load
testing tools, SilkTest allows you to create a real-life scenario that can
determine the actual impact of multi-machine operation on your application,
the server, the network, and all related elements.
There are two variations of load testing: peak load (which is sometimes
called stress testing in the client/server environment) and volume.
Peak load testing is placing a load on the server for a short time to emulate
the heaviest demand that would be generated at peak user times--for
example, credit card verification between noon and 1 PM on Christmas Eve.