Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Training Material
Software Engineering – Training Material
SOFTWARE ENGINEERING
• Software Industry
• Software Crisis
• Software Myths
Management Myths
Developers Myths
Customer’s Myth
What do we do ?
• Software Engineering:
Challenge for Software Engineers is to produce high quality software with finite
amount of resources & within a predicted schedule.
Software Quality Assurance involves reviewing and auditing the software products
and activities to verify that they comply with the applicable procedures and
standards and providing the software project and other appropriate managers with
the results of these reviews and audits.
• Verification:
• Validation:
Validation typically involves actual testing and takes place after verifications are
completed.
The determination of correctness of a final program with respect to its
requirements.
1. Definition (What)
Customer Contact, Planning, Requirement Analysis.
2. Development Phase (How)
Design, Coding, Testing.
3. Maintenance Phase (Change)
Correction, Adaptation, Enhancement, Reengineering.
4. Support Activities
Quality Assurance, Configuration Management.
• Prototyping Model
• Waterfall Model – Sequential
• Spiral Model
• V Model - Sequential
Quick
Design
Refine Build
Requirements Prototype
Customer
Customer evaluation of
Suggestions the prototype
Design
Acceptance by Customer
Implement
Test
Maintain
Requirement Document
And Project Plan
Detailed
Design Document
Coding
Installation
Operation and Maintenance
Installation
Report
Typical Spiral Model
Developed by Barry Boehm in 1988. it provides the potential for rapid development of
incremental versions of the software. In the spiral model, software is developed in a
series of incremental releases. During early iterations , the incremental release might
be a paper model or prototype.
Planning: Tasks required to define resources, timelines, and other project related
information.
Risk Analysis: Tasks required to assess both technical and management risks.
Construction & Release: Tasks required to construct, test, install and provide user
support (e.g., documentation and training)
V – Process Model
Approved
Legend S.P.S Entry Criteria
Coding Code
Inspection Task Validation
Design
Exit Criteria
A good test engineer has a 'test to break' attitude, an ability to take the point of view
of the customer, a strong desire for quality, and an attention to detail. Tact and
diplomacy are useful in maintaining a cooperative relationship with developers, and an
ability to communicate with both technical (developers) and non-technical (customers,
management) people is useful. Previous software development experience can be
helpful as it provides a deeper understanding of the software development process,
gives the tester an appreciation for the developers' point of view, and reduce the
learning curve in automated test tool programming. Judgment skills are needed to
assess high-risk areas of an application on which to focus testing efforts when time is
limited.
The same qualities a good tester has are useful for a QA engineer. Additionally, they
must be able to understand the entire software development process and how it can fit
into the business approach and goals of the organization. Communication skills and the
ability to understand various sides of issues are important. In organizations in the
early stages of implementing QA processes, patience and diplomacy are especially
needed. An ability to find problems as well as to see 'what's missing' is important for
inspections and reviews.
• Testing
Why Testing ?
Types of Tests
Testing Techniques
Regression Testing
To ensure that the code changes have not had an adverse affect to the other modules
or on existing functions.
Functional Testing
Study SRS
Identify Unit Functions
For each unit function
• Take each input function
• Identify Equivalence class
• Form Test cases
• Form Test cases for boundary values
• From Test cases for Error Guessing
Form Unit function v/s Test cases, Cross Reference Matrix
Find the coverage
Unit Testing:
The most 'micro' scale of testing to test particular functions or code modules. Typically
done by the programmer and not by testers
• Unit - smallest testable piece of software
• A unit can be compiled/ assembled/ linked/ loaded; and put under a test harness
• Unit testing done to show that the unit does not satisfy the functional specification
and/ or its implemented structure does not match the intended design structure
Integration Testing:
1. Pre-test: the testing performed in Module development area is called Pre-test. The
Pre-test is required only if the development is done in module development area.
2. Pro-test: The Integration testing performed in baseline is called pro-test. The
development of a release will be scheduled such that the customer can break down
into smaller internal releases.
Alpha testing:
Beta testing:
Testing when development and testing are essentially completed and final bugs and
problems need to be found before final release. Typically done by end-users or others,
not by programmers or
System Testing:
Volume Testing:
The purpose of Volume Testing is to find weaknesses in the system with respect to its
handling of large amounts of data during short time periods. For example, this kind of
testing ensures that the system will process data across physical and logical
boundaries such as across servers and across disk partitions on one server.
Stress testing:
This refers to testing system functionality while the system is under unusually heavy or
peak load; it's similar to the validation testing mentioned previously but is carried out
in a "high-stress" environment. This requires that you make some predictions about
expected load levels of your Web site.
Usability testing:
Usability means that systems are easy and fast to learn, efficient to use, easy to
remember, cause no operating errors and offer a high degree of satisfaction for the
user. Usability means bringing the usage perspective into focus, the side towards the
user.
Security testing:
Test Plan:
A Test Plan is a detailed project plan for testing, covering the scope of testing, the
methodology to be used, the tasks to be performed, resources, schedules, risks, and
dependencies. A Test Plan is developed prior to the implementation of a project to
provide a well defined and understood project roadmap.
Test Specification:
A Test Specification defines exactly what tests will be performed and what their scope
and objectives will be. A Test Specification is produced as the first step in
implementing a Test Plan, prior to the onset of manual testing and/or automated test