Friday, August 29, 2014

Real Time Software Testing Tutorials-Introduction


                     Software Testing Step by Step
                                                                     Chapter-1

What is Software Testing?



Software Testing is the buzz in IT world today.There are always two faces of coin similar is the case with software development of a product.One face is is Development and other is Testing.

Software companies are equally investing on quality parameters as they spend on Development.Hence software testing has became a lucrative field for IT professionals.It industry is n great demand of competent and good Testers.

Software Testing is an activity performed as soon as a development of a product starts.

Testing activity begins from Requirement analysis phase when Business analysts and client discuss requirements in the form of walkthroughs of BRD ( Business Requirement Document) or FRD (Functional Requirement Document) with Test analysts or Testers.

There is a mindset that Testing is an actvity performd by anyone,but thats not true.Being a tester doesn't means that you are supposed to just take screenshots like an autobot and verify with requirement.No ,it is not limited to that.

To become a good tester you need to work in conjugation with disributed development teams,analyse requirements ,conduct walkthrough and derive business scenarios and test cases.

Three major attributes of a Tester :

Analytical Skills: Analytical skills are more important for a tester,because a developer may do a code fix for a bug or an issue with a single line of code,but for tester scope for that fix is not limited to that line of code.A tester needs to determine the impacted areas and its consequences and get evidences and results for it.

Versatile: Testing is a context dependent activity which may vary from project to project and domain to domain,however same is not true with development.A Java developer or dot net developer will be always using same classes,functions and libraries in code be it Banking project or ecommerce web based portal.
But for a tester scope and approach for testing changes with every new project or release.
Hence a smart and good tester needs to be versatile enough. 

Written and Verbal skills: Testing activity involves many documentation and metrics as well,hence you need to be good in written and verbal comunication. 

We can summarize software testing under below key points:

• Software Testing is an empirical investigation conducted to provide stakeholders with information about the quality of the product or service under test , with respect to the context in which it is intended to operate.
• Software Testing also provides an objective, independent view of the software to allow the business to appreciate and understand the risks at implementation of the software.
• It is the process of validating and verifying that a software program/application/product meets the business and technical requirements.
• Software Testing, depending on the testing method employed, can be implemented at any time in the development process, however the most test effort is employed after the requirements have been defined and coding process has been completed.

Why Software Testing Important?




If we talk about software system context,software systems are an increasing part of life, from business applications (e.g. banking) to consumer products (e.g. cars). Most people have had an experience with software that did not work as expected. Software that does not work correctly can lead to many problems, including loss of money, time or business reputation, and could even cause injury or death.There  are many instances which demonstrated that software failure may lead to big losses. 


Examples of software failure are depressingly common. Here are some which happened in past:

1. The first launch of the European Space Agency Ariane 5 rocket in June 1996 failed after 37½ seconds. A software error caused the rocket to deviate from its vertical ascent, and the self-destruct capabilities were enacted before the then unpredictable flight path resulted in a bigger problem.
2. When the UK Government introduced online filing of tax returns, a user could sometimes see the amount that a previous user earned. This was regardless of the physical location of the two applicants.
3. In November 2005, information on the UK’s top 10 wanted criminals was displayed on a website. The publication of this information was described in newspapers and on morning radio and television and, as a result, many people attempted to access the site. The performance of the website proved inadequate under this load and the website had to be taken offline. The publicity created performance peaks beyond the capacity of the website.





4. When a well-known online book retailer first went live, ordering a negative number of books meant that the transaction sum involved was refunded to the ‘purchaser’. Development staff had not anticipated that anyone would attempt to purchase a negative number of books. Code was developed to allow refunds to customers to be made by administrative staff – but self-requested refunds are not

Why do we Test Software?

• To produce a quality product, which is defect free, and also to make sure all the requirements are satisfied and the best design system architecture is used.
• Customers/user satisfaction.
• To make sure the software is:
– Correct
– Reliable
– Portable
– Efficient
– Interoperable
– Usable
– Maintainable
– Re-usable
– Secure
– Flexible
• To achieve the goals of an organization as well as to make profit.
• To reduce the possible risks associated with the software, then reduce the loss,which might happen when/if the software is released with defects included.
• Software testing is an activity, not a phase it begins as soon as requirements are onboard.





Do Software Systems Fails? 

The big question is Do software systems fail? Off course they do.

The above quoted examples of software system failures are proof that something fairly obvious was missed? Is it the feeling that, expensive and important as they were, the systems were allowed to enter service before they were ready? Do you think these systems were adequately tested?

Obviously they were not, but in this study guide we want to explore why this was the case and why these kinds of failure continue to plague us. To understand what is going on we need to start at the beginning, with the people who design systems. Do they make mistakes? Of course they do.

People make mistakes because they are fallible, but there are also many pressures that make mistakes more likely. Pressures such as deadlines, complexity of systems and organizations, and changing technology all bear down on designers of systems and increase the likelihood of errors in specifications, in designs and in software code. These errors are where major system failures usually begin. If a document with an error in it is used to specify a component the component will be faulty and will probably exhibit incorrect behavior. If this faulty component is built into a system the system may fail. 
While failure is not always guaranteed, it is likely that errors in specifications will lead to faulty components and faulty components will cause system failure. 

An error (or mistake) leads to a defect, which can cause an observed failure
Error: a human action that produces an incorrect result.
Defect:A flaw in component or system that can cause the component or system to fail to perform its required function.

Failure: a deviation of the software from its expected delivery or service
Fault: a manifestation of an error in software.
Risk: These are factors that could result in future negative consequences,usually expressed as impacted & likelihood.

Hence if we want to avoid failure we must either avoid errors and faults or find them and rectify them. Testing can contribute to both avoidance and rectification, as we will see when we have looked at the testing process in a little more detail. One thing is clear: if we wish to influence errors with testing we need to begin testing as soon as we begin making errors – right at the beginning of the development process – and we need to continue testing until we are confident that there will be no serious system failures – right at the end of the development process.





1 comment:

Unknown said...

Good article highlighting importance of testing it is well accepted and its evedent in project planning and budgeting, testing gets a fair share.
In all of the software development paradigms water fall or XP or Agile testing is part of life cycle.
With the continuous integration and automated testing it makes sure that quality is provided repeatadly.