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,107