Welcome To TestQSpider

It's Testing World.Lets Explore Your Life Here

Software Testing is essential for the betterment of the application and software. But apart from this many of us do not know that Software Testing is most time consuming and difficult task to perform.

People still believe that Software Testing is an easy task anybody can do it easily but in reality Software Testing is opposite of it because it is not an easy task to perform. Software Testing is as difficult as developing software because now days it requires more human efforts, as everyone wants quality so doing Software Testing are become difficult because it takes lot of time and money.

Software Testing - Hard and Difficult

Performing Software Testing is considered as Difficult as well as hard too because of the following reasons which are shown below.

1. Software Testing is hard and difficult because we need to test the software/application for both valid and invalid inputs and in Software Testing we also check the performance parameters as well as functionality too.

2. Another reason for considering Software Testing hard as well as difficult because during the time of testing we always need to give the inputs in such a way that each and every line of the program/code is tested efficiently.

3. Another reason for being hard and difficult is that tester needs to give inputs randomly and ensure that the software/application never fails.

4. Another reason is that we need to test the software by keeping the user perspective in mind means by keeping in mind how end user is using it and check whether the error messages displayed properly or not.

5. Another main and clear reason is that we need to test the application/software by simulating the actual/real environment. Considering example if a database application has to be accessed by 200 users simultaneously, then it is not enough if you test the software/application for 5 0r 10 users and declare that application/software is working fine by leaving the software without checking all 200 users simultaneously.

6. Software Testing is considered as hard and difficult because in several cases, it is not almost possible to test the software/application in real/actual environment. Considering example how do you test the software that is used in a satellite launch vehicle or a missile? You can do the complete testing only in a simulated environment.

Your opinion

This is all I know about why Software Testing is considered as hard and difficult task to perform and if you know some more reasons than you can discuss with me in comments to help others so that proper guidance will be given to every people those who are in the field of Software Testing.
Software testing plays a major role in software development, but it is expensive too. In short-term we can say that software testing is time consuming but important too.

Software development organization spends between 30-40% of total project/product effort on software testing. Software testing thus often consumes several resources, than any other phase in the software project.

Here are some factors that make software testing so expensive:

1. Software testing is carried out throughout the software development mechanism; naturally its cost is for all duration of the software project till validation tests.  

The idea behind this is that if bugs are detected earlier, it saves lot of trouble later. In this way software testing is exists from the beginning and increases expenses.

2. In case of critical and important software likes flight control, control on nuclear, space satellite control may always involves prototyping. Such testing based on prototyping or simulation is very expensive.

Software testing varies from several organizations to organization. Several factors in these organizations affect testing. 

The several factors are listed below:

1. Communication and relationships of people
2. Testing scope
3. Misunderstanding regarding life cycle of testing
4. When test plans are poorly developed
5. Big testing constraints

Conclusion:

At end we conclude that Software testing often consumes more resource, than any other phase of software development. Software Testing is a most important element about the Software Quality Assurance and represents final review, specification, design and coding.
Testingis necessary to increase the quality of the project. Testing is most time consuming, but a crucial activity of a software project.

It is vital to the success of new system. For making the project reliable and Error Free, the complete project and product must be tested in a systematic and organized way.

DEFINITION OF TESTING

Its a Risk reduction process and measurement of Quality.

WHY NEED OF TESTING

It is remarkably performed for one of the two reasons: -

1. Bug Detection

2. Improvement belonging to quality

Testingis needed not always for improving product and project quality but also for improving company quality. Without testing company can't grow at the upper level.

Testingis needed for almost all the organization which wants to grown up easily. Testing is needed for properly understand the fault errors in software during its development phases.

Testingis necessary in software development. It always ensures the users satisfaction and reliability of affecting software.

Below given the example which clears why testing is necessary: -

For Example if a company works on some long projects, and delivers those projects to the client without doing the proper testing, and after delivering the projects to client if client found some big bugs on the projects, than at that time it is the ashamed for company.

And obviously that client never comes back for having testing of their projects so it's harm to company and apart from loss company quality is also decreasing so testing is needed.

Conclusion: -
At last we conclude it's a fact that, when specific person starts checking commodity which is prepare by some other person, there are definitely 99% chances that checker and observer will discover some problem with the system. So it clears testing is needed.
Stubs are dummy modules that are always distinguish as "called programs", or you can say that is handle in integration testing (top down approach), it used when sub programs are under construction.

Stubs are considered as the dummy modules that always simulate the low level modules.

Drivers are also considered as the form of dummy modules which are always distinguished as "calling programs", that is handled in bottom up integration testing, it is only used when main programs are under construction.

Driversare considered as the dummy modules that always simulate the high level modules.

Example of Stubsand Drivers is given below:-

For Example we have 3 modules login, home, and user module. Login module is ready and need to test it, but we call functions from home and user (which is not ready). To test at a selective module we write a short dummy piece of a code which simulates home and user, which will return values for Login, this piece of dummy code is always called Stubs and it is used in a top down integration.  

Considering the same Example above: If we have Home and User modules get ready and Login module is not ready, and we need to test Home and User modules Which return values from Login module, So to extract the values from Login module We write a Short Piece of Dummy code for login which returns value for home and user, So these pieces of code is always called Drivers and it is used in Bottom Up Integration

Conclusion:-
So it is fine from the above example that Stubs act "called" functions in top down integration. Drivers are "calling" Functions in bottom up integration.
Non Functional Testing is that in which we test the application/software against client�s expectations and performance requirement. In short we can say this testing is always validating the performance of the application example include Load and Stress Testing.

After successfully completing the Functional Testing, the testing squad is always concentrating on Non Functional Testing. During this period of testing, the testing squad is concentrating more on customer expectations or you can say software characteristics.

Non Functional Testing covers both Load and Stress Testing, Performance Testing, Security and Recovery Testing, Scalability Testing, Localization and Installation Testing, Compliance and Compatibility Testing, Data Conversion Testing, Volume Testing, Migration and Operational Readiness Testing and so on.

Non Functional Testing Example

Example of Non Functional Testing is quite similar to "Functional Testing Example"  the only difference is that in Non Functional Testing we have to concentrate on client expectations or in short you can say we have to concentrate on Non Functional Parameters.

For example you are testing a website of K.U.K (Kurukshetra University Kurukshetra). Now as you know during the time of K.U.K Result there are many students who access the K.U.K Result website at the same amount of time. So the owner of K.U.K wants the proper Non Functional Testing on their website. In short you can say that owner of K.U.K wants the proper Non Functional Testing parameters like Endurance Testing, Compatibility Testing, Localization Testing, Compliance Testing, Usability Testing, Scalability Testing, Volume Testing, Load Testing, Performance Testing, Stress Testing, Security Testing, Recovery Testing etc.

Keep one thing in mind that owner of K.U.K give more emphasis on Load, Stress, Usability, Security, and Recovery Testing. As you know it is the Result website so Security and Recovery Testing is must, but apart from Security and Recovery Testing load and stress testing is also very essential because during the time of Result load definitely increases and chances are higher for getting the position of Stress also.

Conclusion

At end we conclude that Non Functional Testing is always concentrating on client/customer expectations and Functional Testing is always concentrating on client/customer requirements. You can also give your valuable suggestions and feedbacks for further improving the very interesting post.
Difference between Adhoc and Exploratory Testing

           Adhoc Testing
            Exploratory Testing
1. Adhoc Testing means learn the application than test it.
1. Exploratory Testing means test the application while learning.
2. In Exploratory Testing QA is always asked to test an application without any specific set of documents.
2. In Adhoc Testing QA is always asked to test an application with detailed set of documents.
3. In this Testing we always gather information regarding the software/application from complete possible sources and document and then test the application/software.
3. In this Testing we gather the information, and also document and test the application simultaneously.
4. In Adhoc Testing tester should have good knowledge about the application in order to test the software.
4. In Exploratory Testing tester should increases their knowledge by exploring the application/software.
5. In this testing testers have significant testing of the software before test it.
5. In this testing testers may be learning the software before testing it.
6. It is not considered as a type of any.
6. It is considered as a type of Adhoc Testing
7. It is not an approach to testing.
7. It is an approach, not a technique.


Before us proceeding towards the Difference between Functional and Non Functional Testing it is very important for us to first take a brief look at Functional and Non Functional Testing.

Functional and Non Functional Testing is what?

Functional testing is performed using the functional specifications provided by the client or you can say by using the design specifications like use cases provided by the design team.

In this, tester has to test the application to see that all requirements of the client which he has said in SRS and BRS have been incorporated or not.
Non Functional Testingis that which is always concerned with the client expectations like performance, load and stress issues and so on.

Distinction between Functional and Non Functional Testing

                  Functional Testing
               Non- Functional Testing
1. In functional Testing tester tests how well the system performs.
1. In Non-Functional Testing tester tests how well the system responds.
2. Functional Testing is based on client requirements.
2. Non- Functional Testing is based on client expectations.
3. Functional Testing means Testing the application against business requirements.
3. Non- Functional Testing means Testing the application against clients and performance requirements.
4. It is a part of System Testing.
4. It is also a part of System Testing
5. Functional Testing Validating the behavior of application.
5. Non- Functional Testing Validating the performance of application.
6. This Testing covers Unit Testing, Integration Testing, Smoke Testing, Sanity Testing, Regression Testing and so on.
6. This Testing covers Load/Performance Testing, Stress/Volume Testing, Security Testing, Installation Testing and so on.
7. It is always concentrating on customer requirements.
7. It is always concentrating on customer expectations.
8. Functional Testing means how is your system is doing.
8. Non- Functional Testing means how well your system is doing example usability, performance and stress testing.


Distinction between Sanity and Regression Testing

                Sanity Testing
             Regression Testing
1. Sanity testing is a surface level testing where QA engineer verifies that all the menus, functions and commands available/presented in the product are working fine.
1. Regression testing is not a surface level testing.
2. Sanity testing is considered as a subset of regression testing.
2. Regression testing is not considered as a subset of any.
3. This testing is performed/executed when testers have not much/enough time for doing testing.
3. This testing is performed/executed when tester�s have enough time for testing.
4. Sanity testing is usually conducted manually not by using any automation tools.
4. Regression testing may be conducted/consider manually or using automated tools.
5. Performing this type of testing will not enlarge the product/project cost and budget because it didn't require much manpower and time.
5. Performing this type of testing definitely will enlarge the product cost and budget because it requires more manpower and time.
6. Not complete test cases are executed/ performed in the product during sanity testing.
6. During this testing complete test cases are executed/ performed in the product.
7. During this testing tester test the application or product with finer details.
7. During this testing tester test the application or product with more details.
8. We do not use script for sanity testing.
8. We use script for regression testing.

Conclusion

At end we conclude that these are the quick and simple Differences between Sanity and Regression Testing in tabular form but the main difference is in its use. We use Regression Testing when we have enough time for Testing, and we use Sanity Testing when we do not have enough time for Testing.

But keep one thing in mind that purpose of both the Regression and Sanity Testing is same; the only difference is in its use. 
Software testing is the mechanism of knowing that what's the expected result and what the actual result a software project or product has given.

You simply say that software testing is nothing but validation and verification. Main goal of software testing is to ensure that software should always be defect free and easily maintained. 

IMPORTANT GOALS OF SOFTWARE TESTING

1. Always Identifying the bugs as early as possible.
2. Preventing the bugs in a project and product.
3. Check whether the customer requirements criterion is met or not.
4. And finally main goal of testing to measure the quality of the product and project.

SOME MAIN GOALS OF SOFTWARE TESTING


1. Short-term or immediate goals of software testing: - These goals are the immediate results after performing testing. These goals even may be set in the individual phases of SDLC. Some of them are completely discussed below:

a)      Bug discovery: The immediate goal about software testing is to find errors at any stage of software development. More the bugs discovered at early stage, better will be the success rate about software testing.

b)     Bug prevention: It is the consequent action of bug discovery. From the behavior and analysis of bugs discovered, everyone in the software development team gets to learn how to code so that bugs discovered should not be repeated in later stages or future projects.

Though errors always cannot be prevented to zero, they can be minimized. In this sense prevention of a bug is a superior goal of testing.

2. Long-term goals of software testing: - These goals affect the product quality in the deep run, when one cycle of the SDLC is over. Some of them are completely discussed below:

a)      Quality: Since software is also a product, so its quality is primary from the user's point of view. Thorough testing ensures superior quality. 

Quality depends on various factors, such as correctness, integrity, efficiency, and reliability. So to achieve quality you have to achieve all the above mentioned factors of Quality.

b)     Customer satisfaction: From the user's perspective, the prime goal of software testing is customer satisfaction only. If we want the client and customer to be satisfied with the software product, then testing should be complete and thorough.

A complete testing process achieves reliability, reliability enhances the quality, and quality in   turn, increases the customer satisfaction.

3. Post-implementation goals of software testing: - These goals are become essential after the product is released. Some of them are completely discussed below:

a)      Reduced maintenance cost: The maintenance cost about any software product is not its physical cost, as effective software does not wear out. The only maintenance cost in a software product is its failure due to errors.

Post- release errors are always costlier to fix, as they are difficult to detect. Thus, if testing has been done rigorously and effectively, then the chances about failure are minimized and as a result of this maintenance cost is reduced.

b)     Improved software testing process: A testing process for one project may not be blooming successful and there may be area for improvement. Therefore, the bug history and post-implementation results can be analyzed to find out snags in the present testing process, which can be determine in future projects.

Thus, the long-term post-implementation goal is to improve the testing process for future   projects.

Conclusion
At end in one line we conclude that main goal of software testing is to show that application is working as per as the requirements defined by client.
System testing is used to verify the working of the whole system all together. System testing involves both functional and non functional testing.

The formation about testing an integrated system to check that it meets or follows requirements that are specified is known as system testing.

Basic Purpose of System Testing is to:

1. Ensure that a system or application meets its specification and any non-functional requirements (such as stability and throughput) also meets the requirements with its users.

2. Comprise a different tests series to fully exercise the computer-based system.

3. Confirm an application's or system accuracy and completeness in performing the designed functions.

Conclusion:

System testing means testing of the entire software. The main purpose of system testing is to detect whether the software meets its requirements or not.
Testingis the most time consuming, but a needful activity of a software project. It is vital to the success of new system.

The main Purpose of testing is to:

1. Measure the quality of the software
2. Find out the faults in the application and software
3. Reduce the number of bugs in the program.
4. Check all the requirements and specifications given by client and customers are met or not.
5. Produce a product which is full of quality oriented.
6. Comfort the need of client and customers.
7. Provide a defect and error free software.
8. Check whether the application is working as per the functional requirement specified or not.
9. Carry the difference between the expected and actual results.

Important purpose of testing is to increase the project and product quality, and definitely to increase the organization quality side by side also.

Conclusion:
At end we conclude that during software testing, the test engineer needs to discover as several bugs as possible before reaching those defects to client, which will definitely save lots of time and money.
1. Non execution based testing means the module is always reviewed by a team. The non execution based testing relies on fault detection strategy.

The fault-detecting power of these non-execution based testing techniques leads to rapid, thorough, and early fault detection.

Non-execution based testing is also known by the name static testing or you can say by static program analysis.

2. Execution based testing: - On this execution based testing the modules are run against test cases. Following are the two ways of systematically constructing test data to test a module.


Types of Execution Testing

There are two types of execution based testing:

1. Black-box testing: It is the sort of testing in which the code itself is ignored; the exclusive information handle in designing test cases are the specification document.

2. White-box testing: It is the sort of testing in which the code itself is tested, without regard of the specifications.

Conclusion:
At end we conclude that Non-execution based testing is also called as static testing and execution based testing is known as dynamic testing.