There are several benefits of finding faults in a software system, program or application early during the development phase. Two famous researchers from the famous software engineering institute or SEI as it is called in short form, carried out a research to find benefits of detecting or finding faults early while the software project is in development phase.
There are numerous benefits of finding faults early in some software system or application. Below listed are some of the observations of the research:
- Around 70 percent of the total errors and bugs creep in to the software system during the early stages of the software development cycle. Out of these 70 percent faults, only 3.5 percent faults are found.
- Around 80 percent of the errors and faults are discovered in the later stages of the software development cycle.
- The cost of fixing faults early was recorded around the rate of 25x.
- The cost of fixing faults later in the development stages was recorded to be around 16x or sometimes even higher.
According to the finding of the results of the research, one can save himself/ herself over a large percentage on rework and software repair works by finding and fixing the records early during the initial stages of the software development cycle. Since the quality of the software is elusive, it is difficult to define it and also impossible to measure it.
The quality of a software system is affected by some essential factors which cannot be measured. Some such kinds of factors are:
- Reliability
- Efficiency
- Portability
- Usability
- Testability
- Modifiability
- Understandability
Also it won’t be enough to define the quality of software based on the above factors only. "The faults may occur in the software system itself or in the surrounding testing environment which includes the test cases and documentation. Some times the reported anomalies can also be faults."
An anomaly is scientifically defined as a condition which is deviated from the expectations regarding requirements, design, documentation, specifications and standards. The errors are made which cause failures which in turn lead to the reported anomalies. These reported anomalies are analyzed and the errors or bugs causing those failures are found and fixed. Sometimes the whole source is reworked up on. Rework is the process of revising the whole part of the software or application. It is one of the methodologies to correct the reported anomalies.
There are basically 2 types of rework:
- Avoidable Rework
It can be defined as the rework which would have been avoided if the previous source code of the software program would have been error free, consistent and complete. It depends on the hard work and efforts made to fix the problems of the software system that could have been found earlier, fixed and avoided.
- Unavoidable Rework
It can be defined as the rework which could not have been avoided since the software developers and programmers could not foresee or predict the error being made while programming the software system or application. Some such changes are changing the environmental constraints and user requirements.
In some cases, software system benefits from the avoidable rework. It is so because sometimes it is more cost effective to check for the errors and modify the system afterwards rather than putting in the significant loads of efforts for fixing the errors correctly up front. Avoidable rework is mostly preferred since in some cases a fault or an error occurs in a particular phase but it is not profitable to look for that fault in the same phase.
Thursday, December 22, 2011
What are the benefits of finding faults early?
Posted by
Sunflower
at
12/22/2011 07:25:00 PM
0
comments
Labels: Application, Benefits, Bug Fixing, Bugs, Development, Early, Errors, Factors, Faults, Finding, program, Quality, Rework, SDLC, Software Systems, Stages
|
| Subscribe by Email |
|
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.
Posted by
Sunflower
at
12/02/2011 03:48:00 PM
0
comments
Labels: Application, Bug Fixing, Bugs, Defects, Error correction, Errors, Hidden, Modifications, Objectives, Procedures, program, Quality, Regression, Regression Testing, Software Systems, Test cases, Tests
|
| Subscribe by Email |
|
Tuesday, May 17, 2011
What is a bug and bug life cycle? What are guidelines for deciding severity of bugs?
A bug is defined as a defect or some abnormal behavior of software. Testing plays an important part in the removal of bug. Bug has to travel the whole bug life cycle until it is closed. The cycle includes following stages:
- New
When the bug is posted for first time and not yet approved.
- Open
When tester approves that bug is genuine.
- Assign
Bug is assigned to the developer.
- Test
After fixing the bug, it is assigned to testing team to re-test it.
- Deferred
When the bug is changed to deferred state, the bug is expected to be fixed in next releases.
- Rejected
If the developer feels that the bug is not genuine, he can reject the bug.
- Duplicate
If bug is repeated twice or two bugs gives the same concept, then one bug is labeled duplicate.
- Verified
Once the bug is fixed, it is verified that no bug is present and status is changed to verified.
- Reopened
In this stage, the bug traverses the bug cycle once again because the bug still exists.
- Closed
If the bug is fixed and does not exist, the tester changes the status to closed.
SEVERITY AND PRIORITY OF THE BUG HAS TO FOLLOW GUIDELINES:
- Critical bug prevents further testing of the product under test. No work around is possible for such bugs.
- Major bug is in which defect does not function as expected or cause other functionality to fail.
- Medium or average bug in which defects do not conform to standards and conventions.
- Minor or low bugs do not affect the functionality of the system.
To write bug description, follow these guidelines:
- Be specific.
- Use present tense.
- No unnecessary words.
- No exclamation points.
- Do not use all CAPS.
- Mention steps.
Posted by
Sunflower
at
5/17/2011 01:13:00 PM
0
comments
Labels: Abnormal, Bug Fixing, Bug Life Cycle, Bugs, Critical, Defects, Description, Guidelines, Major, Medium bug, Minor bug, Priority, Quality, Severity, Software, Software testing
|
| Subscribe by Email |
|
Saturday, October 23, 2010
Validation phase - System Testing - Performance Testing - Capacity Planning and Bug Fixing
Most traditional applications are designed to respond to a single user at any time, most web applications are expected to support a wide range of concurrent users. As a result, performance testing has become a critical component in the process of deploying a web application. Performance testing has proven to be most useful in the capacity planning area.
- Capacity Planning
Capacity planning is about being prepared. Suppose if you want to know if your server configuration is sufficient to support two million visitors per day with average response time of less than five seconds etc. In capacity planning, you need to set the hardware and software requirements of your application so that you will have sufficient capacity to meet anticipated and unanticipated user load. One approach in capacity planning is to load-test your application in a testing server farm. By simulating different load levels on the farm using a web application performance testing tool such as WAS, you can collect and analyze the test results to better understand the performance characteristics of the application. Also, you may want to test the scalability of the application with different hardware configurations. You should load test your application with different numbers of clustered servers to confirm that the application scales well in cluster environment.
- Bug Fixing
There are some errors that may not occur until the applications is under high user load. Performance testing helps to detect and fix such problems before launching the application. It is therefore recommended that developers take an active role in performance testing their applications, especially at different major milestones of the development cycle.
Posted by
Sunflower
at
10/23/2010 04:08:00 PM
0
comments
Labels: Applications, Bug Fixing, Bugs, Capacity Planning, Errors, Performance, Performance testing, Phases, Quality, Software, System Testing, Validation, Validation Phase
|
| Subscribe by Email |
|