Subscribe by Email


Tuesday, December 6, 2011

What are different characteristics of destructive testing?

Nothing checks the robustness of a software system or application better than destructive testing.
- Destructive testing is basically to determine the robustness of a software system or application.
- In order to determine the robustness of a software system or application, it is subjected to very harsh tests and attempts are made to make the program crash or hang.
- The aim of the destructive testing is to cause the failure of the program.
- The destructive testing has a typical process procedure. The process has the following aspects:

Waterfall development model or CMMI traditional model

- It is always been a common practice of performing software testing on software system by an independent group of software testers after the functionalities of the software system have been fully developed. D
- Destructive testing is carried out before it is delivered to the client or the customer.
- In this kind of practice, the testing stage is also used as a project buffer in order to compensate for project delays.
- But, this results in compromising with the time being consumed for testing.
- In the same model, there is another testing in which the software testing is started simultaneously with the start of the project and it is continued as a regular process until the project is finished.

Extreme development model or Agile model

- The extreme development model and the agile software development model follow the test driven software development model.
- Following this procedure, unit tests are carried out first by the software developers or engineers.
- These unit tests fail initially and this is expected also.
- As the code is written and subjected to these tests, more and more units of the software system pass those unit tests successfully.
- The test cases being used in the testing are updated regularly for the new faults and errors discovered.
- The tests cases thus updated are also made more efficient with the addition of the regression tests developed during the whole process.
- Unit tests are carried out simultaneously with the development and progress of the source code.
- They eventually become an integral part of the build process.
- This model aims at achieving continuous deployment i.e., to say that the software updates can be easily released for the public.

Although there exist some variations between the different models of testing, the testing cycle is typical and same for every kind of model. The following steps are involved in the testing cycle:

- Requirement analysis
- Test planning
- Test development
- Test execution
- Test reporting
- Test result analysis
- Defect retesting
- Regression testing
- Test closure


Monday, December 5, 2011

What are different characteristics of stability testing?

Stability testing in the context of software testing and engineering as it itself
indicates, refers to the many attempts to determine if an application will crash.

- Stability testing seeks to find a fault, an error, a bug or a reason that can render the software system or the application as non working or which can make the application lame.
- The main objective of the stability testing is to determine if there are any grounds on the basis of which the software system or application should be kept void of certification and it also aims at finding some positive point on the basis of which the software system or the application can be granted the certification.

- For a software system or application to be certified, it should be in functional state and basically stable.
- This can only be done by applying specific and suitable criteria and tests for testing functionality and stability. This is nothing but the stability testing.

There are several criteria available for stability testing. Few have been discussed below in detail:

1. Pass or fail criteria
- Each primary function tested and then the results are recorded.
- Each and every individual function is operated or executed in a way that is apparently consistent with its objective or the purpose regardless of the degree of correctness of its result or output.
- The observations are recorded for analysis.
- It is certain that out of so many functions, at least one or two primary functions will prove incapable of operating in a way that it apparently consistent to their aim or purpose.

2. Functional ability of a software system or the application
- There is for sure some impairment in any software system.
- But that does not necessarily mean that the software system is not fit for normal use.
- Any software product or application is said to work abnormally in a way that it seriously impairs it for the normal usage.

3.Disruption criteria
- The software system or the application is observed to disrupt the normal functioning of the operating system.

4.Criteria of in-operability
- No primary function of the software system or application is observed to get obstructed and become inoperable and non functional during the course of the testing.
- There is at least one primary function of the software system or application is observed to get obstructed and become inoperable and non functional during the course of the testing.

5. The software system or the application is observed to crash, fail, loose data and hang.

Some Important Points:
- Stability can be defined as the ability of a software system or application to continue functioning in the case of over time and over its full range of functionalities without crashing, failing or hanging and loss of data.

- For a tester to know whether the software system is seriously unfit for normal and regular use, he /she is required to have a knowledge of how that software system or application works in a normal environment i.e., normal user and normal usage.

- In order to carry out the stability test, the tester requires knowing the types of data values which software system or application can effectively and efficiently process.

- To test for the instability of a software system, the tester needs to use his knowledge in order to give some challenging inputs to the system to fail the system.


Sunday, December 4, 2011

What are different characteristics of beta testing?

Beta testing is carried out after the successful completion of the alpha testing. As alpha testing can be regarded as the internal form of user acceptance testing, similarly beta testing can be regarded as the external form of the user acceptance testing.

- A few versions of the finished software application are released. These testing versions are called the beta versions of the software system.
- These beta versions of the software system are released to a certain limited audience.
- The audience consists of the people who are not a part of the programming team or the software development team.

- This is done so because the more number of people, there will be more exploitation of the software. This is done to ensure that the number of bugs is minimum.
- Sometimes, the software manufacturer company may decide to release the beta versions of the software to a huge open public so as to get more feedback on the quality of the software application.
- Alpha testing is the internal pilot test and beta testing is called the external pilot test.

- Beta testing is carried out on only on the software that has successfully passed the first level unit testing, integration testing, system testing, internal pilot test and removal of the faults or the bugs.
- Beta testing is carried out because the finished software product may still have some minor errors and bugs. In order to find them, user participation is very much needed.
- The beta versions are released to some selected customers only to simulate a normal execution environment for the software application to make it run normally and to spot the problems in such an environment.

- Beta testing phase starts when the software development is complete.
- Beta testing can be thought of as a way of incorporating usability testing.
- The process of releasing the beta versions to the selected customers and other suitable audience is known as beta release.

- Usually after the development of the software system, this is the first time for which the software becomes available to the public.
- The audience selected for carrying out beta testing on the beta version of the software system is called beta testers.
- Beta testers are generally the prospective customers of that particular software manufacturing company who are willing to test the software system free of charge. As a reward for this, they are given the completed and finished software free of cost or sometimes at a reduced price.

- The beta testing phase is known by many names such as prototype, preview, early access or technical preview (TP).
- One is normal beta testing, there’s one more kind of called perpetual beta testing.
- In perpetual beta testing, new features and functionalities are continually added to the software system and therefore, not declaring the beta version as the final release of the company.

- In the context of software development, beta testing is considered as the second phase of the software testing stage.
- Beta testing is nothing but the pre release testing. Beta versions provide a preview of the final release of the firm.
- Alpha testing and beta testing collectively form the acceptance testing. So we can say that the beta testing is the second phase of the acceptance testing.

- Beta testing is conducted in the customer environment by multiple customers.
- Beta testing also ensures that the behavior of the software system is same in the development environment and in the customer environment.
- Beta testing is time consuming and may take weeks and months. The whole application is installed in the customer environment and the development of the software system has been 100 percent completed.


Saturday, December 3, 2011

What are different characteristics of alpha testing?

For alpha testing, it won’t be wrong if we say that it is another name for acceptance testing. Alpha testing is very much similar to the acceptance testing. Alpha testing is performed in the front of the customer or the client for their satisfaction and acceptance.

The client or the customer needs to verify or check whether the software artifact has been developed according to their:
- Service level agreement or SLA as it is abbreviated.
- Requirements
- Specifications
- Defect rate efficiency or DRE as it is known in short form.

If during the alpha testing the client or the manufacturer missed something, and discovers it later, then the software system has to again undergo a second alpha testing before giving the software product another green signal. But, client or customer revision is required mostly in beta testing.

Alpha testing can be formally defined as an actual operation or simulation testing before the launch of the software system and it does not involves software developers.

It is the testing of software on the site of the software developer by the customer or the client after the completion and finishing of the software system or the application.

- Alpha testing can also be called a kind of user acceptance testing or UAT a sit is known in short form.
- Alpha testing is carried out at the site of the software development. It is done by the clients or the customers. When the project is the development phase, it is said to be under alpha testing.
- Alpha testing allows the software tester to make some minor changes or modifications during the testing or at the end of it.
- It is carried out in the front of the developers, so that they can now what is the error or the bug and what it is and how it can be fixed efficiently.

- Alpha testing can be thought of as a stage of software prototype at which it may be discovered that the software system does not have all the required functionalities and specifications. But, one thing is definitely sure that the software system will have all the core functionalities and operational abilities and it will efficiently accept the input data values and generate the proper output as expected.
- Alpha testing is carried out on any system other than the system on which the software system was developed in the office of the developer.
- Client or the customer carries out the alpha testing under the leadership of the software developer.
- These days the alpha testing is being done by both the end users and the software developers.
- Alpha testing is the complete testing as it contains most of the functionality and specifications.
- Sometimes a group of clients or users are selected to perform alpha testing for the software system.
- Mostly the alpha testing is performed in-house or sometimes is performed by an external testing firm which in close terms or cooperation with the concerned software development corporation or the company.
- Sometimes it may also happen that the software developers may test the software system in front of the end users present within the development environment.
- This kind of testing is popularly known as off site testing. The end user side or the testing side is also called the development end.

In alpha testing it is necessary to determine whether the the software system is delivering the service as it was expected by the client or the customer. The environment in which the alpha testing is performed is called the client environment.


Friday, December 2, 2011

What are different characteristics of regression testing?

The word regression means to relapse to an under develop or a less perfect state. So, we can deduce from this that the regression testing is a kind of testing that basically discovers and un-hide the hidden and new errors and flaws, after the modifications have been made in the functions, operations, patches etc. of the software system.

- Regression testing is also carried out after the software system has been configured after checking away the errors.
- Regression testing may seem like some kind of exploitation of the software system. But, it is aimed at a good objective of ensuring that any new modification or configuration did not cause some other new bugs and errors.

- It is very difficult for the software developer to figure out how a particular change that he is going to introduce will affect all the other parts of the software system. Therefore, the regression testing becomes quite necessary to maintain the quality and standard of the program.

- Sometimes, fixing an error causes some other error in some part of the software system and it will remain unattended and uncorrected until and unless regression testing is carried out.

- Regression testing can only trace and locate such hidden errors and bugs.

There are several methods for conducting regression testing.One of those methods includes re-running the tests again and again for a certain number of times and observe if the behavior, response and output of the software system has changed or not.

Regression testing is not as laborious as the other testing methodologies are.

- The hard work for regression testing can be reduced efficiently to minimum level by selecting an appropriate combination of minimum number of specified test cases for testing the software system.
- The tests should be selected as such as to give maximum coverage to the modification or the change that has to be tested.
- It has been observed that the software program being fixed leads to the re- emergence of the errors and bugs and sometimes new errors are also created.
- It happens so because the usage of the software system over the time leads to the loss of an error or a bug fix due to the poor software handling practices.

We can conclude that any fix is a bit fragile in the sense that it fixes a bug or an error temporarily but arises again after repeated usage of the program. Usually a bug fix in one part of the program causes more bugs in the other parts of the program. So more often, the software system is needs to be redesigned.

The testers require good coding skills and practices.
- Regression testing is followed through manual testing procedures and other programming methodologies.
- Regression testing is usually done by automated tools. Such an environment allows the regression testing to automatically run the test cases and report any errors and bugs.
- Extreme software programming considers regression testing as one of its most crucial integral part.
- During each stage of the cycle for software development, the design documentation is replaced by the automated testing of the whole software system. - Regression testing tests the scale of correctness of a software system and maintains its quality and keeps the output standard.
- A software development should always and compulsorily contain regression testing stage.


Thursday, December 1, 2011

What are different characteristics of acceptance testing?

In software engineering and development, acceptance testing is defined as the testing which is carried out to check if all the kinds of requirements specified by the customer in the contract have been fulfilled or not.

Acceptance is a composition of 3 kinds of tests namely:
- Physical tests
- Chemical tests
- Performance tests

These are the 3 mostly used tests. Other than these, acceptance testing some times may include black box testing to be performed on the software system before the delivery of the software product.

Such kind of black box testing carried out is known by many names such as functional testing, QA testing, final testing, confidence testing, validation testing, factory acceptance testing etc.

It is important to distinguish between the acceptance testing done by the client, user or the customer and acceptance testing done by the system provider prior the delivery of the software artifact i.e., it should be done before the ownership is transferred from the software developer company to the client.

Here the acceptance testing carried out by the customer is called user acceptance testing or UAT in short form. There are other names also for this kind of testing like end user testing, field acceptance testing or site acceptance testing.

The smoke test is the first step of the acceptance testing. It is carried out just before the main and most important step of the acceptance testing.

Acceptance testing generally involves execution of combination of test cases on the completed and finished software system or the application where each and every individual test case implements a particular condition for the operation of the program based on the environment of the user and on the features of the program.

Each test case results in either a pass condition or a fail condition. This output is of the Boolean type. Its very important that the testing environment of the software system should resemble as much closely as possible the environment as anticipated by the user or the client.

It should include the extreme features of user’s anticipated environment without fail. It’s not possible for any testing environment to exactly resemble the user’s anticipated environment. Therefore there is no degree of success or failure defined here.

The test cases are accompanied by the data values which have to be entered as input and a brief description of the functional activity which has to be performed. It also contains a brief description of the expected outcomes and results.

- Acceptance test cases and conditions are created by the business clients or the customers.
- The agreement or the contract is written in some business domain language.
- The acceptance test is carried out against the given input data with the test case and sometimes an acceptance test script is used to give directions for the testing.
- The results thus obtained are then compared with the expected results.
- If both the results show up a proper match, then the test case is said to be successful. If the two results don’t match, then the software system is either accepted on the former conditions or it is rejected.
- Acceptance testing is aimed at providing the confidence to the client that the produced software artifact meets all the standards specified in the contract.
- The acceptance testing is also known as the final gateway.
- Acceptance testing works on the principal that acceptance testing once completed successfully i.e., all the conditions have been met successfully, the contractors and the software developers will declare the software system as satisfying, and the client pays off the manufacturer.

Therefore UAT can be defined as a process to confirm that a software system satisfies all the requirements of the contract.


Wednesday, November 30, 2011

What are different characteristics of non-functional testing?

Non functional testing can be defined as the testing of the software system or the application for its all non functional requirements. It happens many times that the names of the non functional requirements get overlapped during the non functional testing.

Therefore, the name so the non functional requirements are used interchangeably many times. Non functional testing includes various testing aspects. Few have been given below:
- Compatibility testing
- Baseline testing
- Compliance testing
- Endurance testing
- Documentation testing
- Internationalization testing
- Localization testing
- Load testing
- Recovery testing
- Performance testing
- Security testing
- Resilience testing
- Scalability testing
- Usability testing
- Volume testing
- Stress testing

In non functional testing, typically the software system or the application is tested against the specifications and conditions listed by the client or the customer.
Non functional testing is entirely based upon the test cases and specifications and the requirements stated by the customer or the client.

Apart from the above listed non functional requirements aspects there are several other aspects covered by the non functional testing. They have been listed below:
- Ergonomics testing
- Migration testing
- Data conversion testing
- Penetration testing
- Installation testing
- Operational testing
- Readiness testing
- Application security testing
- Network security testing
- System security testing

Non functional testing is carried out only after the functional testing has been successfully completed on the software system. Earlier, non functional testing was not considered important. But, eventually software engineers started realizing its importance and they began to concentrate on the extra external feature of the whole software and the hardware system like reliability, interface testing and configuration testing. So, the non functional testing came to the scene and has got a great importance in the field of software development.

Comparison between functional and non-functional testing
- Functional testing gives coverage and concentrates on the relevant functionality or part of the software system or the application whereas non functional testing focuses primarily on the irrelevant components or functionality of the whole software system. The best example is given by graphical user interface or GUI which is also known as look and feel testing.

Generally non functional requirements include performance, volume, stress, load, and security, recovery etc and so on.

- Manual testing as an aspect of non functional testing relates to the testing of functionality which are simply not mentioned in the functional requirements documentation. This is how manual testing and non functional testing is related to each other.

- Functional testing relates to the business documents, requirements documents, test plans and exact mapping of the variables. Non functional testing is in great contrast with the functionality testing.

- Functional testing deals with the stability of the software system or the application. For example, it checks how the software system or the application responds to the irrelevant data input for some function. Non functional testing is a kind of ad hoc testing. But it also checks the stability.

Non functional testing tests the requirements of a software system that do not relate to the functionalities of the software system or application. These non functional requirements include fail over and recovery, social-ability, performance, stress, security and so on.

Non functional testing is to test the features and specifications and the stability of the software system which don’t correspond directly to the business related functionalities i.e., functional requirements, but are equally necessary.
In non functional testing you can look and feel the objects. For example, the installation testing.


Facebook activity