Saturday, 29 June 2013

Software Testing & QA


Software testing & QA

Software development process
Coding Shots Annual Plan high res-5.jpg
software developer at work
Activities and steps
Methodologies

Supporting disciplines

Tools

Software testing is an investigation conducted to provide stakeholders with information about the quality of the product or service under test.[1] Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation. Test techniques include, but are not limited to, the process of executing a program or application with the intent of finding software bugs (errors or other defects).
Software testing can be stated as the process of validating and verifying that a computer program/application/product:
  • meets the requirements that guided its design and development,
  • works as expected,
  • can be implemented with the same characteristics,
  • and satisfies the needs of stakeholders.
Software testing, depending on the testing method employed, can be implemented at any time in the development process. Traditionally most of the test effort occurs after the requirements have been defined and the coding process has been completed, but in the Agile approaches most of the test effort is on-going. As such, the methodology of the test is governed by the chosen software development methodology.
Different software development models will focus the test effort at different points in the development process. Newer development models, such as Agile, often employ test-driven development and place an increased portion of the testing in the hands of the developer, before it reaches a formal team of testers. In a more traditional model, most of the test execution occurs after the requirements have been defined and the coding process has been completed.

Contents

  [hide

Overview[edit]

Testing can never completely identify all the defects within software.[2] Instead, it furnishes a criticism or comparison that compares the state and behavior of the product againstoracles—principles or mechanisms by which someone might recognize a problem. These oracles may include (but are not limited to) specifications, contracts,[3] comparable products, past versions of the same product, inferences about intended or expected purpose, user or customer expectations, relevant standards, applicable laws, or other criteria.
A primary purpose of testing is to detect software failures so that defects may be discovered and corrected. Testing cannot establish that a product functions properly under all conditions but can only establish that it does not function properly under specific conditions.[4] The scope of software testing often includes examination of code as well as execution of that code in various environments and conditions as well as examining the aspects of code: does it do what it is supposed to do and do what it needs to do. In the current culture of software development, a testing organization may be separate from the development team. There are various roles for testing team members. Information derived from software testing may be used to correct the process by which software is developed.[5]
Every software product has a target audience. For example, the audience for video game software is completely different from banking software. Therefore, when an organization develops or otherwise invests in a software product, it can assess whether the software product will be acceptable to its end users, its target audience, its purchasers, and other stakeholders. Software testing is the process of attempting to make this assessment.

Defects and failures[edit]

Not all software defects are caused by coding errors. One common source of expensive defects is requirement gaps, e.g., unrecognized requirements which result in errors of omission by the program designer.[6] Requirements gaps can often be non-functional requirements such as testabilityscalabilitymaintainabilityusabilityperformance, andsecurity.
Software faults occur through the following processes. A programmer makes an error (mistake), which results in a defect (fault, bug) in the software source code. If this defect is executed, in certain situations the system will produce wrong results, causing a failure.[7] Not all defects will necessarily result in failures. For example, defects in dead code will never result in failures. A defect can turn into a failure when the environment is changed. Examples of these changes in environment include the software being run on a newcomputer hardware platform, alterations in source data, or interacting with different software.[7] A single defect may result in a wide range of failure symptoms.

Input combinations and preconditions[edit]

A very fundamental problem with software testing is that testing under all combinations of inputs and preconditions (initial state) is not feasible, even with a simple product.[4][8] This means that the number of defects in a software product can be very large and defects that occur infrequently are difficult to find in testing. More significantly, non-functionaldimensions of quality (how it is supposed to be versus what it is supposed to do)—usabilityscalabilityperformancecompatibilityreliability—can be highly subjective; something that constitutes sufficient value to one person may be intolerable to another.
Software developers can't test everything, but they can use combinatorial test design to identify the minimum number of tests needed to get the coverage they want. Combinatorial test design enables users to get greater test coverage with fewer tests. Whether they are looking for speed or test depth, they can use combinatorial test design methods to build structured variation into their test cases.[9]

Economics[edit]

A study conducted by NIST in 2002 reports that software bugs cost the U.S. economy $59.5 billion annually. More than a third of this cost could be avoided if better software testing was performed.[10]
It is commonly believed that the earlier a defect is found, the cheaper it is to fix it. The following table shows the cost of fixing the defect depending on the stage it was found.[11] For example, if a problem in the requirements is found only post-release, then it would cost 10–100 times more to fix than if it had already been found by the requirements review. With the advent of modern continuous deployment practices and cloud-based services, the cost of re-deployment and maintenance may lessen over time.
Cost to fix a defectTime detected
RequirementsArchitectureConstructionSystem testPost-release
Time introducedRequirements5–10×10×10–100×
Architecture10×15×25–100×
Construction10×10–25×

Roles

QA and Software Testing

 Quality Assurance & Software Testing - Understand the process

Master the techniques, and Use the tools

Get professional training to become a software tester

Course is designed for clear and simple understanding
No prior computer knowledge required
Option of one-to-one lessons or group classes
Affordable and competitive prices


Software Testing Course Information

The following is some general information about the course I am providing.
The nature of the course may change according to personal needs and prior knowledge/experience..
Course Duration

If you are new to software testing and do not have experience with software development, the course is divided into 3 parts, each 30 hours long.

Please note that every student is different and holds a different amount of motivation, prior knowledge, and related experience. Therefore, for some students not all 3 parts of the course are needed for getting a job as a tester.

*On average, students usually get a job after 1-3 months of study and job search.
If you are currently a software developer, you would probably like a different approach.

It may take only 1-2 meetings, each 2-3 hours long where you would receive an accelerated method of training plus all the necessary materials needed for further independent study and job hunting. In many cases, students end up wanting more than 1-2 meetings because software testing is quite different than development and requires a different approach that takes a little bit of time to get used to.

Course Outline

Part 1: Introduction to the World of Software, including:

- Computer Architecture (hardware & software)
- Operating Systems (multitasking, event-driven system, interfaces, Unix, Windows, Linux, Mainframe)
- Application Development Process SDLC (Waterfall, Rational Unified Process (RUP), Extreme Programming (XP))
- Fundamentals of Software Development (classes, objects, interfaces, functions, databases)
- The Essentials of Software Testing (methods, techniques, and tools)

Part 2: Software Testing, including:

- Client-Server Systems, Web Applications, and Various Business Applications.
- Manual Techniques & Methods
- Automated Tools (NUnit, WinRunner, QTPro, LoadRunner, QualityCenter, TestDirector, JMeter, Jira)
- Testing Types (sanity, functional, unit, regression, performance, security, and many others)
- Testing Documentation (test plans, test cases, test scripts, risk evaluation)

Part 3: Comprehensive Interview Preparation, including:

- Resume (experience that fits employer expectations)

- Interview Strategy (active and aggressive presentation of your skills)
- References
* For those who need it, support is available after getting a job.

Quality Assurance & Software Testing Course by Petrotech TTI

We welcome you to this blog about our new course for Software Testing & Quality Assurance
At our office location 55 Westwinds Cres Unit 103 NE Calgary T3J5H2.
This course will be offered on weekends and those who are interested will be helped in finding
Gainful employment after the completion of the course.Please contact Mr Pasha Tel 403 903 7883
For further information and registration at your earliest.