Your
company is rolling out its new
web application. This
web application is well
designed and attractive. It has been well
tested by your
quality assurance group. You have spent a lot of money
marketing your new
website. The
website now goes live. Very soon you realize that your new
web application is unable to scale to your typical production
load and the response times and
performance reach completely unacceptable levels. Your
web logs indicate that most of your
website visitors simply leave the new
website before buying anything since its
response times are very poor. You start to panic, and one of your friends tells you that the reason your
application does not
perform adequately is that you do not have ample hardware. Hearing this, you decide to add more
server hardware. While this has a small
effect on the
website response time, it is still woefully inadequate. You soon realize that problem does not really lie with the
hardware but rather with the
web application itself. It appears that your
web application was not well
optimized for the typical peak
loads. It becomes increasingly evident that most of your
marketing dollars were wasted.
Enter the
world of performance and
load testing. In order to ensure that your
application scales as the
load increases, it is necessary to
perform tests where your
application is tested against a simulated
load that closely resembles the actual
load that it will be subjected to when it is exposed to the outside
world.
It is important to distinguish between functional or regression
testing and
load or performance
testing. Functional and
regression testing is used to
automate a large number of scenarios to ensure that your
website works as intended.
Load testing on the other hand gauges how well your
website performs when it is subjected to a large
load, such as a large number of simultaneous users.
Load and
performance testing require the use of
automated testing
tools. It is impractical if not ridiculous to try to simulate a
load of 200 concurrent users by having a group of 200 folks sit on 200
machines and try to
perform operations at the same time. Before you can begin any kind of load and
performance testing you will need to identify the test scenarios you need to
automate. A
load testing tool will typically record
web requests and responses based on user interactions with a
website. As you perform various operations on your
website or
application, the
tool records all the
web transactions that take place. When you finish recording, it generates an automated
script. Alternatively you could use the
tool to manually
create the
script. Typically testers will perform a
combination of the two. They will use the
recording mechanism to generate the skeletal foundations of their
scripts and then manually modify the scripts to take into
account specialized scenarios. The
load testing
tool should also allow the tester to simulate constrained bandwidth situations. This means for example that it would
accurately model users who would use the
application on a slow modem
connection. It should also allow the tester to drive the script using random data from large external
data sets.
website design company in egypt
web design egypt company
web design egypt
website design egypt company
Load testing
scripts can be either
graphical or textual in nature. Good
load and performance
testing tools do not require the testers to be
programmers. Testers that are not familiar with
programming will
work with
scripts that can be graphically manipulated. Graphical
scripts will typically show all
recorded steps in the form of a hierarchical structure and
testers would
modify any of the steps in order to modify the recorded
script.
Testers who are proficient in
programming may want to manipulate their
scripts by editing the
code. These
testers would
work with
code written in a well known
programming language such as JavaScript, VBScript or C.
Once your
script has been
created, you may wish to put
specialized checks in place. These checks would typically be related specifically to the
application under
test. For example you may wish to check that the response returned by a certain
web request meets certain textual
criteria. This would involve the placement of a text
checkpoint. A text checkpoint can
verify that a given text segment is present or is not present in a specified portion of the
web page. Once you have finished the
creation of the
script you would typically
test the
script on your own
machine as a single user to ensure that the test
script runs as intended.
You are now ready to
perform a performance based
load test. A good
load testing tool will allow the
tester to fine tune the execution of the
test. This means that it will allow the
tester to choose the number of concurrent virtual
users, how the
script ramps up, how it ramps down and for how long it runs. It should also allow the
tester to
create various
groups of concurrent virtual
users that have their own ramp up, steady state and ramp down characteristics. A good
testing tool will allow the
user to distribute this
load over several
machines since a single
machine may be only able to scale up to a few hundred
users.
To understand the behavior of the
loaded web application, it is also important for the
load testing tool to enable the
tester to track the
performance characteristics of external
components such as
operating systems,
web servers, databases etc. This allows the
user to see how the
performance of his
application correlates with the
performance characteristics of the external component. This kind of
analysis will allow the
tester to pinpoint the root cause of
performance bottlenecks fairly easily.
During
test execution the
tester should be able to view the
performance graphs in real time for
performance metrics such as the transaction response time, HTTP responses per second grouped by HTTP
code (e.g. 200, 404, 500 etc), passed transactions per second, failed transactions per second, total transactions per second, hits per second,
pages downloaded per second etc. The
tester should also be
able to simultaneously view the
performance characteristics of the external components described above. For an
operating system this could be something like the % processor time, for a
database it could be the number of writes per second. At the end of the
test, the tester would typically be
able to view and save this
data as a
report for further
analysis.
Load and
performance testing allow you to simulate the behavior of your
application under a typical
production environment. This will allow you to
plan your hardware deployment strategy
effectively and ensure that your
application will deliver the expected
performance characteristics. Rolling out a
web application without
testing its
performance characteristics under expected
production loads would resemble crossing a road blindfolded.
Load testing is an essential part of the
development cycle of a
web application and should never be overlooked.
website design company in egypt
web design egypt company
web design egypt
website design egypt company