Sunday, June 21, 2009

Perf_Ad


What is Transaction Response Time?


Transaction Response Time represents the time taken for the application to complete a defined transaction or business process.


Why is important to measure Transaction Response Time?

The objective of a performance test is to ensure that the application is working perfectly under load. However, the definition of "perfectly" under load may vary with different systems.
By defining an initial acceptable response time, we can benchmark the application if it is performing as anticipated.

The importance of Transaction Response Time is that it gives the project team/ application team an idea of how the application is performing in the measurement of time. With this information, they can relate to the users/customers on the expected time when processing request or understanding how their application performed.


What does Transaction Response Time encompass?


The Transaction Response Time encompasses the time taken for the request made to the web server, there after being process by the Web Server and sent to the Application Server. Which in most instances will make a request to the Database Server. All this will then be repeated again backward from the Database Server, Application Server, Web Server and back to the user. Take note that the time taken for the request or data in the network transmission is also factored in.

To simplify, the Transaction Response Time comprises of the following:
1. Processing time on Web Server
2. Processing time on Application Server
3. Processing time on Database Server
4. Network latency between the servers, and the client
The following diagram illustrates Transaction Response Time.



Figure 1 Transaction Response Time = (t1 + t2 + t3 + t4 + t5 + t6 + t7 + t8 + t9) X 2

Note:
Factoring the time taken for the data to return to the client.


How do we measure?

Measuring of the Transaction Response Time begins when the defined transaction makes a request to the application. From here, till the transaction completes before proceeding with the next subsequent request (in terms of transaction), the time is been measured and will stop when the transaction completes.

Differences with Hits Per Seconds
Hits per Seconds measures the number of "hits" made to a web server. These "hits" could be a request made to the web server for data or graphics. However, this counter does not represent well to users on how well their application is performing as it measures the number of times the web server is being accessed.


How can we use Transaction Response Time to analyze performance issue?
Transaction Response Time allows us to identify abnormalities when performance issues surface. This will be represented as slow response of the transaction, which differs significantly (or slightly) from the average of the Transaction Response Time.
With this, we can further drill down by correlation using other measurements such as the number of virtual users that is accessing the application at the point of time and the system-related metrics (e.g. CPU Utilization) to identify the root cause.
Bringing all the data that have been collected during the load test, we can correlate the measurements to find trends and bottlenecks between the response time, the amount of load that was generated and the payload of all the components of the application.

How is it beneficial to the Project Team?


Using Transaction Response Time, Project Team can better relate to their users using transactions as a form of language protocol that their users can comprehend. Users will be able to know that transactions (or business processes) are performing at an acceptable level in terms of time.
Users may be unable to understand the meaning of CPU utilization or Memory usage and thus using a common language of time is ideal to convey performance-related issues.

===========================================================

Before starting loadtest we have to make sure the following check lists: :)

1.End users, customer, and project members have been notified in advance of the execution dates and hours for the capacity test
2.All service level agreements, response time requirements have been agreed upon by all stakeholders.
3.Contact list with names and phone numbers has been drafted for support personnel (onsite and remote)
4.Functional Testing of the application has been completed.
5.Restart the controller machine.
6.Ramp Up / Duration / Ramp Down is configured correctly.
7.All Load Generators are in a "Ready" status.
8.All Load Generators are assigned to appropriate scripts.
9.All scripts have the correct number of Vusers assigned to them.
10.All scripts have the correct number of Iterations assigned to them.
11.Correct pacing has been agreed upon and configured for all appropriate scripts.
12.Logging is set to Send messages only when an error occurs for all scripts.
13.Think Times have been enabled/disabled in the test scripts
14.Generate snapshot on error is enabled for all appropriate scripts.
15.Timeout values have been set to the appropriate values.
16.All content checks have been updated for the appropriate scripts.
17.Rendezvous points have been enabled/disabled for appropriate scripts
18.All necessary data has been prepared/staged and is updated in all scripts.
19.Any scripts with unique data requirements have been verified.
20.All scripts have been refreshed in the controller and reflect the most recent updates.
21.IP Spoofing has been enabled in the controller.
22.IP Spoofing has been configured on all appropriate Load Generators.
23.All LoadRunner Monitors have been identified, configured and tested.
24.Auto Collate Results should be enabled
25.Results directory and file name should be updated.

==========================================

Max. Running Vuser

It defines at any point of point of time, the maximum number of vusers running together concurrently (in Run state). This is the "state" or usually the requirement of a load test to reach "X" number of concurrent users. If a load test were to required to run 100 concurrent users, then the Max. Running Vuser must be 100. This is different from Vuser Quantity explained in the following.
Vuser Quantity

In the Controller, the Vuser Quantity is the total number of participating in the load test but it is different from Max. Running Vuser which is explained above. To view the total number of Vuser participating the load test (Vuser Quantity), open the Vuser Summary graph. Please take note that the Summary Report in the Analysis session displays the maximum number of vusers running in the scenario and not the total vuser particiapting.

Underlying Operating System and Network Improvements
If you control the OS and hardware where the application will be deployed, there are a number of changes you can make to improve performance. Some changes are generic and affect most applications, while some are application-specific. This article applies to most server systems running Java application, including servlets, where you usually specify (or have specified to you) the underlying system, and where have some control over tuning the system. Client and standalone Java programs are likely to benefit from this chapter only if you have some degree of control over the target system, but some tips in the chapter apply to all Java programs.
It is usually best to target the OS and hardware as a last tuning choice. Tuning the application itself generally provides far more significant speedups than tuning the systems on which the application is running. Application tuning also tends to be easier (though buying more powerful hardware components is easier still and a valid choice for tuning). However, application and system tuning are actually complementary activities, so you can get speedups from tuning both the system and the application if you have the skills and resources. Here are some general tips for tuning systems:

• Constantly monitor the entire system with any monitoring tools available and keep records. This allows you to get a background usage pattern and also lets you compare the current situation with situations previously considered stable.
• You should run offline work during off-hours only. This ensure that there is no extra load on the system when the users are executing online tasks and enhance performance of both online and offline activities.
• If you need to run extra tasks during the day, try to slot them into times with low user activity. Office activity usually peaks at 9am and 2:30pm and has a load between noon and 1pm or at shift changeovers. You should be able to determine the user-activity cycles appropriate to your system by examining the results of normal monitoring. The reduced conflict for system resources during periods of low activity improves performance.
• You should specify timeouts for all process under the control of your application (and others on the system, if possible) and terminate processes that have passed their timeout value.
• Apply any partitioning available from the system to allocate determinate resources to your application. For example, you can specify disk partitions, memory segments, and even CPUs to be allocated to particular process.

CPU
Disk
Memory
Network

The above is taken from the publication, "Java Performance Tuning" written by Jack Shirazi. I would recommend to read this book as it provides not just tuning and bottleneck concepts bounded by Java. A simplified version (which is the summary of the chapter can be found here [Comming soon]).
Basics: CPU Bottlenecks
Java provides a virtual machine runtime system that is just that: an abstraction of a CPU that runs in software. (Note that this chapter is taken from the "Java Performance Tuning" written by Jack Shirazi and therefore alot of discussions circled around Java technologies.) These virtual machines run on a real CPU, and in this section the book discuss the performance characteristics of those real CPUs.

CPU Load


The CPU and many other parts of the system can be monitored using system-level utilities. On Windows, the task manager and performance monitor can be used for monitoring. On UNIX, a performance monitor (such as perfmeter) is usually available, as well as utilities such as vmstat. Two aspects of the CPU are worth watching as primary performance points. These are the CPU utilization (usually expressed in percentage terms) and the run-able queue of processes and threads (often called the load or the task queue). The first indictor is simply the percentage of the CPU (Or CPUs) being used by all the various threads. If this is up to 100% for significant periods of time, you may have a problem. On the other hand, if it isn't, the CPU is under-utilized, but that is usually preferable. Low CPU usage can indicate that your application may be blocked for significant periods on disk or network I/O. High CPU usage can indicate thrashing (lack of RAM) or CPU contention (indicating that you need to tune the code and reduce the number of instructions being processed to reduce the impact on the CPU).

A reasonable target is 75% CPU utilization (which from what I read from different authors varies from 75% till 85%). This means that the system is being worked toward its optimum, but that you have left some slacks for spikes due to other system or application requirements. However, note that if more than 50% of the CPU is used by system processes (i.e. administrative and IS process), your CPU is probably under-powered. This can be identified by looking at the load of the system over some period when you are not running any applications.

The second performance indicator, the run-able queue, indicates the average number of processes or threads waiting to be scheduled for the CPU by the OS. They are run-able processes, but the CPU has no time to run them and is keeping them waiting for some significant amount of time. As soon as the run queue goes above zero, the system may display contention for resources, nut there usually some value above zero that still gives acceptable performance for any particular system. You need to determine what that value is in order to use this statistics as a useful warning indicator. A simplistic way to do this is to create a short program that repeatedly does some simple activity. You can then time each run of that activity. You can run copies of this process one after the other so that more and one copies are simultaneously running. Keep increasing the number of copies being run until the run queue starts increasing. By watching the times recorded for the activity, you can graph that time against the run queue. This should give you some indication of when the run-able queue becomes too large for useful responses on your system, administrator if the threshold is exceeded. A guideline by Adrian Cockcroft is that performance starts to degrade if the run queue grows bigger than four times the number of CPUs.

If you can upgrade the CPU of the target environment, doubling the CPU speed is usually better than doubling the number of CPUs. And remember that parallelism in an application doesn't necessarily need multiple CPUs. If I/O is significant, the CPU will have plenty of time for many threads.

Process Priorities

The OS also has the ability to prioritize the processes in terms of providing CPU time by allocating process priority levels. CPU priorities provide a way to throttle high-demand CPU processes, thus giving other processes a greater share of the CPU. If there are other processes that need to run on the same machine but it doesn't matter if they were run slowly, you can give your application processes a (much) higher priority than those other processes, thus allowing your application the lion's share of CPU time on a congested system. This is worth keeping in mind if your application consists of multiple processes, you should also consider the possibility of giving your various processes different levels of priority.

Being tempted to adjust the priority levels of processes, however, is often a sign that the CPU is underpowered for the tasks you have given it.
The above is taken from the publication, "Java Performance Tuning" written by Jack Shirazi. I would recommend to read this book as it provides not just tuning and bottleneck concepts bounded by Java.
Disks Bottlenecks
In most cases, applications can be tuned so that disk I/O does not cause any serous performance problems. But if, application tuning, you find that disk I/O s still causing a performance problem; your best bet may be to upgrade the system disks. Identifying whether the system has a problem with disk utilization is the first step. Each system provides its own tools to identify disk usage (Windows has a performance monitor, and UNIX has the sar, vmstat, iostat utilities.) At minimum, you need to identify whether the paging is an issue (look at disk-scan rates) and assess the overall utilization of your disks (e.g. performance monitor on Windows, output from iostat –D on UNIX). It may be that the system has a problem independent of your application (e.g. unbalanced disks), and correcting this problem may resolve the problem issue.

If the disk analysis does not identify an obvious system problem that is causing the I/O overhead, you could try making a disk upgrade or a reconfiguration. This type of tuning can consist of any of the following:
• Upgrading to faster disks
• Adding more swap space to handle larger buffers
• Changing the disk to be striped (where files are striped across several disks, thus providing parallel I/O. e.g. with a RAID system)
• Running the data on raw partitions when this is shown to be faster.
• Distributing simultaneously accessed files across multiple disks to gain parallel I/O
• Using memory-mapped disks or files

If you have applications that run on many systems and you do not know the specification of the target system, bear in mind that you can never be sure that ant particular disk is local to the user. There is a significant possibility that the disk being used by the application is a network-mounted disk. This doubles the variability in response times and throughput. The weakest link will probably not even be constant. A network disk is a shared resource, as is the network itself, so performance is hugely and unpredictably affected by other users and network load.


Disk I/O
Do not underestimates the impact of disk writes on the system as a whole. For example, all database vendors strongly recommend that the system swap files be placed on a separate disk from their databases. The impact of if not doing so can decrease database throughput (and system activity) but an order of magnitude. This performance decreases come from not splitting I/O of two disk-intensive applications (in this case, OS paging and database I/O).

Identifying that there is an I/O problem is usually fairly easy. The most basic symptom is that things take longer than expected, while at the same time the CPU is not at all heavily worked. The disk-monitoring utilities will also tell you that there is a lot of work being done to the disks. At the system level, you should determine the average peak requirements on the disks. Your disks will have some statistics that are supplied by the vendor, including:

The average and peak transfer rates, normally in megabytes (MB) per seconds, e.g. 5MB/sec. Form this, you can calculate how long an 8K page takes to be transferred from disk, and for example, 5MB/sec is about 5K/ms, so an 8K page takes just under 2ms to transfer.

Average seek time, normally in milliseconds (ms). This is the time required for the disk head to move radially to the correct location on the disk.

Rotational speed, normally in revolutions per minutes (rpm), e.g. 7200rpm. From this, you can calculate the average rotational delay in moving the disk under the disk-head reader, i.e., the time taken for half a revolution. For example, for 7200rpm, one revolution takes 60,000ms (60 seconds) divided by 7200rpm, which is about 8.3 ms. So half a revolution takes just over 4ms, which is consequently the average rotational delay.

This list allows you to calculate the actual time it takes to load a random 8K page from the disk, this being seek time + rotational delay + transfer time. Using the examples given in the list, you have 10 + 4 + 2 = 16 ms to load a random 8K page (almost an order of magnitude slower than the raw disk throughput). This calculation gives you a worst –case scenario for the disk-transfer rates for your application, allowing you to determine if the system is up to the required performance. Note that if you are reading data stored sequentially in disk (as when reading a large file), the seek time and rotational delay are incurred less than once per 8K page loaded. Basically, these two times are incurred only at the beginning of opening the file and whenever the file is fragmented. But this calculation is confounded by other processes also executing I/O to the disk at the same time. This overhead is part of the reason why swap and other intensive I/O files should not be put on the same disk.

One mechanism for speeding up disk I/O is to stripe disks. Disk striping allows data from a particular file to be spread over several disks. Striping allows reads and writes to be performed in parallel across the disks without requiring any application changes. This can speed up disk I/O quite effectively. However, be aware that the seek and rotational overhead previously listed still applies, and if you are making many small random reads, there may be no performance gain from striping disks.

Finally, note again that using remote disks adversely affects I/O performance. You should not be using remote disks mounted from the network with any I/O-intensive operations if you need good performance.


Clustering Files

Reading many files sequentially is faster if the files are clustered together on the disk, allowing the disk-head reader to flow from one file to the next. This clustering is best done in conjunction with defragmenting the disks. The overhead in finding the location of a file on the disk (detailed in the previous section) is also minimized for sequential reads if the files are clustered.

If you cannot specify clustering files at the disk level, you can still provide similar functionality by putting all the files together into one large file (as is done with the ZIP file systems). This is fine if all the files are read-only files or if there is just one file that is writable (you place that at the end). However, when there is more than one writable file, you need to manage the location of the internal files in your system as one or more grow. This becomes a problem and is not usually worth the effort. (If the files have a known bounded size, you can pad the files internally, thus regaining the single file efficiency.)
Cached File Systems (RAM Disks, tmpfs, cachefs)

Most OS provide the ability to map a file system into the system memory . This ability can speed up reads and writes to certain files in which you control your target environment. Typically, this technique has been used to speed up the reading and writing of temporary files. For example, some compilers (of languages in general, not specifically Java) generate many temporary files during compilation. If these files are created and written directly to the system memory, the speed of compilation is greatly increased. Similarly, if you have the a set of external files that are needed by your application, it is possible to map these directly into the system memory, thus allowing their reads and writes to be speeded up greatly.

But note that these types of file systems are not persistent. In the same way the system memory of the machine gets cleared when it is rebooted, so these file systems are removed on reboot. If the system crashes, anything in a memory-mapped file system is lost. For this reason, these types of file systems are usually suitable only for temporary files or read-only versions of disk-based files (such as mapping a CD-ROM into a memory-resident file system).

Remember that you do not have the same degree of fine control over these file systems that you have over your application. A memory-mapped file system does not use memory resources as efficiently as working directly from your application. If you have direct control over the files you are reading and writing, it is usually better to optimize this within your application rather than outside it. A memory-mapped file system takes space directly from system memory. You should consider whether it would be better to let your application grow in memory instead of letting the file system take up that system memory. For multi-user applications, it is usually more efficient for the system to map shared files directly into memory, as a particular fule then takes up just one memory location rather than duplicate in each process. Note that from SDK 1.4, memory-mapped files are directly supported from the java.nio package. Memory-mapped files are slightly different from memory-mapped file systems. A memory-mapped file uses system resources to read the file into system memory, and that data can then be accessed form Java through the appropriate java.nio buffer. A memory-mapped file system does not require the java.nio package and, as far as Java is concerned, files in that file system are simply files like any others. The OS transparently handles the memory mapping.

The creation of memory-mapped file systems is completely system-dependent, and there is no guarantee that it is available on any particular system (though most modern OS do support this feature). On UNIX system, the administrator needs to look at the documentation of the mount command and its subsections on cachefs and tmpfs. Under Windows, you should find details by looking at the documentation on how to setup a RAM disk, a portion of memory mapped to a logical disk drive.

In a similar way, there are products available that pre-cache shared libraries (DLL) and even executables in memory. This usually means only that an application starts quicker or loads the quicker, and so may not be much help in speeding up a running system.

But you can apply the technique of memory-mapping file systems directly and quite usefully for applications in which processes are frequently started. Copy the Java distribution and all class files (all JDK, application, and third-party class files) onto a memory-mapped file system and ensure that all executions and classloads take place from the file system. Since everything (executables, DLLs, class files, resources, etc.) is already in memory, the startup time is much faster. Because only the startup (and class loading) time is affected, this technique gives only a small boost to applications that are not frequently starting processes, but can be usefully applied if startup time is a problem.

Disk Fragmentation

When files are stored on disk, the bytes in the files are note necessarily stored contiguously: their storage depends on file size and contiguous space available on the disk. This non-contiguous storage is called fragmentation. Any particular file may have some chunks in one place, and a pointer to the next chunk that may be quite a distance away on the disk.

Hard disks tend to get fragmented over time. This fragmentation delays both reads from files (including loading applications into computer memory on startup) and writes to files. This delay occurs because the disk header must wind on to the next chunk with each fragmentation, and this takes time.

For optimum performance on any system, it is a good idea to periodically defragment the disk. This reunites files that have been split up so that disk heads do not spend so much time searching for data once the file-header locations have been identified, thus speeding up data access. Defragmenting may not be effective on all systems, however.
Disk Sweet Spots

Most disks have a location from which data is transferred faster than from other locations. Usually, the closer the data is to the outside edge of the disk, the faster it can be read from the disk. Most hard disks rotate at constant angular speed. This means that the linear speed of the disk under a point is faster the farther away the point is from the center of the disk. Thus, data at the edge of the disk can be read from (and written to) at the faster possible rate commensurate with the maximum density of data storable on disk.

This location with faster transfer rates usually termed the disk sweet spot. Some
(Commercial) utilities provide mapped access to the underlying disk and allow you to reorganize files to optimize access. On most server systems, the administrator has control over how logical partitions of the disk apply to the physical layout, and how to position files to the disk sweet spots. Experts for high-performance database system sometimes try to position the index tables of the database as close as possible to the disk sweet spot. These tables consist of relatively small amounts of data that affect the performance of the system in a disproportionately large way, so that any speed improvement in manipulating these tables is significant.

Note that some of the latest OS are beginning to include "awareness" of disk sweet spots, and attempt to move executables to sweet spots when defragmenting the disk. You may need to ensure that the defragmentation procedure does not disrupt your own use of the disk sweet spot.
The above is taken from the publication, "Java Performance Tuning" written by Jack Shirazi. I would recommend to read this book as it provides not just tuning and bottleneck concepts bounded by Java..

============================================================
Memory Bottlenecks
Maintaining watch directly on the system memory (RAM) is not usually that helpful in identifying performance problems. A better indication that memory might be affecting performance can be gained by watching for paging of data from memory to the swap files. Most current OS have a virtual memory that is made up of the actual (real) system memory using RAM chips, and one or more swap files on the system disks. Processes that are currently running are operating in real memory. The OS can take pages from any of the processes currently in real memory and swap them out to disk. This is known as paging. Paging leaves free space in real memory to allocate to other processes that need to bring in a page from disk.

Obviously, if all the processes currently running can fit into real memory, there is no need for the system to swap out any pages. However, if there are too many processes to fit into real memory, paging allows the system to free up system memory to run more processes. Paging affects system performance in many ways. One obvious way is that if a process has had some pages moved to disk and the process becomes run-able, the OS has to pull back the pages from dusk before that process can be run. This leads to delays in performance. In addition, both CPU and the disk I/O spend time doing the paging, reducing available processing power and increasing the load on the disks. This cascading effect involving both the CPU and I/O can degrade the performance of the whole system in such a way that it maybe difficult to even recognize that paging is the problem. The extreme version of too much paging is thrashing, in which the system is spending so much time moving pages around that it fails to perform any other significant work. (The next step is likely to be a system crash).

As with run-able queues (see CPU section), a little paging of the system does not affect the performance enough to cause concern. In fact, some paging can be considered good. It indicated that the system's memory resources are fully utilized. But at the point where paging becomes a significant overhead, the system is overloaded.

Monitoring paging is relatively easy. On UNIX, the utilities vmstat and iostat provide details as to the level of paging, disk activity and memory levels. On Windows, the performance monitor has categories to show these details, as well as being able to monitor the system swap files.

If there is more paging than is optimal, the system's RAM is insufficient or processes are too big. To improve this situation, you need to reduce the memory being used by reducing the number of processes or the memory utilization of some processes. Alternatively, you can add RAM. Assuming that it is your application that is causing the paging (Otherwise, either the system needs an upgrade, or someone else's processes may also have to be tuned), you need to reduce the memory resources you are using.

When the problem is caused by a combination of your application and others, you can partially address the situation by using process priorities (see the CPU "section"). The equivalent to priority levels for memory usage is an all-or-nothing option, where you can lock process in memory. This option is not available on all systems and is more often applied to shared memory than to processes, but nevertheless, it is useful to know. If this option is applied, the process is locked into real memory and is not paged out at all. You need to be aware that using this option reduces the amount of RAM available to all other processes, which can make overall system performance worse. Any deterioration in system performance is likely occurring at heavy system load, so make sure you extrapolate the effect of reducing the system memory in this way.
Network Bottlenecks
At the network level, many things can affect performance. The bandwidth (the amount of data that can be carried by the network) tends to be the first culprit checked. Assuming you have determined that bad performance is attributable to the network component of an application, there is more likely cause of bad network performance than network bandwidth. The most likely cause of bad network performance is the application itself and how it is handling distributed data and functionality.
The overall speed of a particular network connection is limited by the slowest link in the connection chain and the length of the chain. Identifying the slowest link is difficult and may not even be consistent: it can vary at different times of the day or for different communication paths. A network communication path lead from an application through a TCP/IP stack (which adds various layers of headers, possibly encrypting and compressing data as well), then through the hardware interface, through a modem, over a phone line, through another modem, over to a service provider's router, through many heavily congested data lines of various carrying capacities and multiple routers with different maximum throughputs and configurations, to a machine at the other end with its own hard interface, TCP/IP stack and application. A typical web download route is just like this. In addition, there are dropped packets, acknowledgements, retries, bus contention, and so on.
Because so many possibilities causes of bad network performance are external to an application, one option you can consider including in an application is a network speed testing facility that reports to the user. This should test the speed of data transfer from the machine to various destinations: to itself, to another machine on the local network, to the Internet Service Provider, to the target server across the network, and to any other destinations appropriate. This type of diagnostics report can tell users that they are obtaining bad performance from something other than your application. If you feel that the performance of your application is limited by the actual network communication speed, and not by other (application) factors, this facility will report the maximum possible speeds to youruser.

Latency
Latency is different from the load-carrying capacity (bandwidth) of a network. Bandwidth refers to how much data can be sent down the communication channel for a given period of time and is limited by the link in the communication chain that has the lowest bandwidth. The latency is the amount of time a particular data packet takes to get from one end of the communication channel to the other. Bandwidth tells you the limits within which your application can operate before the performance become affected by the volume of data being transmitted. Latency often affects the user's view of the performance even when bandwidth isn't a problem.
In most cases, especially Internet traffic, latency is an important concern. You can determine the basic round-trip time for a data packets from any two machines using the ping utility. This utility provides a measure of the time it takes a packet of data to reach another machine and be returned. However, the time measure is for a basic underlying protocol (ICMP packet) to travel between the machines. If the communication channel is congested and the overlying protocol requires re-transmissions (often the case for Internet traffic), one transmission at the application level can actually be equivalent to many round trips.
It is important to be aware of these limitations. It is often possible to tune the application to minimize the number of transfers by packing data together, caching and redesigning the distributed application protocol to aim for a less conversational mode of operation. At the network level, you need to monitor the transmission statistics (using the ping and netstat utilities and packet sniffers) and consider tuning any network parameters that you have access to in order to reduce re-transmissions.
TCP/IP Stacks
The TCP/IP stack is the section of code that is responsible for translating each application-level network request (send, receive, connect, etc.) through the transport layers down to the wire and back up to the application at the other end of the connection. Because the stacks are usually delivered with the operation system and performance-tested before delivery (since a slow network connection on an otherwise fast machine and fast network is pretty obvious), it is unlikely that the TCP/IP stack itself is a performance problem.
In addition to the stack itself, stacks include several tunable parameters. Most of these parameters deal with transmission details beyond the scope of the book. One parameter worth mentioning is the maximum packet size. When your application sends data, the underlying protocol breaks the data into packets that are transmitted. There is an optimal size for packets transmitted over a particular communication channel, and the packet size actually used by the stack is compromise. Smaller packets are less likely to be dropped, but they introduced more overhead, as data probably has to be broken up into more packets with more header overhead.
If your communication takes place over a particular set of endpoints, you may want to alter the packet sizes. For a LAN segment with no router involved, the packets can be big (e.g. 8KB). For a LAN with routers, you probably want to set the maximum packet size to the size the routers allow to pass unbroken. (Routers can break up the packets into smaller ones; 1500 bytes is the typical maximum packet size and the standard for the Ethernet. The maximum packet size is configurable by the router's network administrator.) If your application is likely to be sending data over the Internet and you cannot guarantee the route and quality of routers it will pass through, 500 bytes per packet is likely to be optimal.
Network Bottlenecks
Other causes of slow network I/O can be attributed directly to the load or configuration of the network. For example, a LAN may become congested when many machines are simultaneously trying to communicate over the network. The potential throughput of the network could handle the load, but the algorithms to provide communication channels slow the network, resulting in a lower maximum throughput. A congested Ethernet network has an average throughput approximately one third the potential maximum throughputs. Congested networks have other problems, such as dropped network packets. If you are using TCP, the communication rate on a congested network is much slower as the protocol automatically resends the dropped packets. If you are using UDP, your application must resend multiple copies for each transfer. Dropping packets in this way is common for the Internet. For LANs, you need to coordinate closely with network administrators to alert them to the problem. For single machines connected by a service provider, suggesting improvements. The phone line to the service provider may be noisier than expected: if so, you also need to speak to the phone line provider. It is also worth checking with the service provider, who should have optimal configurations they can demonstrate.
Dropped packets and re-transmissions are a good indication of network congestion problems, and you should be on constant lookup for them. Dropped packets often occur when routers are overloaded and find it necessary to drop some of the packets being transmitted as the router's buffer overflow. This means that the overlying protocol will request the packets to be resent. The netstat utility lists re-transmission and other statistics that can identify these sorts of problems. Re-transmissions may indicate that the maximum packet size is too large.
DNS Lookup
Looking up network address is an often-overlooked cause of bad network performance. When your application tries to connect to a network address such as foo.bar.somthing.org (e.g. downloading a webpage from http://foo.bar.something.org), your application first translates foo.bar.somthing.org into a four-byte network IP address such as 10.33.6.45. This is the actual address that the network understands and uses for routing network packets. The is this translation works is that your system is configured with some seldom-used files that can specify this translation, and a more frequently used Domain Name System (DNS) server that can dynamically provide you with the address from the given string. DBS translation works as follows:
1. The machine running the application sends the text string of the hostname (e.g. foo.bar.something.org) to the DNS server.
2. The DNS server checks its cache to find an IP address corresponding to that hostname. If the server does not find an entry in the cache, it asks its own DNS server (usually further up the Internet domain-name hierarchy) until ultimately the name is resolved. (This may be by components of the name being resolved, e.g. first .org, then something.org, etc, each time asking another machine as the search request is successively resolved.) This resolved IP address is added to the DBS server's cache.
3. The IP address s returned to the original machine running the application.
4. The application uses the IP address to connect to the desired destination.
The address lookup does not need to be repeated once a connection is established, but any other connections (within the same session of the application or in other session s at the same time and later) need to repeat the lookup procedure to start another connection.
You can improve this situation by running a DNS server locally on the machine, or on a local server if the application uses a LAN. A DNS server can be run as a "caching-only" server that resets its cache each time the machine is rebooted. There would be little point in doing this if the machine used only one or two connections per hostname between successive reboots. For more frequent connections, a local DNS server can provide a noticeable speedup to connections. Nslookup is useful for investigating how a particular system does translations.

LR-Basics

What is LoadRunner?

Software applications are becoming advanced and complex, they are now capable of holding 100s of 1000s of users. With complexity and large volumes, arises problem of managing them and making them work at any given point of time.

Also, almost every organization is moving in the era of Web 2.0 (or 3.0). This intricate network comes along with lot of challenges to any company. With servers, routers ,cables, applications all interlinked to each other in a mesh like structure every single point becomes a candidate for performance bottlenecks. The best way to test and overcome the performance problems is to use testing tools which are capable of simulating the end user behavior.

The industry leader from HP, LoadRunner is our tool of study.

LoadRunner consists of:

  1. Virtual User Generator (VUGen): We can emulate the real world user behavior using VuGen that's why the name virtual user [Dictionary meaning: Existing or resulting in essence or effect though not in actual fact, form, or name]. This is the place where we record and write automated scripts.
  2. Controller: Here we run the scripts generated above. This controls
    the various load generators* and scenarios** associated with them.
  3. Analysis: This gives the detailed results and presents them beautifully using reports, charts and graphics.

This was just a brief overview. We will talk in details on the three parts of LR in the coming posts.

*Load generators: Machines used to generate load on the server.

**Scenarios: This describes aspects like which scripts will run, no of virtual users and association of load generators with scripts

Points to note with VuGen and Controller


 

  • When a script is opened in Controller, run-time settings  also gets copied from VUGen to controller.
  • Any changes done in the script and run-time settings are not reflected in the controller unless you refresh them.
  • Refresh in controller can be done by going to Design > {Highlighting scenario group} that are using script in question > Clicking Details button > Clicking the REFRESH button on the Group Information pop-up window. So next time when controller asks you to load new script iteration settings do the refresh.
  • While doing Save As:
    • Default directory in VUGen can be changed by going to vugen.ini file located under C:\Program Files\HP\LoadRunner\config and appending the required file path to LastScriptPath (as shown on the right).
    • Default directory in Controller can be changed by going to wlrun.ini file located under C:\Program Files\HP\LoadRunner\config and appending the required file path to M_ROOT

Note that THINK time is ignored in VUGen while played back as recorded in Controller.

LoadRunner — Correlation

If you simply record and playback a script in VuGen, you might encounter errors in your playback. Often, those errors are related to the session values which are sent by the server to the client to identify that particular session.

Why error? Well, session values will change with every playback of the script.

To overcome this we need a way which can capture these dynamically generated session values and pass it subsequently to any part of the script, wherever required. This method to identify and set the dynamic generated value is known as correlation.

If your new to loadtesting, don't confuse this term with parameter which you might have used in tools like QTP to pass varying values. Parameter is not a dynamic value captured from server response but it is something for which the user has predefined data values available.

LoadRunner use three functions to correlate scripts:

  1. Web_reg_save_param
  2. Web_create_html_param
  3. Web_create_html_param_ex

All about web_url and web_link in LoadRunner

Points to note with web_url and web_link:

  • web_url is not a context sensitive function while web_link is a context sensitive function. Context sensitive functions describe your actions in terms of GUI objects (such as windows, lists, and buttons). Check HTML vs URL recording mode.
  • If web_url statement occurs before a context sensitive statement like web_link, it should hit the server, otherwise your script will get error'ed out.
  • While recording, if you switch between the actions, the first statement recorded in a given action will never be a context sensitive statement.
  • The first argument of a web_link, web_url, web_image or in general web_* does not affect the script replay. For example: if your web_link statements were recorded as

    web_link("Hi There",


     

    "Text=Hello, ABC",


     

    LAST);


     

    Now, when you parameterize/correlate the first argument to

    web_link("{Welcome to LearnLoadRunner}",


     

    "Text=Hello, ABC",


     

    LAST);


     

    On executing the above script you won't find the actual text of the parameter {Welcome to Learn LoadRunner} instead you will find {Welcome to Learn LoadRunner} itself in the execution log. However to show the correlated/parameterized data you can use lr_eval_string to evaluate the parameter

HTML vs URL recording mode.

There are three types of recording mode/levels in LoadRunner. GUI-based, HTML based and URL based. For the uninitiated, recording levels tells you the amount of and what information is recorded during the recording process. As the title says, for this post we will keep focus on HTML based and URL based recording levels only and will touch upon GUI based mode, in a later post.

  1. HTML based mode, records script for every user action that is performed during recording (hmmm…sounds like QTP) while URL based mode records each and every browser request to the server and resources received from the server. Confused? ok, HTML based mode does recording as you perform clicks and doesn't give you inside information like what is happening behind the recording while URL based mode records each and every step and emulate Javascript code.
  2. From the point1) above you can guess, HTML mode would have less correlation to do while URL mode has much more complex correlation requirements.
  3. HTML mode is smaller and is more intuitive to read as the statements are inside the functions corresponding to the user action performed. In the case of URL based, all statements gets recorded into web_url()
  4. HTML mode is recommended for browser applications while URL mode is recommended for non-browser applications.
  5. Lastly, don't get the impression that I am advocating for HTML mode :). URL mode can be of real help when you want to have control over the resources that need to be or need not to be downloaded, since you have each and every statement in-front of you (point 1)

Difference between concurrent and simultaneous vuser


 

All the vusers in a particular scenario are called Concurrent vusers. They may or may not perform the same tasks. On the other hand simultaneous vusers is more to do with rendezvous points. When we set rendezvous points we instruct the system to wait till a certain no of vusers arrive so that they all can do a particular task simultaneously. These vusers performing the same task at the same time are called Simultaneous vusers.

For example in a Yahoo Mail application: Suppose a scenario consists of 100 vusers with 3 tasks – 1) Login, 2) Check no of unread mails 3) Logout. Vusers at 1) + 2) + 3) will be called as concurrent vusers as they are part of same scenario performing some task but if have set a rendezvous point so that say 25 vuser perform the 2) task at the same time these 25 vusers would be termed as simultaneous vusers.

What is memory leak, page fault and how they affect LoadRunner performance?


 

What is memory leak?

A memory leak is a particular type of unintentional memory consumption by a computer program where the program fails to release memory when no longer needed. This condition is normally the result of a bug in a program that prevents it from freeing up memory that it no longer needs.This term has the potential to be confusing, since memory is not physically lost from the computer. Rather, memory is allocated to a program, and that program subsequently loses the ability to access it due to program logic flaws.

What is a page fault?

An interrupt that occurs when a program requests data that is not currently in real memory. The interrupt triggers the operating system to fetch the data from a virtual memory and load it into RAM.

An invalid page fault or page fault error occurs when the operating system cannot find the data in virtual memory. This usually happens when the virtual memory area, or the table that maps virtual addresses to real addresses, becomes corrupt.

Now the most important question comes up, how do they affect LoadRunner functioning?

As you might guess, memory leak, if left unattended and not corrected, could prove to be fatal. Memory leaks can be found out by running tests for long duration (say about an hour) and continuously checking memory usage.

Issues caused by memory leaks are essentially based on two variable for a standalone windows application 1) Frequency of usage 2) size of memory leak . If either one or both are very high it could cause the computer to come to a point when no memory is available for other applications causing it to crash. If it is a network based application then you will also have to consider network traffic . If each network transaction causes a memory leak , then a high volume of network transactions could also prove dangerous

What is the difference between a process and a thread?


 

Process is defined as the virtual address space and the control information necessary for the execution of a program while Threads are a way for a program to split itself into two or more simultaneously running tasks. In general, a thread is contained inside a process and different threads in the same process share some resources while different processes do not.

Source

In terms of Loadrunner, when we run Vuser as a process, LoadRunner creates 1 process called mmdrv.exe per Vuser. So if we have 10 Vusers, we will have 10 mmdrv.exe processes on our machines.

while when we run Vuser as a thread, LoadRunner creates 1 thread per Vuser. So if we have 10 Vusers, then we will have 1 process with 10 threads running inside it if the limit is 10 threads per process.

Running Vuser as a thread is more memory efficient that running Vuser as a process for obvious reasons that less memory resources are utilized when we run them as thread. I read somewhere that running as a process has an advantage that system becomes more stable. Now how is that stability achieved


 

RAM, Memory Usage, CPU Usage, Paging in terms of LoadRunner


 

You are going to encounter these terms again and again on your journey to become a LoadRunner expert. We will clarify their meaning first, and shall see how are they related to LoadRunner.

Hard Disk vs RAM:

  1. Hard Disk is used for long-term storage of work while RAM is used to store your current work.
  2. Hard Disk holds the original copy of the program permanently while When you want to use a program, a temporary copy is put into RAM and that's the copy you use.
  3. When working on a file, the original file is left untouched in the Hard Drive until you do a "save;" the "save" copies the new version of the file that's in RAM onto the Hard Disk (and usually replaces the original file) while The file you are modifying, plus all the changes you make, are kept in RAM until you do a "save"

Virtual Memory and Paging:

Virtual Memory is an essential part of all Operating Systems. As we saw above, RAM stores info about all the programs currently running on your desktop. If you open a program when RAM is full, your OS will try to locate programs on RAM which are not in use currently. It will then transfer those programs to some areas of hard disk, that ways space will be created on RAM for your new programs to run. So effectively, though there was no space on RAM but your OS created a memory space with the help of your hard disk. This memory is called as Virtual Memory. The area of hard disk where RAM image is copied is known as page file and process as paging.

You might ask why can't we eliminate the use of hard disk or RAM, given the above scenario…here is a beautiful explanation of this, from the source cited below.

The read/write speed of a hard drive is much slower than RAM, and the technology of a hard drive is not geared toward accessing small pieces of data at a time. If your system has to rely too heavily on virtual memory, you will notice a significant performance drop. The key is to have enough RAM to handle everything you tend to work on simultaneously — then, the only time you "feel" the slowness of virtual memory is is when there's a slight pause when you're changing tasks. When that's the case, virtual memory is perfect.

When it is not the case, the operating system has to constantly swap information back and forth between RAM and the hard disk. This is called thrashing, and it can make your computer feel incredibly slow.

Full Explanation here

CPU Usage:

It represent the percentage of time that a process used the CPU since the last update. The steps to find out current CPU usage:

Go to "Windows Task Manager" [Ctrl-Shift-Esc] > Performance > Top left graph shows you CPU usage as shown below.



In terms of LoadRunner you should ensure that CPU usage should always be below (80-85)% on your loadgenerator machines for efficient functioning.

Memory usage:

It is the current working set of processes in kilobytes. In the above figure, Commit Charge (K) represents Memory usage. In terms of LoadRunner, you should ensure that Commit charge should always be less than Physical Memory (RAM) on your loadgenerator machines so that minimal paging is required.

web_reg_save_param function explained


 

As explained in one of my previous posts, web_reg_save_param is THE most important function when you are working with LoadRunner. We will start with the syntax and then touch upon some examples to get a clear idea.

int web_reg_save_param (const char *mpszParamName, <List of Attributes>,LAST);

Find below the available attributes [<List Of Attributes>]. Note that the attribute value strings (e.g. Search=all) are not case sensitive.

NotFound The handling method when a boundary is not found and an empty string is generated. "ERROR," the default, indicates that VuGen should issue an error when a boundary is not found. When set to "EMPTY," no error message is issued and script execution continues. Note that if Continue on Error is enabled for the script, then even when NOTFOUND is set to "ERROR," the script continues when the boundary is not found, but it writes an error message to the Extended log file.

LB The left boundary of the parameter or the dynamic data. This parameter must be a non-empty, null-terminated character string. Boundary parameters are case sensitive; to ignore the case, add "/IC" after the boundary. Specify "/BIN" after the boundary to specify binary data.

RB The right boundary of the parameter or the dynamic data. This parameter must be a non-empty, null-terminated character string. Boundary parameters are case sensitive; to ignore the case, add "/IC" after the boundary. Specify "/BIN" after the boundary to specify binary data.

RelFrameID The hierarchy level of the HTML page relative to the requested URL.

Search The scope of the search—where to search for the delimited data. The possible values are Headers (search only the headers), Body (search only Body data, not headers), or ALL (search Body and headers). The default value is ALL.

ORD This optional parameter indicates the ordinal or occurrence number of the match. The default ordinal is 1. If you specify "All," it saves the parameter values in an array.

SaveOffset The offset of a sub-string of the found value, to save to the parameter. The default is 0. The offset value must be non-negative.

Savelen The length of a sub-string of the found value, from the specified offset, to save to the parameter. The default is -1, indicating until the end of the string.

Convert The conversion method to apply to the data:

HTML_TO_URL: convert HTML-encoded data to a URL-encoded data format

HTML_TO_TEXT: convert HTML-encoded data to plain text format

Examples:

The examples below are taken from the LoadRunner tutorial to give clarity on topic. We will see more examples in the coming posts.

Sample Correlation for Web Vusers
Suppose the script contains a dynamic session ID:

web_url("FirstTimeVisitors","URL=/exec/obidos/subst/help/first-time-visitors.html/002-8481703-4784428>Buy books for a penny ", "TargetFrame=","RecContentType=text/html","SupportFrames=0″,LAST);

The dynamic id here is 002-8481703-4784428

You insert a web_reg_save_param statement before the above statement:

web_req_save_param ("user_access_number", "NOTFOUND=ERROR","LB=first-time-visitors.html/","RB=>Buy books for a penny", "ORD=6″,LAST);

ORD=6 saves the sixth occurrence of the value in user_access_number. I think everything else is self explanatory

After implementing correlated statements, the modified script looks like this, where user_access_number is the name of the parameter representing the dynamic data.

web_url("FirstTImeVisitors","URL=/exec/obidos/subst/help/first-time-""visitors.html/{user_access_number}Buy books for a penny ",
"TargetFrame=","RecContentType=text/html","SupportFrames=0″,LAST);

Note: Each correlation function retrieves dynamic data once, for the subsequent HTTP request. If another HTTP request at a later point in the script generates new dynamic data, you must insert another correlation function.

Also as I wrote in my last post don't confuse correlation with parameter which you might have used in tools like QTP to pass varying values. Parameter is not a dynamic value captured from server response but it is something for which the user has predefined data values available.

Tips to identify the dynamic string boundaries:

  • Always analyze the location of the dynamic data within the HTML code itself, and not in the recorded script.
  • Identify the string that is immediately to the left of the dynamic data. This string defines the left boundary of the dynamic data.
  • Identify the string that is immediately to the right of the dynamic data. This string defines the right boundary of the dynamic data.
  • web_reg_save_param looks for the characters between (but not including) the specified boundaries and saves the information beginning one byte after the left boundary and ending one byte before the right boundary. web_reg_save_param does not support embedded boundary characters.

For example, if the input buffer is {a{b{c} and "{" is specified as a left boundary, and "}" as a right boundary, the first instance is c and there are no further instances—it found the right and left boundaries but it does not allow embedded boundaries, so "c" is the only valid match. By default, the maximum length of any boundary string is 256 characters.
Include a web_set_max_html_param_len function in your script to increase the maximum permitted length. For example, the following function increases the maximum length to 1024 characters: web_set_max_html_param_len("1024");

Advantages of LoadRunner

Any performance testing tool (or for that matter any other automation tool) should be used on a case-to-case basis, depending upon the requirements, client budget etc. Since the topic of our blog is limited to LoadRunner, I would like to present some advantages and disadvantages of using LoadRunner.

Advantages:

  1. No need to install it on the server under test. It uses native monitors. For Ex: perfmon for windows or rstatd daemon for Unix
  2. Uses ANSI C as the default programming language1 and other languages like Java and VB.
  3. Excellent monitoring and analysis interface where you can see reports in easy to understand colored charts and graphics.
  4. Supports most of the protocols2.
  5. Makes correlation3 much easier. We will dig into correlation through a series of posts later.
  6. Nice GUI generated script through a one click recording, of course you would need to modify the script according to your needs.
  7. Excellent tutorials, exhaustive documentation and active tool support from HP.

Disadvantages:

The only disadvantage I can think is the prohibitive cost associated with the tool but that can also be compensated in the long run when you start getting a good ROI from the tool.

1Programming/Scripting language is used to represent the captured protocol data and manipulate the data for play-back.

2Protocol is simply a language that your client uses to communicate with the system.

3Correlation is a way to substitute values in dynamic data to enable successful playback.

Friday, June 19, 2009

Manual Testing

Differentiate between QA and QC?

QA: It is process oriented
It evolves in entire process of software development.
Preventing oriented.
QC:
It is product oriented.
Work to examine the quality of product.
Deduction oriented.

What is a bug?
A computer bug is an error, flaw, mistake, failure, or fault in a computer program that prevents it from working correctly or produces an incorrect result.

What is a test case?
Test case is set of input values, execution preconditions, expected results and execution
Post conditions, developed for a particular objective or test conditions, such as to exercise a particular program path or to verify compliance with a specific requirement.

What is the purpose of test plan in your project?
Test plan document is prepared by the test lead, it contains the contents like introduction, objectives, test strategy, scope, test items, program modules user procedures, features to be tested features not to tested approach, pass or fail criteria, testing process, test deliverables, testing, tasks, responsibilities,resources,schedule, environmental requirements, risks & contingencies, change management procedures, plan approvals, etc all these things help a test manager understand the testing he should do & what he should follow for testing that particular project.

When the relationships occur between tester and developer?
Developer is the one who sends the application to the tester by doing all the necessary code in the application and sends the marshal id to the tester. The tester is the one who gives all the input/output and checks whether he is getting required output or not. A developer is the one who works on inside interfacing where as the tester is the one who works on outside interfacing

When testing will starts in a project?
The testing is not getting started after the coding. After release the build the testers perform the smoke test. Smoke test is the first test which is done by the testing team. This is according to the testing team. But, before the releasing of a build the developers will perform the unit testing.

If a bug has high severity then usually that is treated as high priority, then why do priority given by test engineers/project managers and severity given by testers?
High severity bugs affects the end users ….testers tests an application with the users point of view, hence it is given as high severity. High priority is given to the bugs which affects the production. Project managers assign a high priority based on production point of view.

What is the difference between functional testing and regression testing?
Functional testing is a testing process where we test the functionality/behaviour of each functional component of the application…i.e. minimize button, transfer button, links etc.i.e we check what is each component doing in that application…
Regression testing is the testing the behaviour of the application of the unchanged areas when there is a change in the build.i.e we check whether the changed requirement has altered the behaviour of the unchanged areas. The impacted area may be the whole of the application or
Some part of the application…

Do u know about integration testing, how does u integrate different modules?
Integration testing means testing an application to verify the data flows between the modules. For example, when you are testing a bank application, in account balance it shows the
100$as the available balence.but in database it shows the 120$. Main thing is "integration done by the developers and integration testing done by the testers"

do u know about configuration management tool, what is the purpose of maintaining all the documents in configuration management tool?
It is focused primarily on maintaining the file changes in the history.
Documents are subjected to change for ex: consider the Test case document.
Initially you draft the Test cases document and place it in Version control tool (Visual Source Safe for ex).Then you send it for Peer Review .They will provide some comments and that document will be saved in VSS again.Similary the document undergoes changes and all the changes history will be maintained in Version control.
It helps in referring to the previous version of a document.
Also one person can work on a document (by checking out) at a time.
Also it keeps track that has done the changes, time and date.
Generally all the Test Plan, Test cases, Automation design docs are placed in VSS.
Proper access rights needs to be given so that the documents don't get deleted or modified.

How you test database and explain the procedure?
Database Testing is purely done based on the requirements. You may generalize a few features but they won't be complete. In general we look at
1. Data Correctness (Defaults)
2. Data Storage/Retrieval
3. Database Connectivity (across multiple platforms)
4. Database Indexing
5. Data Integrity
6. Data Security

Suppose if you press a link in yahoo shopping site in leads to some other company website? How to test if any problem in linking from one site to another site?
1) First I will check whether the mouse cursor is turning into hand icon or not?
2) I will check the link is highlighting when I place the cursor on the link or not?
3) The site is opening or not?
4) If the site is opening then I will check is it opening in another window or the same window that the link itself exist (to check user-friendly ness of the link)
5) How fast that website is opening?
6) Is the correct site is opening according to the link?
7) All the items in the site are opening or not?
All other sub links are opening or not?

What are the contents of FRS?
F ? Function Behaviours
R ? Requirements (Outputs) of the System that is defined.
S ? Specification (How, What, When, Where, and Way it behavior's.
FRS ? Function Requirement Specification.
This is a Document which contains the Functional behavior
of the system or a feature. This document is also known as EBS External Behaviour Specification - Document. Or EFS External Function Specification.

What is meant by Priority and severity?
Priority means "Importance of the defect w.r.t customer requirement"
Severity means "Seriousness of the defect w.r.t functionality"

What is basis for test case review?
The main basis for the test case review is
1. Testing techniques oriented review
2. Requirements oriented review
3. Defects oriented review.

What are the contents of SRS documents?
Software requirements specifications and Functional requirements specifications.

What is difference between the Web application testing and Client Server testing?
Testing the application in intranet (without browser) is an example for client -server. (The company firewalls for the server are not open to outside world. Outside people cannot access the application.)So there will be limited number of people using that application.
Testing an application in internet (using browser) is called web testing. The application which is accessible by numerous numbers around the world (World Wide Web.)
So testing web application, apart from the above said two testing there are many other testing to be done depending on the type of web application we are testing.
If it is a secured application (like banking site- we go for security testing etc.)
If it is an e-commerce testing application we go for Usability etc… Testing.

Explain your web application architecture?
Web application is tested in 3 phases
1. Web tier testing –> browser compatibility
2. Middle tier testing –> functionality, security
3. Data base tier testing –> database integrity, contents

suppose the product/application has to deliver to client at 5.00PM,At that time you or your team member caught a high severity defect at 3PM.(Remember defect is high severity)But the client is cannot wait for long time. You should deliver the product at 5.00Pm exactly. Then what is the procedure you follow?
The bug is high severity only so we send the application to the client and find out the severity is priority or not. If its priority then we ask him to wait.
Here we found defects/bugs in the last minute of the delivery or release date
Then we have two options
1. Explain the situation to client and ask some more time to fix the bug.
2. If the client is not ready to give some time then analyze the impact of defect/bug and try to find workarounds for the defect and mention these issues in the release notes as known issues or known limitations or known bugs. Here the workaround means remedy process to be followed to overcome the defect effect.
3. Normally this known issues or known limitations (defects) will be fixed in next version or next release of the software

Give me examples for high priority and low severity defects?
Suppose in one banking application there is one module ATM Facility. In that ATM facility when ever we are depositing/withdrawing money it is not showing any conformation message but actually at the back end it is happening properly with out any mistake means only missing
Of message. In this case as it is happening properly so there is nothing wrong with the application but as end user is not getting any conformation message so he/she will be
Confuse for this. So we can consider this issue as HIGH Priority but LOW Severity defects…

Explain about Bug life cycle?
1) Tester->
2) Open defect->
3) Send to developer
4) ->if accepted moves to step5 else sends the bug to tester again
5) Fixed by developer ->
6) Regression testing->
7) No problem inbuilt and sign off
if problem in built reopen the issue send to step3

How can you report the defect using excel sheet?
To report the defect using excel sheet
Mention : The Future that been effected.
Mention : Test Case ID (Which fail you can even mention any other which are dependency on this bug)
Mention : Actual Behavior
Mention : Expected Behavior as mentioned in Test Case or EFS or EBS or SRS document with section
Mention : Your Test Setup used during Testing
Mention : Steps to Re-Produce the bug
Mention : Additional Info
Mention : Attach a Screen Shot if it is a GUI bug
Mention : Which other features it is blocking because of this bug that you are unable to
Execute the test cases.
Mention : How much time you took to execute that test case or follow that specific TC
Which leaded to bug?

If you have executed 100 test cases ,every test case passed but apart from these test case you found some defect for which test case is not prepared,thwn how you can report the bug?
While reporting this bug into bug tracking tool you will generate the test case mean put the steps to reproduce the bug.

What is the difference between web based application and client server application?
The basic difference between web based application & client server application is that the web application are 3 tier & client based are 2 trier.In web based changes are made at one place & it is reflected on other layers also whereas client based separate changes need be installed on client machine also.

What is test plan? And can you tell the test plan contents?
Test plan is a high level document which explains the test strategy, time lines and available resources in detail. Typically a test plan contains:
-Objective
-Test strategy
-Resources
-Entry criteria
-Exit criteria
-Use cases/Test cases
-Tasks
-Features to be tested and not tested
-Risks/Assumptions.

How many test cases can you write per a day, an average figure?
Complex test cases 4-7 per day
Medium test cases 10-15 per day
Normal test cases 20-30 per day

Who will prepare FRS (functional requirement documents)? What is the important of FRS?
The Business Analyst will pre pare the FRS.
Based on this we are going to prepare test cases.
It contains
1. Overview of the project
2. Page elements of the Application (Filed Names)
3. Prototype of the of the application
4. Business rules and error states.
5. Data Flow diagrams
6. Use cases contains Actor and Actions and System Responses

How you can decide the number of test cases is enough for testing the given module?

The developed test cases are covered all the functionality of the application we can say test cases are enough. If u knows the functionality covered or not u can use RTM.

What is the difference between Retesting and Data Driven Testing?

Retesting: it is manual process in which application will be tested with entire new set of data.
Data Driven Testing(DDT)-It is a Automated testing process in which application is tested with multiple test dated is very easy procedure than retesting because the tester should sit and need to give different new inputs manually from front end and it is very tedious and boring
Procedure.

What is regression testing?

After the Bug fixed, testing the application whether the fixed bug is affecting remaining functionality of the application or not. Majorly in regression testing Bug fixed module and it's
Connected modules are checked for their integrity after bug fixation.

How does u test web application?

Web application testing
Web application should have the following features like
1. Attractive User Interface (logos, fonts, alignment)
2. High Usability options
3. Security features (if it has login feature)
4. Database (back end).
5. Performance (appearing speed of the application on client system)
6. Able to work on different Browsers (Browser compatibility), O.S compatibility (technically called as portability)
7. Broken link testing………etc
So we need to follow out the following test strategy.
1. Functionality Testing
2. Performance Testing (Load, volume, Stress, Scalability)
3. Usability Testing
4. User Interface Testing (colors, fonts, alignments…)
5. Security Testing
6. Browser compatibility Testing (different versions and different browser)
7. Broken link and Navigation Testing
8. Database (back end) Testing (data integrity)
9. Portability testing (Multi O.s Support)….etc

How does u perform regression testing, means what test cases u select for regression?

Regression testing will be conducted after any bug fixed or any functionality changed.
During defect fixing procedure some part of coding may be changed or functionality may be manipulated. In this case the old test cases will be updated or completely re written
According to new features of the application where bug fixed area. Here possible areas are old test cases will be executed as usual or some new test cases will be added to existing test cases or some test cases may be deleted.

What r the client side scripting languages and server side scripting languages?

Client side scripting languages are
Javascript, VbScript, PHP…etc
Server side Scripting languages are
Perl, JSP, ASP, PHP.etc
Client side scripting languages are useful to validate the inputs or user actions from user side or client side.
Server side Scripting languages are to validate the inputs at server side.
These scripting languages provide security for the application. And also provides dynamic nature to web or client server application
Client side scripting is good because it won't send the unwanted input's to server for validation. From front-end it self it validated the user inputs and restricts the user activities and guides him

If a very low defect (user interface) is detected by u and the developer not compromising with that defect,what will u do?
User interface defect is a high visibility defect and easy to reproduce.
Follow the below procedure
1. Reproduce the defect
2. Capture the defect screen shots
3. Document the proper inputs that you are used to get the defect in the defect report
3. Send the defect report with screen shots, i/ps and procedure for defect reproduction.
Before going to this you must check your computer hard ware configuration that is same as developer system configuration. And also check the system graphic drivers are properly
Installed or not. If the problem in graphic drivers the User interfaces error will come.
So first check your side if it is correct from your side then reports the defect by following the above method.

if u r only person in the office and client asked u for some changes and u didn't get what the client asked for what will u do?
One thing here is very important. Nobody will ask test engineer to change software that is
not your duty, even if it is related to testing and anybody is not there try to listen carefully if you are not understand ask him again and inform to the corresponding people immediately.
Here the client need speedy service, we (our company) should not get any blame from customer side.

How to get top two salaries from employee tables?
Select * from EMP e where 2>= (select count (*) from EMP e where sal>e.sal) order by desc sal.

How many Test-Cases can be written for the calculator having 0-9 buttons, Add, Equalto buttons? The test cases should be focused only on add-functionality but mot GUI.What is those test-cases?
Test-Cases for the calculator
so here we have 12 buttons totalize 0,1,2,3,4,5,6,7,8,9,ADD,Equalto -12 buttons
here u can press at least 4 buttons at a time minimum for example 0+1= for zero u should press 'zero' labeled button for plus u should press '+' labeled button for one u should press 'one' labeled button for equal to u should press 'equal to' labeled button 0+1=here + and = positions will not vary so first number position can be varied from 0 to 9 i.e. from permutation and combinations u can fill that space in 10 ways in the same way second number position can be varied from 0 to 9 i.e. from permutation and combinations u can fill that space in 10 ways
Total number of possibilities are =10×10=100
This is exhaustive testing methodology and this is not possible in all cases.
In mathematics we have one policy that the function satisfies the starting and ending values of a range then it can satisfy for entire range of values from starting to ending.
then we check the starting conditions i.e. one test case for '0+0=' (expected values you know that's '0′) then another test case for '9+9='(expected values you know that's '18′) only two test cases are enough to test the calculator functionality.

What is positive and negative testing? Explain with example?
Positive Testing - testing the system by giving the valid data.
Negative Testing - testing the system by giving the Invalid data.
For Exam application contains a textbox and as per the user's Requirements the textbox should accept only Strings. By providing only String as input data to the textbox & to check whether its working properly or not means it is Positive Testing. If giving the input other than String means it is negative Testing.

How will you prepare Test plan. What are the techniques involved in preparing the Test plan?
Test plan means planning for the release. This includes Project background
Test Objectives: Brief overview and description of the document
Test Scope: setting the boundaries
Features being tested (Functionalities)
Hardware requirements
Software requirements
Entrance Criteria (When to start testing):
Test environment established, Builder received from developer, Test case prepared and reviewed.
Exit criteria (when to stop testing):
All bug status cycle are closed, all functionalities are tested, and all high and medium bugs are resolved.
Project milestones: dead lines

Expalin about metrics Management?
Metrics: is nothing but a measurement analysis.Measurment analysis and Improvement is one of the process area in CMM I L2.

How do you review test case? Type of Review…
Types of reviewing test cases depend upon company standards, viz..,
Peer review, team lead review, project manager review.
Some times client may also review the test cases reg what is approach following for project

In which way tester get Build A, Build B, Build Z of an application, just explains the process?
After preparation of test cases project manager will release software release note in that Document there will be URL path of the website link from that we will receive
The build In case of web server projects, you will be provided with an URL or a 92.168. ***. *** (Web address) which will help you access the project using a browser from your system.

In case of Client server, the build is placed in the VSS (Configuration tool) which will help you get the .exe downloaded to your computer.

Apart from bug reporting what is your involvement in project life cycle?
As a Test engineer we design test cases, prepare test cases Execute Test cases, track the bugs, analyze the results report the bugs. Involved in regression testing, performance of system
Testing system integration testing at last preparation of Test summary Report

What are the contents of test report?
There are two documents, which should be prepared at particular phase.
1. Test Results document.
2. Test Report document.
Test Results doc will be prepared at the phase of each type of Testing like FULL FUNCTIONAL TEST PASS,REGRESSION TEST PASS,SANITY TEST PASS etc…Test case execution against
The application. Once you prepared this doc, we will send the doc to our TL and PM.By seeing the Test Results doc, TL will come to know the coverage part of the testcase.Here I am giving you the contents used in the Test Results doc?
1. Build No
2. Version Name
3. Client OS
4. Feature set
5. Main Feature
6. Defined Test cases on each feature.
7. QA engineer Name
8. Test e-cases executed. (Includes pass and fail)
9. Testcases on HOLD (Includes blocking test cases and deferred Test cases)
10. Covereage Report (Which includes the coverage ratings in %, like % of test cases covered, % of test cases failed)
Coming to Test report, generally we will prepare Test report, once we rolled out the product to our client. This document will be prepared by TL and delivered to the client.Mainly, this document describes the what we have done in the project, chievements we have reached, our
Learning's in throughout the project etc…The other name for Test report is Project Closure Report and we will summarize the all the activities, which have taken place in through out the project. Here I am giving your the contents covered in the Test Report.
1. Test Environment (Should be covered the OS, Application or webservers, Mahchine names, Database, etc…)
2.Test Methods(Types of Tests, we have done in the project like Functional Testing, Platform Testing, regression Testing,etc..
3. Major areas Covered.
4. Bug Tracking Details. (Includes inflow and outflow of the bus in our delivered project)
5. Work schedule (When we start the testing and we finished)
6. Defect Analysis
6.1 Defects logged in different types of tests like Functional Test, regressiion Test as per area wised.
6.2 State of the Defects at end of the Test cycle.
6.3 Root cause analysis for the bugs marked as NOT A BUG.
7. QA observations or learning's thought the life cycle.

Write high level test cases?
Write all the test cases under high level TC, which can be covered the main functionalities like
Creation, edition, deletion, etc….as per prescribed in the screen.
Write all the test cases under low level TC,which can be covered the screen, like input fields are displayed as per the requirements, buttons are enabled or disabled, and test case for low priority functionalities.
Example a screen contains two edit boxes login and password and a put buttons OK and Reset and check box for the label "Remember my password". Now let us write high level TC
And low level test cases.

HIGH LEVEL TC
1. Verify that User is able to login with valid login and valid password.
2. Verify that User is not able to login with invalid login and valid password.
Etc…
..
3. Verify that Reset button clears the filled screen.
4. Verify that a pop up message is displayed for blank login.
Etc…
Etc.

LOW LEVEL TC
1. Verify that after launching the URL of the application below fields are displays in the screen.
1. Login Name 2.Password.3.OK BUTTON 4.RESET button etc.
5. Check box, provided for the label "remember my pwd" is unchecked.
2. Verify that OK button should be disabled before selecting login and password fields.
3. Verify that OK button should we enabled after selecting login and password.
4. Verify that User is able to check the check box, providedfor the label "remember my password".
Etc.
In this way, we can categories all the test cases under HIGH LEVEL and LOW LEVEL.

What is test scenario?
Test scenario will be framed on basis of the requirement, which need to be checked. For that, we will frame set of test cases, in other terms, we can say all the conditions, which can be determined the testing coverage against business requirement.
Please see the below example, which is exactly matched to my explanation.
As we know all most all the application are having login screen, which contains login name and password. Here is the test scenario for login screen.
Scenario: USER'S LOGIN
Conditions to be checked to test the above scenario:
—————————————————-
1. Test login field and Password fields individually.
2. Try to login with valid login and valid password.
3. Try to login with invalid login and valid password. Etc

What is build duration?
it is a tine gap between old version build and new version build in new version build some new extra features are added

What is test deliverables?
Test deliverables are nothing but documents preparing after testing like test plan document test case template bug report template Test deliverables will be delivered to the client not only for the completed activities, but also for the activites, which we are implementing for the better productivity. (As per the company's standards).Here I am giving you some of the Test deliverables in my project.
1. QA Test Plan
2. Test case Docs
3. QA Test plan, if we are using Automation.
4. Automation scripts
5. QA Coverage Matrix and defect matrix.
6. Traceability Matrix
7. Test Results doc
8. QA Schedule doc (describes the deadlines)
9. Test Report or Project Closure Report. (Prepared once we rolled out the project to client)
10. Weekly status report (sent by PM to the client)
11. Release Notes.

What is your involvement in test plan?
Test lead is involved in preparing test plan test engineers are no way related in preparing test plan role TE is test case design, and execution and bug tracking and reporting them Generally TL is involved in preparation of the TestPlan.But it is not mandatory only TL will take main part in the preparation of the TP.Test engineer can suggest to TL, if he (or) she has good understanding on project and resources, if he or she has more exp with the project, if TL is wrongly given deadlines. If your suggestions are valid, TL will incorporate all of them to the TestPlan.But in most of the companies Test engineers are just audience.

Which test cases are not to be automated?
All the test cases which are related to a feature of the product, that keeps on changing (there are always some or the other enhancements in it). Frequent enhancements may change the UI, add/remove few controls. Hence such cases, if automated, would involve lot of a intendance

If a project is long term project, requirements are also changes then test plan will change or not? Why?
Yes. Definitely. If requirement changes, the design documents, specifications (for that particular module which implements the requirements) will also change. Hence the test plan would also need to be updated. This is because "Resource Allocation" is one section in the test
Plan. We would need to write new test cases, review, and execute it. Hence resource allocation would have to be done accordingly. As a result the Test plan would change

Explain VSS (Virtual Source Safe)?
After completion of all phages from development side developer store the code in development folder of VSS, Testing team copying code from that folder to testing folder, after completing above phages from testing, testers put the build in base line folder. It is version control Tool
Mainly useful to developer, to storing code and maintains version Copying a code from VSS By developer is called CHECK-IN Upload the code in to VSS is called CHECK-OUT.

What is the Difference between Stub Testing and Driver Testing?
Stub testing:
In top down approach, a core module is developed. To test that core module, small dummy modules r used. So stubs r small dummy modules that test the core module.
Driver testing:
In bottom up approach, small modules r developed. To test them a dummy core module called driver is developed.

What is a "Good Tester"?
Is one who tries to break the developers software and in a position to venture the bugs. So that at least 80% bugs free software can deliver.

What is cookie And Session testing?
A small text file of information that certain Web sites attach to a user's hard drive while the user is browsing the Web site. A Cookie can contain information such as user ID, user preferences, archive shopping cart information, etc. Cookies can contain Personally Identifiable
Information. Session is a connection between a server and client.

What is use case? Tell me the attribute of use case?
"Use Case is description of functionality certain features of an application interims of Actors, actions and responsibilities."
Use Case attributes are:
1. Information of Document, 2. Description, 3. Objective, 4. Actors, 5.Pre-conditions, 6.Data-element descriptions, 7.post conditions, 8.primary flow, 9. Alternative flow and Business rules/interaction implementations and etc….

What is the difference between stress, volume and load testing?
Load Testing gradually increase the load and check the performance of the application .v check at what point or maximum load application can sustain.
Stress testing: In this testing v check the performance of application under extreme condign which rarely occurs like
(1)Many concurrent user access the application for short time.
(2) Extra ordinary long transaction.
(3) Very short transaction reputed quickly.

When will do the beta test? When will do the alpha test?
Alpha and Beta tests comes under User acceptance test. We will conduct these two systems being released. We are giving opportunity to customer to check all punctualities covered or not.
Alpha testing conducting for software application by real customer at development site.
Beta testing conducting for software product by model customer at customer site.

How do you select test cases for Regression Testing (The point is when there is change code how do you come to know which part of code or modules it will affect)?
Consider an example of a form which has a user name, password and Login button.
There is a code change and a new button "Reset" is introduced. Regression testing (for that build) will include testing only the "Login" button and not the Reset button (testing Reset button will be a part of conation testing). Hence the Regression tester need not worry about the change in code, functionality. But he has to make sure that the existing functionality is working as desired. Testing of "Reset" button will be included as a part of Regression, for the next build

Can you explain with example of high severity and low priority, low severity and high priority, high severity and high priority, low severity and low priority?
1. High severity and high priority - Database connectivity cannot be established by multiple users.
2. Low severity and low priority - Small issues like, incorrect number of decimal digits in the output.
3. Low severity and high priority - Images not updated.
4. High severity and low priority - In a module of say 2 interfaces, the link between them is broken or is not functioning.
(1)High priority & High Severity: If u clicks on explorer icon or any other icon then system crash.
(2) Low priority & low severity: In login window, spell of ok button is "Ko".
(3)Low priority & high serverty: In login window, there is a restriction login name should be 8 characters if user enter 9 or than 9 in that case system get crash.
(4)High priority & low severity: Suppose logo of any brand company is not proper in their product. So it affects their business.

What will be the Test case for ATM Machine & Coffee Machine?
Test cases for ATM Machine
1. Successful inspection of ATM card
2. Un successful operation due to insert card in wrong angle
3. Un successful operation due to invalid account ex: other bank card or time expired card
4. Successful entry of PIN number
5. Un successful operation due to enter wrong PIN number 3times
6. Successful selection of language
7. Successful selection of account type
8. Un successful operation due to invalid account type
10. Successful selection of withdraw operation
11. Successful selection of amount to be withdraw
12. Successful withdraw operation
13. Unsuccessful withdraw operation due to wrong denominations
14. Unsuccessful withdraw operation due to amount is greater than day limit
15. Unsuccessful withdraw operation due to lack of money in ATM
16. Unsuccessful withdraw operation due to amount is greater than possible balance
17. Unsuccessful withdraw operation due to transactions is greater than day limit
18. Unsuccessful withdraw operation due to click cancel after insert card
19. Unsuccessful withdraw operation due to click cancel after insert card & pin number
20. Unsuccessful withdraw operation due to click cancel after insert card, pin number & language
21. Unsuccessful withdraw operation due to click cancel after insert card, pin number, language &account type
22. Unsuccessful withdraw operation due to click cancel after insert card , pin number , language ,account type & withdraw operation
23.unsuccessful withdraw operation due to click cancel after insert card , pin number , language ,account type ,withdraw operation &amount to be withdraw

Tell me about your daily activities as a test engineer?
Role:
1. Understanding the BRS and Use cases Document
2. Giving system demo to PM, System analyst, designer, Dev lead.
3. Preparing the Test Actions in xls sheet.
4. Updating the Test Actions based on review comments by System analyst/Business Analyst.
5. Preparing the Test cases and Datasets (System level and global level datasets) in word document
6. Updating the Test Cases based on review comments by System analyst.
7. Installing the application-Testing environment set up.
8. Performing Functional, GUI, System, Compatibility testing (If necessary), Regression testing based on Test cases
9. Preparing the defect report, Bug tracking list and sending daily status report to PM, leads.

In SDLC process what is the role of PM, TL, DEVELOPER, tester in each and every phase? Please explain me in detail?
In the SDLC we have these phases
1. Initial phase
2. Analysis phase
3. Designing phase
4. Coding phase
5. Testing
6. Delivery and maintenance

In the initial phase project manager can prepare a document for the requirements, team leader will prepare a team which is having test engineers, developer will provided by the project manager, tested will prepare test cases for that particular project
Analysis phase all the members have a meeting to finalize the technology to develop that project, the employee, time…
Designing phase the project manager like senior level management will give the directions and source code to the team members to develop the actual code that is guidelines will be given in this phase
Coding phase developer will develop the actual code using the source code and they release the application to the tested
Testing phase they deploy their test cases to that application and prepare a bug profile document if there is any defect/bug in that application and send it back to developer, developer may rectify and releases than application as next build and if the bug not understand it will send to the project lead in the delivery phase the so test eng can deploy the application in the client environment
Maintenance phase if the client get any problem with the application it may solved by the project lead with help of testers and developers

How do you Test Application with having any requirement and Document?
If it is an existing system or if a build is available then we explore the system while testing. This helps knowing the functional use of the system, and its usability.
By asking questions to end users and how they use it will be more beneficial. Also, you may work with BA to know more about the system.
Black box test is nothing but the same where you explore the system without having any prior knowledge to the system.

What is back end testing using SQL?
Executing SQL statements to check if the data submitted by a GUI program is updated in the database or not? Executing the statement the data base is connecting to that particular changes, updations or not it will test. Back end testing is the testing the integration between the application and the database. It is checking the changes made in the database are getting reflected in the application.
Example: A new column is added in the table. Here we test by giving values in the application and value has to be stored in the table.

What are the reasons why parameterization is necessary when load testing the Web server and the database server?
When you test your applications, you may want to check how the application performs the same operations with multiple sets of data. For example, suppose you want to check how
Your Web site responds to ten separate sets of data. You could record ten separate tests, each with its own set of data. Alternatively, you can create Data Table parameters so that your test runs ten times, each time using a different set of data.

Difference between strategic test plan & test plan?
Strategic test is an organizational level term which is applied for all the projects in the organization with small customizations
Test plan is project level term and which can be applied for that specific project only.
Test plan is a strategic document which describes how to perform testing in an efficient effective and uptimes way. Quality lead test lead can prepare this test plan
Strategic test plan is an already or new test plan which can bow used in the future for another project also with some changes in the same organisation.

Draw Backs of automated testing?
DRAW BACKS OF AUTMATION
Expensive, lack of expatriation, all the areas we cannot automate

When will u make update and modify the test object properties in the repository?
When ever the developer may change any one of the object properties definitely we have to change the same in the OR object repository. If new version net build released from the development department we the test engineers must to modify or update the same is compulsory, other wise than test will show the bug

What is the document needed to create a test case? How u tell it is test case?
System requirements specification, Use case document, Test Plan

In customer details form having fields like customer name, customer address. After completion of this module, client raise the change as insert the two radio buttons after customer address. How you can check as a tester?
1. First we need to verify whether the radio button is there are not?
2. Conform the radio buttons are present after the customer address or not.
3. Verify the no of radio button.
4. Verify only one radio button should be checked initially when we open the Customer details form (if it is mentioned in FS)
5. Verify the functionality of the radio buttons i.e. if we check one ratio button, second radio button should be unchecked.
6. Verify the spell check of radio button label name.
7. Verify the alignment of radio buttons in the form.

At the time of testing web based applications and client server applications, what you absorbed as a tester?
We generally check for the links, data retrieving and posting.
We perform load and stress testing especially for Web based and Client-Server applications.

What are the documents required to prepare test plan?
Introduction, scope, test team and their responsibilities, test environment S/W & H/W requirements, test data preparation, levels of testing, seviority & priority, schedule, risk, automation Plan, features to test, bug life cycle all these are documents of test plan.

What is testing policy and testing methodology? And what is the difference?
Testing policy means all types of testing or testing techniques (i.e. functional testing, sanity testing etc).Testing methodology means white box and black box testing.

What is comparison testing?
Comparison Testing means comparing your software with the better one or you're Competitor.
While comparison Testing we basically compare the Performance of the software. For ex If you have to do Comparison Testing of PDF converter(Desktop Based Application) then you will compare your software with your Competitor on the basis of:-
1. Speed of Conversion PDF file into Word.
2. Quality of converted file.

What is the general testing process?
Testing Process:
1. Test requirements analysis
2. Creation of Test Strategy (Which includes creation of Test Cases)
3. Creation of Test Plans (Which includes Test Cases and Test Procedures)
4. Execution of test cases
5. Analyze the test results
6. Report the defects if any

What participation a manual tester can do in documentation? Are there any tools available for only documentation?
Yes, Manual tester will do Sub Test plan documents, as of my knowledge no tool is used to prepare documentation

What is the difference between low and high level test cases? Give Examples?
High level Test cases are those which covers major functionality in the application (i.e. retrieve, update display, cancel (functionality related test cases), database test cases).
Low level test cases are those which are related to UI related testcases.

Is it mandatory to use USECASES or directly one can write test cases from requirements?
It's not mandatory to write Use Cases, if the requirements are clear you can go ahead with Test Cases. Use Cases are written to know the business flow of the module/application.

How does u develop test harness?
Test Environment Test Bed
Test Environment S/W and H/W
Test Bed: Test Documents like Test Plan Document, Test Case Document.
Test Environment means
• Test Bed installation and configuration
• Network connectivity's
• All the Software/ tools Installation and configuration
• Coordination with Vendors and others

Given requirement collection doc, tester can prepare which test plan?
Test lead can prepare a test plan which performs testing on an application in an efficient effective and in an optimized way. Test development will done by the testers using the test
Plan in the test plan they prepare the test strategy

Tester with develop meant knowledge will be more effective .justify?
If tester has experience in Development, it will be useful when testing for logical thinking where the error occurs, what is the cause? He can guess the functionality of component? He can easily understand the application environment? Those are plus points which people have
Development experience.
Precisely he can justify that either functionality is wrong or right and can analyze the defects

As far as the SDLC is concerned last test case,will it be written for "Maintenance Phase"?
As far as the SDLC is concerned last test case will be written for "Acceptance Testing"

What is test scenario and test case? Please explain in detail?
Test Scenario:
Test scenario is like laying out plans for testing the product, environmental condition, number of team members required, making test plans, making test cases and what all features are to be tested for the product. Test scenario is very much dependent on the product to be tested.
Test scenario is made before the actual testing starts.
Test Case:
Test case is a document which provides the steps to be executed which has been planned earlier. It also depends on the type of product to be tested. Number of test cases is
Not fixed for any product.

What is the difference between Project Based Testing and Product Based Testing?
Project based is nothing but client requirements. Product based is nothing but market requirements. Ex.stiching shirt is a project based and ready made shirt is product based.

What is testing process in related to Application testing process is the one which tells you how the application should be tested in order to minimize the bugs in the application?
One main thing no application can be released as bug free application which is impossible.

What is the difference b/n Testing Methodology and Testing methods?
Testing Methodology define process, set of rules and principle which are follow by group concerned with testing the application. Here I explain 7 step testing methodology:
1. Test Requirement Analysis
2. Test Plan
3. Test Design
4. Test execute
5. Defect track
6. Test Automation
7. Test Maintain
Testing methods or we can say that Testing Techniques:
White Box Testing (Unit Testing, Integration Testing)
Black Box Testing (System Testing, Functional Testing, Performance Testing>Load testing>stress testing>volume testing & Security Testing) UAT (done by user/client with actual/live data)

What are starting links to test while website testing?
Web based systems are those using the internet, intranet and extranets Web based testing only needs be done once for any applications using the web. Web based testing are as follows:
1. Functional correctness
2. Integration
3. Usability
4. Security
5. Performance
6. Verification of code

How GUI testing will be done in manual testing for a website?
For any testing there should be some set of standards to be followed. Particularly in GUI testing, look and feel should be good. We should follow the requirements specification documents for GUI testing.
There should be some screen shots (given by client) which we should follow as it is.
And for button sizes, font, font size ,colors used, placing of links, objects and the placing of the objects in the page should be followed some standards. If we take a button in the page that should be some standard size. If the size of that button is more or less the client feel bad about that. So we should have minimum common since while testing GUI testing. Some time there may be some mistakes in the screen shots provided by the client also, but that is our responsibility to raise those issues.

What things should be tested in regression testing?
While doing Regression Testing a tester must check that any new updating or Modification or Change in Functionality of a Particular Component or Module does not create any disorder and any negative affects on the functionality of the Application

What is the document required to prepare during testing?
Normally Test engineers are responsible for any release of a project. Even the release is for staging environment or change request release or production release
The minimum documents are
1. Test Plan
2. Test Cases
3. Test Case Report
4. Bug report.
5. Release notes (which contains known issues).
6. Installation document.

What is Test data? Where we are using this in testing process?
What is the importance of this data?

To execute test cases we should have test data. This test data should be for positive and negative testings.for win runner we can get this test data from keyboard, excel sheets or from data base

What is the difference between test case and test script?
Test case is a description what data to be tested and what data to be inserted what are the actions to be done to check actual result against expected result what are the actual inputs we will use? What are the expected results? Is called test script
Test Script: Is a short program written in a programming language used to test part of the functionality of the software system. A written set of steps that should be performed manually
Can also be called a test script; however this is more correctly called a test case.

What is the difference between bug, error and defect?
At the time of coding mistake error, when the mistake noticed by the tester defect, tester sends this defect to development team if the developer agrees then it is bug

What is the difference between quality assurance and system testing explains in detail with an example?
Quality Assurance: It is nothing but building an adequate confidence in the customer that the developed software is acceding to requirements. Entire SDLC comes under QA. It is process oriented.
System Testing: It is the process of executing entire system i.e. checking the s/w as well as parts of system.

How do you decide when you have 'tested enough'?
When the 90% of requirements are covered, Maximum defects are rectified except (some) low level defects are not covered, customer satisfy that project and time is less, then we are closing the testing.

What is the difference between Build Management and Release Management?
When will conduct build verification and end to end testing?

Build Management is managing the issue fixture tasks in the builds whereas Release management is managing the functionality to be incorporated in the Release.
Build Verification Test (BVT) is done when the build is first received by the testers. The basic functionality is checked with valid data. This is done to check whether the build is testable or not. This is done by testers.
End to End testing is also called system testing. Done by senior test engineers or Test lead.

What is boundary value analysis (BVA)? What is the use of it?
Boundary value analysis is a technique for test data selection. Test engineer chooses the values that lie along the data extreams.It includes max, minimum, just inside, just out side, typical values and error values.
Boundary Value Analysis is a technique used for writing the test cases. For example: If a particular field accepts the
Values from 1 to 1000, then we test that field by entering only 1, 1000, 0, 1001, 999, 2.
I.e. we check on the boundaries and then
Minimum-1, minimum +1 and maximum+1, maximum-1.

What is equivalence class partition(ECP)? What is the use of it?
Aquaplane nothing but select the valid and valid class's example as per client requirement the edit box access only
3-5 capital alphabets then we divided in esp. like valid values only A-Z invalid values are a-z and special characters like ^,8<%

If there is no sufficient time for testing & u have to complete the testing, then what will u do?
When I have less time to test the Product then I will take these following steps—
1) Sanity or smoke testing
2) Usability Testing
3) Formal Functionality and GUI Testing
4) Walk through with the Product

What is meaning by prototype in SDLC?
This is a cyclic version of the linear model. In this model, once the requirement analysis is done and the design for a prototype is made, the development process gets started. Once the prototype is created, it is given to the customer for evaluation. The customer tests the package and gives his/her feed back to the developer who refines the product according to the customer's exact expectation. After a finite number of iterations, the final software package is
Given to the customer. In this methodology, the software is devolved as a result of periodic shuttling of information between the customer and developer. This is the most popular development model in the contemporary IT industry. Most of the successful software products have been developed using this model - as it is very difficult (even for a whiz kid!)
To comprehend all the requirements of a customer in one shot. There are many variations of this model skewed with respect to the project management styles of the companies.
New versions of a software product evolve as a result of prototyping.

What is difference between desktop and web application?
The biggest d/f b/w Desktop and web application is- Desktop App (DA) is the machine independent, hence every change has only reflects at the machine level. Where as Web App (WA) is the Internet dependent program, hence any change in the program reflects at every where, where it becomes use. EX……
Suppose there are 5 machines in DA, 5 times installed individually at every machine and if there is any change made in DA then at every machine change has to be made. In WA where the program or Application at the Server or at the one common machine, then if changes made at only central or server or common machine all the changes get reflected at
Every client machine.

Difference between application testing and product testing?
Product testing means when any company does testing for their own (company's) product ex… Norton Antivirus is the Symantec's product; if Symantec test the Norton i.e. called
As the Product testing. Where as if any company take some projects from some other
Companies like ABC Company takes projects from IBM and test that project on some charges i.e. called as Application Testing.

What is a broken link in web testing and how test it?
When we clicked on Hyper link if it opens Page can't be displayed then that Hyper link is called as broken link