Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Mobile Software Testing

No description
by

Nick Schaafsma

on 21 November 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Mobile Software Testing

Software Testing
Software Testing is a process of evaluating a system by manual or automatic means and verify that it satisfies specified requirements or identify differences between expected and actual results

Software Testing can be –
Manual
A part of build automation

Software Testing

Introduction
Unit Testing
Demo: JUnit with Eclipse
Integration Testing
Demo: Emulation & integration testing with Unity3d
System Testing
Demo: System testing with Selenium
Regression Testing
Acceptance Testing




UNIT TESTING
Is a level of the software testing process where
individual units/ components
of a software/ system are tested.
Concerned with-
functional correctness and completeness of individual program units
Error handling
Checking input values (parameter)
Correctness of output data (return values)
Scope is smaller so it is easier to fix errors

JUnit- A tool for test-driven development

Benefits of Testing
find bugs and code errors early on
validate the code
Allows good documentation
Much easier to debug as the software develops
Allows the end user to be confident that the software will do the job
Reduces the Cost of Change

Integration Testing
Modules are integrated together and tested as a group.

Types of integration testing:
Top Down
Bottom Up
Sandwich

Agenda:
Unity Test Tools Demo
The following will be covered briefly:
- Unity's Emulator (pros and cons)
- Integration Tests


Integration Testing
When to integrate?




Typically after modules are unit tested and before system testing.
Develop the skeleton of the system and populate it with components.
Integration Testing: Top Down
Advantages
:
1) Gives an early outline of the system.
2) Boosts confidence and moral of the team(s).
3) Reduces the need for drivers.
4) Finds design errors early on.
Disadvantages
:
1) Difficult to design interactive stubs between levels.
2) Upper levels tend to resist change when lower levels are being developed.
3) May need to retest upper levels once lower levels are complete
Integration Testing: Top Down & Bottom Up
Integrate infrastructure components then add functional components.
Integration Testing: Bottom Up
Advantages
:
1) Overcomes disadvantages
of top down.
2) Since the tester is working upwards, they have a more thorough understanding of the functioning lower level which helps create tests for the upper levels.
Disadvantages
:
1) It is difficult to imagine the working system until upper layers are complete.
2) Important user modules are tested at the end.
3) Drivers of different complexities must be produced.
A target middle layer is defined. Uses Top Down & Bottom Up approaches to meet this target.
Integration Testing: Sandwich
Advantages
:
1) Best of both approaches.
Disadvantages
:
1) It is difficult to design and define the "Best" middle target layer.
JUnit
is a framework for writing unit tests

JUnit was written by
Erich Gamma
(of Design Patterns fame) and
Kent Beck
(creator of XP methodology)

A
unit test
is a test of a single class
A
test case
is a single test of a single method
A
test suite
is a collection of test cases
JUnit is Open Source
www.junit.org
JUnit Version 4, released Mar 2006

A quick
DEMO on Eclipse IDE

Regression testing
What is regression testing in software development?

Testing existing software applications to make sure that a change or addition hasn’t broken any existing functionality.
Any time you modify an implementation within a program, you should also do regression testing.
It can be relatively easy to find a specific problem when you’re looking for it; what’s harder is catching all the ones you don’t expect.
Does it still work?
the main question asked in regression testing.
More on regression...
Regression testing is nothing but full or partial selection of already executed test cases which are re-executed to ensure existing functionality has not been broken.

What this means is regression testing should be tightly linked to functional testing, and be built from the successful test cases developed and used in functional testing.
The opposite
Some software development teams try to get by without performing regular regression tests, opting to test essential functions just once to make sure they work and, if they check out, proceeding with the hopeful assumption that those functions will still work unless they’re directly modified again.

In a way, this makes sense: it’s natural to want to simply make a change, test it, and move on. Performing functional tests or highly specific unit tests to determine that a new software component works as it should has been called “non-regression testing”.
When is it required:
Change in requirements and code is modified according to the requirement

New feature is added to the software

Defect fixing

Performance issue fix

Maintenance

Techniques
Retest All

Regression Test Selection
Reusable Test Cases
Obsolete Test Cases

Prioritization of Test Cases
Depending on business impact, critical & frequently used functionality

Enter Automation..
According to Microsoft Developer Network documentation, “Adequate coverage without wasting time should be a primary consideration when conducting regression tests. Try to spend as little time as possible doing regression testing without reducing the probability that you will detect new failures in old, already tested code.”

Manual execution of test cases will work for small projects but with increased growth in code base and frequent changes, it increases test execution time as well as costs.

Automation of regression test cases would then be the smart choice.

Available tools
Quick Test Professional (QTP):HP Quick Test Professional is automated software designed to automate functional and regression test cases. It uses VbScript language for automation. It is a Data driven , Keyword based tool. This has now been renamed as UNIFIED FUNCTIONAL TESTING (UFT).
Rational Functional Tester (RFT):IBM's rational functional tester is a java tool used to automate the test cases of software applications. This is primarily used for automating regression test cases and it also integrates with Rational Test Manager.
Selenium:This is an open source tool used for automating web applications. Selenium can be used for browser based regression testing.
Many more..

But keep in mind
While automation is definitely the way to go, it presents some concerns.
Not put together right, could mean maintenance nightmares which means more costs.
Automation could lead to tests being static - developers might indirectly learn to pass these every single time they are run.

Very interesting - https://soundcloud.com/smartbearsoftware/regression-testing
Persson, C., & Yilmaztu¨rk, N. (2004). Establishment of automated regression testing at ABB: Industrial experience report on ‘Avoiding the Pitfalls’. In Proceedings of the 19th IEEE International conference on automated software engineering
Emphasis on good design
So when creating your regression test suite, good design and rapid updating is vital.
Designed badly - maintenance intensive, costly.
Good design means more strategy - What exactly am I trying to prove, what am I trying to demonstrate, where can I get this confidence.

And remember, the major reason for failure with regression testing is the absence of a well-defined and implemented policy and an organizational commitment to that policy.

Designing The UA Test Cases

Written in very simple language describing steps to be taken to test the application thoroughly ensuring sufficient coverage of all scenarios.


Inputs to these test cases:
Use cases created during requirements gathering
Inputs from business analysts and subject matter experts.

Acceptance Testing
Explanation
Cards are used to explore the various scenarios linked with the user stories. Discussions are then carried out with QAs and developers exploring the requirements based on them.

Example:

Scenario
:
Successful signup through Facebook.
Scenario
:
Failing due to already having a Facebook account connected.
Scenario
:
Facebook is unavailable.


7 Step process (UAT)
Types of Acceptance testing
Objective
: Verifying that the system meets
the user Requirements.
Succession to
: System testing
Who does it
: Customers
Methods
: Black Box techniques, Problem/
Configuration Management.

1. Test planning

2. Designing test cases.

3. Creating team for testing

4. Executing test cases

5. Defect logging

6. Resolving the issues/
bugs

7. Sign off
ORT
ensures application is configured and functioning correctly in production environment.
Alpha Testing
testing by potential users/customers or an independent test team at the developers' site.
Beta Testing
considered a form of external user acceptance testing. Versions of the software, known as beta versions.
UAT
also known as beta testing, application testing or end user testing.
Acceptance Testing Life cycle
According to meeting at Agile 2010 and London Agile testing
Explanation
User stories
Generating ideas through brainstorming that achieve this business goal.

Example:

In order to increase signups
I want visitors to signup through their Facebook accounts.
Explanation
Business goal
To measure and assess the success of the features built.

Example:

Increase the ratio of people signing up.
Key Examples
Explanation
Explanation
Specification with examples
Pairing with a QA we take the cards and the notes and then codify them into features.

Example:

Scenario
: visitor signup through Facebook
Given . . .
When . . .
Then . . .

Scenario
: Successful signup through Facebook
Given . . .
When . . .
Then . . .

Scenario
: Failing due to already having a Facebook account connected
Given . . .
When . . .
Then . . .
Literal automation
The developer turns the feature into an executable test at the same time as writing the feature.
Continuous validation
The feature is continuously run upon every commit (Continuous Integration)
Living documentation
Exposing features for all to read. Web based system such as "Relish" is used.
UNIT TESTS
System Testing
- Performed on fully integrated system
- Should be Blackbox Testing
- Test functionality against Requirements

Types of Tests
- Usability
- GUI
- Load Testing
- Exception Handling
- Sanity
- Ad Hoc / Exploratory
Selenium Demo
Watch This!
Methods and Tools
- Manual/Automated
- Device Emulators
- Selenium
- Cloud-based Emulators (SauceLabs)
Objectives:
Code coverage
Branch coverage
Condition coverage
Path coverage

When:
After modules are coded
Who
:Developer
Input:
Internal Application Design, Master Test Plan, Unit Test Plan
Output:
Unit Test Report
Full transcript