Basic Iphone Application DevelopmentBlock-5
Basic Iphone Application DevelopmentBlock-5
Basic Iphone Application DevelopmentBlock-5
Testing
The Objective:
At the end of this topic, the student will be able to know:
• What is Testing?
• Testing Types
• Testing Methods
• Unit Testing
• Testing App on a Device
• Publishing App on App Store
What is Testing?
• Testing is the process of evaluating a system or it’s components
• It checks the system satisfies specific requirement or not
• It keeps track on actuals and expected
• Testing is a executing a system to identify missing requirements
Who does testing?
• It depends on the process and the associated stakeholders of the project(s). In
the IT industry, large companies have a team with responsibilities to evaluate
the developed software in the context of the given requirements. Moreover,
developers also conduct testing which is called Unit Testing. In most cases,
following professionals are involved in testing of a system within their
respective capacities:
• Software Tester
• Software Developer
• Project Lead/Manager
• End User
Who does testing?
• Different companies have difference designations for people who test
the software on the basis of their experience and knowledge such as
Software Tester, Software Quality Assurance Engineer, and QA
Analyst etc.
• It is not possible to test the software at any time during its cycle.
When to Start Testing?
• An early start to testing reduces the cost, time to rework and error free software that is
delivered to the client. However in Software Development Life Cycle (SDLC) testing
can be started from the Requirements Gathering phase and lasts till the deployment of
the software. However it also depends on the development model that is being used.
For example in Water fall model formal testing is conducted in the Testing phase, but
in incremental model, testing is performed at the end of every increment/iteration and
at the end the whole application is tested.
• Testing Deadlines.
• Completion of test case execution.
• Completion of Functional and code coverage to a certain point.
• Bug rate falls below a certain level and no high priority bugs are identified.
• Management decision.
Testing Types
• Manual Testing
• Automated Testing
Manual testing
• This type includes the testing of the Software manually i.e. without
using any automated tool or any script. In this type the tester takes over
the role of an end user and test the Software to identify any un-expected
behavior or bug. There are different stages for manual testing like unit
testing, Integration testing, System testing and User Acceptance testing.
• Testers use test plan, test cases or test scenarios to test the
Software to ensure the completeness of testing. Manual testing also
includes exploratory testing as testers explore the software to identify
errors in it.
Automation testing
• Automation testing which is also known as Test Automation, is when
the tester writes scripts and uses another software to test the software.
This process involves automation of a manual process. Automation
Testing is used to re-run the test scenarios that were performed
manually, quickly and repeatedly.
• The tester needs to have a look inside the source code and find
out which unit/chunk of the code is behaving inappropriately.
Grey Box Testing
• Grey Box testing is a technique to test the application with limited
knowledge of the internal workings of an application. In software
testing, the term the more you know the better carries a lot of weight
when testing an application.
Unit Testing
• Smallest piece of testable software in the application
• Each unit is tested separately before integrating them
• Unit testing has proven its value in that a large percentage of defects
are identified during its use.
Unit Testing
• The primary goal of unit testing is to take the smallest piece of testable software in the
application, isolate it from the remainder of the code, and determine whether it behaves
exactly as you expect. Each unit is tested separately before integrating them into modules
to test the interfaces between modules. Unit testing has proven its value in that a large
percentage of defects are identified during its use.
• The most common approach to unit testing requires drivers and stubs to be written.
The driver simulates a calling unit and the stub simulates a called unit. The investment of
developer time in this activity sometimes results in demoting unit testing to a lower level
of priority and that is almost always a mistake. Even though the drivers and stubs cost
time and money, unit testing provides some undeniable advantages. It allows for
automation of the testing process, reduces difficulties of discovering errors contained in
more complex pieces of the application, and test coverage is often enhanced because
attention is given to each unit.
Unit Testing
• For example, if you have two units and decide it would be more cost
effective to glue them together and initially test them as an integrated
unit, an error could occur in a variety of places: