Send the link below via email or IMCopy
Present to your audienceStart 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
Mobile Software Testing
Transcript of Mobile 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 –
A part of build automation
Demo: JUnit with Eclipse
Demo: Emulation & integration testing with Unity3d
Demo: System testing with Selenium
Is a level of the software testing process where
individual units/ components
of a software/ system are tested.
functional correctness and completeness of individual program units
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
Modules are integrated together and tested as a group.
Types of integration testing:
Unity Test Tools Demo
The following will be covered briefly:
- Unity's Emulator (pros and cons)
- Integration Tests
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
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.
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
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.
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
1) Best of both approaches.
1) It is difficult to design and define the "Best" middle target layer.
is a framework for writing unit tests
JUnit was written by
(of Design Patterns fame) and
(creator of XP methodology)
is a test of a single class
is a single test of a single method
is a collection of test cases
JUnit is Open Source
JUnit Version 4, released Mar 2006
DEMO on Eclipse IDE
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.
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
Performance issue fix
Regression Test Selection
Reusable Test Cases
Obsolete Test Cases
Prioritization of Test Cases
Depending on business impact, critical & frequently used functionality
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.
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.
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.
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.
Successful signup through Facebook.
Failing due to already having a Facebook account connected.
Facebook is unavailable.
7 Step process (UAT)
Types of Acceptance testing
: Verifying that the system meets
the user Requirements.
: System testing
Who does it
: Black Box techniques, Problem/
1. Test planning
2. Designing test cases.
3. Creating team for testing
4. Executing test cases
5. Defect logging
6. Resolving the issues/
7. Sign off
ensures application is configured and functioning correctly in production environment.
testing by potential users/customers or an independent test team at the developers' site.
considered a form of external user acceptance testing. Versions of the software, known as beta versions.
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
Generating ideas through brainstorming that achieve this business goal.
In order to increase signups
I want visitors to signup through their Facebook accounts.
To measure and assess the success of the features built.
Increase the ratio of people signing up.
Specification with examples
Pairing with a QA we take the cards and the notes and then codify them into features.
: visitor signup through Facebook
Given . . .
When . . .
Then . . .
: Successful signup through Facebook
Given . . .
When . . .
Then . . .
: Failing due to already having a Facebook account connected
Given . . .
When . . .
Then . . .
The developer turns the feature into an executable test at the same time as writing the feature.
The feature is continuously run upon every commit (Continuous Integration)
Exposing features for all to read. Web based system such as "Relish" is used.
- Performed on fully integrated system
- Should be Blackbox Testing
- Test functionality against Requirements
Types of Tests
- Load Testing
- Exception Handling
- Ad Hoc / Exploratory
Methods and Tools
- Device Emulators
- Cloud-based Emulators (SauceLabs)
After modules are coded
Internal Application Design, Master Test Plan, Unit Test Plan
Unit Test Report