Software Testing basics


Testing Basics:


         In today´s fast moving world, it is a challenge for any company to continuously maintain and improve the quality and efficiency of software systems development. In many software projects, testing is neglected because of time or cost constraints. This leads to a lack of product quality, followed by customer dissatisfaction and ultimately to increased overall quality costs. Software testing is important for a quality delivery.
Software Testing:              

Software testing is an investigation conducted to 
provide stakeholders with information about the quality of the product or service under test.It is the process of validating and verifying that a software program or application or product.

Two major categories of Software Testing :
     a)Manual Testing
     b)Automation Testing

Manual Testing:


                      Manual Testing is a process carried out to find the defects. In this method the tester plays an important role as end user and verify all features of the application to ensure that the behavior of the application. The Manual Testing is very basic type of testing which helps to find the bugs in the application under test. It is preliminary testing, must be carried out prior to start automating the test cases and also needs to check the feasibility of automation testing. 

Automation Testing:
                               
                      Test automation is the use of special software (separate from the software being tested) to control the execution of tests and the comparison of actual outcomes with predicted outcomes.

In Software, Automation refers to the use of computers and other automated machinery for the execution of business-related tasks. Automated machinery may range from simple sensing devices to robots and other sophisticated equipment.




Types of automation:

·  Information technology (IT)

·  Computer-aided manufacturing (CAM)

·  Numerically controlled (NC) equipment

·  Robots

·  Flexible manufacturing systems (FMS)

·  Computer integrated manufacturing (CIM)


Advantages of Automation:  
1. Decreased Overhead Costs
2. Increased Productivity
3. Consistency, Reliability, and Accuracy
4. High Volume Production.
5. Increase in Safety 


Disadvantages of automated software testing 
                     Although automated testing has many advantages it also has its own disadvantages.
One big disadvantage of automated testing is that initially a high investment is needed to buy the tools and train the staff to use the tools. Also in the test preparation stages a high man power is needed. Another thing is that a lot of areas in testing are left uncovered. There are not enough tools out there yet to cover all the tests so some testing has to be done manually.
Also a lot of skill is needed to write the automation test scripts, so it is expensive to develop the tools to make them custom made.

What is regression Testing?
Regression testing is a type of software testing that seeks to uncover new software bugs, or regressions, in existing functional and non-functional areas of a system after changes such as enhancements, patches or configuration changes, have been made to them.
What is performance testing?
Performance testing is in general testing performed to determine how a system performs in terms of responsiveness and stability under a particular workload. It can also serve to investigate, measure, validate or verify other quality attributes of the system, such as scalability, reliability and resource usage.
§  It is a type of non-functional testing.
§  Performance testing is testing that is performed, to determine how fast some aspect of a system performs under a particular workload.
§  It can serve different purposes like it can demonstrate that the system meets performance criteria.
§  It can compare two systems to find which performs better. Or it can measure what part of the system or workload causes the system to perform badly.
Differences between Performance, Load and stress testing:
1) Performance Testing:
Performance testing is the testing, which is performed, to ascertain how the components of a system are performing, given a particular situation. Resource usage, scalability and reliability of the product are also validated under this testing. This testing is the subset of performance engineering, which is focused on addressing performance issues in the design and architecture of software product.
Performance Testing Goal:
The primary goal of performance testing includes establishing the benchmark behavior of the system.
Example:
For instance, you can test the application network performance on Connection Speed vs. Latency chart. Latency is the time difference between the data to reach from source to destination. Thus, a 70kb page would take not more than 15 seconds to load for a worst connection of 28.8kbps modem (latency=1000 milliseconds), while the page of same size would appear within 5 seconds, for the average connection of 256kbps DSL (latency=100 milliseconds). 1.5mbps T1 connection (latency=50 milliseconds) would have the performance benchmark set within 1 second to achieve this target
2) Load Testing:
Load testing is meant to test the system by constantly and steadily increasing the load on the system till the time it reaches the threshold limit. It is the simplest form of testing which employs the use of automation tools such as LoadRunner or any other good tools, which are available. Load testing is also famous by the names like volume testing and endurance testing.
The sole purpose of load testing is to assign the system the largest job it could possible handle to test the endurance and monitoring the results. An interesting fact is that sometimes the system is fed with empty task to determine the behaviour of system in zero-load situation.
Load Testing Goal:
The goals of load testing are to expose the defects in application related to buffer overflow, memory leaks and mismanagement of memory. Another target of load testing is to determine the upper limit of all the components of application like database, hardware and network etc
Example:
For example, to check the email functionality of an application, it could be flooded with 1000 users at a time. Now, 1000 users can fire the email transactions (read, send, delete, forward, reply) in many different ways. If we take one transaction per user per hour, then it would be 1000 transactions per hour. By simulating 10 transactions/user, we could load test the email server by occupying it with 10000 transactions/hour.
3) Stress testing
Under stress testing, various activities to overload the existing resources with excess jobs are carried out in an attempt to break the system down. Negative testing, which includes removal of the components from the system is also done as a part of stress testing. Also known as fatigue testing, this testing should capture the stability of the application by testing it beyond its bandwidth capacity.
The purpose behind stress testing is to ascertain the failure of system and to monitor how the system recovers back gracefully
Stress Testing Goal:
The goal of the stress testing is to analyze post-crash reports to define the behavior of application after failure
Example:
As an example, a word processor like Writer1.1.0 by OpenOffice.org is utilized in development of letters, presentations, spread sheets etc… Purpose of our stress testing is to load it with the excess of characters.

Smoke Testing:
Smoke testing (also confidence testing) is preliminary testing to reveal simple failures severe enough to reject a prospective software release. A subset of test cases that cover the most important functionality of a component or system is selected and run, to ascertain if crucial functions of a program correctly work. When used to determine if a computer program should be subjected to further, more fine-grained testing, a smoke test may be called an intake test.

Unit Testing:
Unit testing is a software testing method by which individual units of source code, sets of one or more computer program modules together with associated control data, usage procedures, and operating procedures, are tested to determine whether they are fit for use.


Integration Testing:
Integration testing (sometimes called integration and testing, abbreviated I&T) is the phase in software testing in which individual software modules are combined and tested as a group. It occurs after unit testing and before validation testing.
Approaches followed in Integration Testing:
1.Bottom Up Testing is an approach to integrated testing where the lowest level components are tested first, then used to facilitate the testing of higher level components. The process is repeated until the component at the top of the hierarchy is tested.
 
2.Top Down Testing is an approach to integrated testing where the top integrated modules are tested and the branch of the module is tested step by step until the end of the related module.
3.Sandwich Testing is an approach to combine top down testing with bottom up testing.


System Testing:
System testing of software or hardware is testing conducted on a complete, integrated system to evaluate the system's compliance with its specified requirements.  

What is Acceptance testing?

§  After the system test has corrected all or most defects, the system will be delivered to the user or customer for acceptance testing.
§  Acceptance testing is basically done by the user or customer although other stakeholders may be involved as well.
§  The goal of acceptance testing is to establish confidence in the system.
§  Acceptance testing is most often focused on a validation type testing.

What does User Acceptance Testing (UAT) mean?
User acceptance testing (UAT) is the last phase of the software testing process. During UAT, actual software users test the software to make sure it can handle required tasks in real-world scenarios, according to specifications.

UAT is one of the final and critical software project procedures that must occur before newly developed software is rolled out to the market.

UAT is also known as beta testing, application testing or end user testing.
 


Comments

Popular posts from this blog

Is QA a easy job?

Latest Version of TestComplete

Successful tester