QA Analyst
Software Testing
- Investigation conducted to provide stakeholders with information about the quality of the product or service under test.
- 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
It involves the execution of a software component or system component to evaluate one or more properties of interest. In general, these properties indicate the extent to which the component or system under test:
- Meets the requirements that guided its design and development,
- Responds correctly to all kinds of inputs,
- Performs its functions within an acceptable time,
- Is sufficiently usable,
- Can be installed and run in its intended environments, and
- Achieves the general result its stakeholders desire.
Software Testing
Software Testing
- In simple words, software testing is an activity to check that the software is DEFECT FREE.
Why is Software Testing important?
China Airlines Airbus a300
April 26 1994
264 :(
Therac Radiation Therapy
3 dead, 3 critical
Failed Satellite Launch
1999
12 M Us
Economics
- 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.
- It is commonly believed that the earlier a defect is found, the cheaper it is to fix it.
Economics
- 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.
Software bugs can be expensive or even dangerous
"Err is human but to really foul things up you need a computer"
Software Testing
- Software testing can provide objective, independent information about the quality of software and risk of its failure to users and/or sponsors.
- Software testing can be conducted as soon as executable software (even if partially complete) exists. The overall approach to software development often determines when and how testing is conducted. For example, in a phased process, most testing occurs after system requirements have been defined and then implemented in testable programs. In contrast, under an Agile approach, requirements, programming, and testing are often done concurrently.
How to test?
Scenario
- Trying to move the file when it is open
- You don't have enough permissions to paste the file in directory B.
- Folder B is on a shared drive and the storage capacity is full.
- Folder B already has a file with the same name.
Scenario
Price and time could increase exponentially
Exhaustive testing is NOT POSSIBLE
We need the OPTIMAL amount of testing based in the RISK ASSESSMENT
Absence of error is a fallacy
Can you sort this?
Overview
Defects and failures
- 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. Requirement gaps can often be non-functional requirements such as testability, scalability, maintainability, usability, performance, and security.
- 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. Not all defects will necessarily result in failures. For example, defects in dead code will never result in failures.
Input combinations and preconditions
- 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. Note that "coverage", as used here, is referring to combinatorial coverage, not requirements coverage.
Roles
- Software testing can be done by software testers. Until the 1980s, the term "software tester" was used generally, but later it was also seen as a separate profession. Regarding the periods and the different goals in software testing, different roles have been established: manager, test lead, test analyst, test designer, tester, automation developer, and test administrator.
History
History
Dave Gelperin and William C. Hetzel classified in 1988 the phases and goals in software testing in the following stages:
- Until 1956 – Debugging oriented
- 1957–1978 – Demonstration oriented
- 1979–1982 – Destruction oriented
- 1983–1987 – Evaluation oriented
- 1988–2000 – Prevention oriented
Testing methods
Static vs. dynamic testing
- There are many approaches available in software testing. Reviews, walkthroughs, or inspections are referred to as static testing, whereas actually executing programmed code with a given set of test cases is referred to as dynamic testing. Static testing is often implicit, as proofreading, plus when programming tools/text editors check source code structure or compilers (pre-compilers) check syntax and data flow as static program analysis. Dynamic testing takes place when the program itself is run. Dynamic testing may begin before the program is 100% complete in order to test particular sections of code and are applied to discrete functions or modules.
Non functional testing
Types of testing
Unit Testing
Scenario
Scenario
Scenario
Scenario
Scenario
Code
Scenario
Unit Testing
Unit Testing
Integration Testing
Integration Testing
Integration Testing
Integration Testing
Integration Testing
Integration Testing
Integration Testing
Stub
Integration Testing
Integration Testing
Integration Testing
System Testing
System Testing
System Testing
Sanity Testing
Sanity Testing
Acceptance Testing
Acceptance Testing
Acceptance Testing
Acceptance Testing
Acceptance Testing
Acceptance Testing
Acceptance Testing
Acceptance Testing
Regression Testing
Title Text
-
Regression testing is testing done to check that a system update does not re-introduce errors that have been corrected earlier.
All – or almost all – regression tests aim at checking
•Functionality – black box tests.
•Architecture – grey box tests
Regression Testing
Since they are supposed to test all functionality and all previously done changes, regression tests are usually large.
Thus, regression testing needs automatic
•Execution – no human intervention
•Checking. Leaving the checking to developers will not work.
Non functional testing
Non functional testing
Non functional testing
Types of testing
Types of testing
Pointers
Test Planning
How
Agile Testing
Agile Testing
Agile Testing
Agile Testing
Agile Testing
Agile Testing
Agile Testing
Agile Testing
Agile Testing
Test Strategy
Agile Testing
Agile Testing
Test Plan
Agile Testing
TDD
Automated Testing
Tips
Learn, learn and learn.
Prepare Sprint Planning Meeting
- Read carefully the specs.
- Be sure about all functionality.
- Ask developers about tools or how to test.
- In the meeting help to think about implementation. If there are some different ways to develop something, put on the table testing (the easy way).
In the middle of Sprint
- Do exploratory testing first (even when you need Formal testing). This is called also Informal Testing.
- Only when you have the expertise and the testing in your mind, then you can start writing Test Cases.
- Good practice is to execute the first run of testing WITH the Developer. In his machine actually.
- Energy. Build respect.
- Less time solving bugs. You don't need to report them.
- One time by week (90 minutes).
- Keep the developer in flow he has.
Developers Should Be your Friend
- They want RESPECT
- They want to show you they are smarter than you.
- If you give them Respect you will build a good and strong relationship. Means more easy will be your work.
Automation?
- Do you really want to Automate that Test Case?
- That automation script will come to garbage?
- Use tools to support your testing, but be careful with time you spend creating/configuring that tools.
Final Tip
- Testers must to know how to rapidly analyze complex products from any available information.
Be different
Title Text
More Tips
Test Jumper
QA Analyst
By Helbert Rico
QA Analyst
- 1,119