Software Engineering Overview
Krutha Info Systems ®
Rajesh Mayanna
Contact No: 9845012259
E Mail: Rajesh_vm@yahoo.com
Highlights Krutha Info Systems
Qualification w.r.t Work selection
Role of Academic Basic Subjects to carry the work
Role of Electives in Specialization
Academic Project Selection and Involvement
Participation in Technical Seminars and Group Discussions
Domain and Engineering Branches
Production, Manufacturing, and Research & Development work
Study of Recent Failures, Lessons Learnt and Requirements
Testing and Development in Maintenance Project, Porting Projects
Testing and Development in Safety and Non Safety Projects.
Attitude, Communication, Hard work, Resume contents, etc.
Confidence, Self Initiation, Cost of leaving, Organization expectations,
Customer Interactions, etc.
Highlights
Role of Testing and Development in Standalone, Client Server and
Multitier Applications
Role of Scripting languages in Development of Tools and Automate
the Repeated activities
Role of Word, Excel and Power Point in Preparation of Requirements,
Design Documents, User Manuals, Release Notes, etc.
Customer Expectations, Process, Planning and Execution, etc.
Certified Tools used for Testing and Development
Candidate Ideas, Process Initiation, Quality Improvement, etc.
Development Software Vs Release Software
Know about the Organization Requirements, Types of Organizations
like Product, Project, Service Kind of Organization, etc.
Short Term Project and Long Term Project Requirements
Testing Types
Embedded Testing
GUI Testing, Network Testing, Ghosting, Adhoc and Exploratory, etc.
Static Analysis and Dynamic Analysis
Verification and Validation
MIL, SIL, PIL, HIL Testing
Test Specification, Test Plan, Test Case, Test Script, Test Suite
Test Log, Test Environment, Defect report
ITU, DO 178B, ASIL A, B, C and D, ISO26262,
Requirement Guidelines, Checklists, Standards, Hungarian Notation,
Basic Electrical, Electronics, Mechanical, etc.
Cyclomatic Complexity, Physical Lines of Code, Logical Lines of
code, etc.
Technical Documentation, Data Entry, Flow Chart Verification, etc.
Embedded
Preprocessor, Compiler, Assembler, Linker, Loader, Disassembler
Bootloader, Scheduler, Operating System
Tasking, Multi Tasking, Job, Multithreading
Interrupts and Types
OSI Layers
Application Software Vs System Software
Safety Feature
Common Recent Industry Failures
Generic Tools Vs Proprietary Tools
C, C++, VC++(SDI, MDI), .Net, Java, ORACLE, ERP, SAP
Low Level Language Vs High Level Language
Unix, Linux, Android, Window’s, Sun Solaris OS
Embedded
Compilation Stages
Linking Types
Storage classes, Data Types, Qualifiers, Pointers, Bit fields
Customized Data Type and System defined Data Type
RS232, CAN, LIN, Flexray, I2C
Van Neumann and Harword Architecture
CRC, Little Endian, Big Endian
Memory Segments
Frame Format
Embedded Systems and Real Time Applications
Unix, Linux, Android, Window’s, Sun Solaris OS
Agenda
Stages in Software Life Cycle
Software Life Cycle
Software Development Life Cycle
Software Testing Life Cycle
Software Life Cycle Models
Software Bug Life Cycle
Domain Vs Software Testing and Development
Differences between Embedded and GUI Testing
Embedded Telecom, Networking, Automotive, Avionics Testing
Product, Service, Project Process
Mapping of ISO, CMM to Development and Testing
Stages in Software Life Cycle
Concept Stage
Planning Stage
Requirement Stage
Design and Development Stage
Coding Stage
Testing Stage
Maintenance Stage
Software Life Cycle
Software Life Cycle
=
Software Development Life Cycle
+
Software Testing Life Cycle
Software Project Plan
=
Software Development Plan
+
Software Test Plan
Software Development Life Cycle
Preparation of Concept Document
Preparation of Requirement Specification Document
Preparation of High Level Design Document
Preparation of Low Level Design Document
Coding
Unit Testing
Software Testing Life Cycle
Preparation of Test Requirement Specification document
Preparation of Test Design Technique
Preparation of Test Plan
Design of Test Cases
Execution of Test Cases
Report the Results
Track the Changes
What Is Testing
The Systematic way of Analyzing the Software item
to show the difference between Expected Output
and Actual Output
Aim of Testing
Give the Defect or Bug free product to the Customer or
End User at the right time, right cost with right Features
Testing Principles
Write Test Cases for Invalid Inputs
Difficult to know when to Stop Testing
As defects goes up the probability of undetected defects also increases
Every Test Case should have the Expected output
Avoid non repeatable Testing
Inspect the results of each Test
Testability should be key design objective
Testing must start with Objectives
Program Testing is to show the Presence of bugs but never their Absence
Quality
Quality can be Measured in terms of Cost, Budget,
Time to Market, Meet the Expectations, User friendly,
Customer Satisfaction, etc.
The Quality of something can be determined by comparing
set of inherent characteristics with a set of Requirements.
Quality Control and Quality Assurance
Quality Control: Testing the Product after the Implementation
Ex: Validation, This is the Proactive Process, Product Oriented
Quality Assurance: Testing the Product before Implementing and
After Implementing code.
Ex: Verification (Traceability, Peer Reviews, Inspection, etc.)
This is the Preventive Process, Process oriented
Testing = Verification + Validation
Verification : The process of Analyzing the Software item to show
the difference between Expected Output and Actual Output without
execution.
Ex:Review’s, Inspection, Walkthrough, etc.
Review Types : Self Review, Internal Review, External Review
Validation : The Process of Analyzing the Software item to show
the difference between Expected Output and Actual Output with
execution
Ex: Unit Testing, Integration Testing, System Testing, etc.
Test Design Methods
White Box Testing
Gray Box Testing
Black Box Testing
Or
Boundary Value Analysis
Equivalence Partitioning
Error Guessing
White Box Testing
Testing the Internal Structure of the Program. Done by Development
team or Independent Testing Team who knows the Internal Structure
and logic of the code.
Ex: Unit Testing, Component Testing, Code Integration Testing
Unit Testing: Execution of Test Cases with Against the Code.
Input for Preparing the Test Cases is LLD or Pseudo code document.
Taking each Unit Module in LLD do the annotation for checking the
coverage and Complexity
Execute the Test Cases using appropriate Compiler or Simulator.
Aim of Unit Testing is to identify the Dead Code
Gray Box Testing
To find the Errors with the knowledge of the Internal Structure and
Behavior of the Component. This can be done by both Development
team and Testing team.
Ex : Component Testing
Component Integration Testing
Component Testing: Testing the Modules without using the Code
Level Stubs.
Goals: Check whether the Component meets its Specification and
fullfill its Functional Requirements.
Check whether the correct and Complete Structural and interaction
requirements specified before the development of the Component
are reflected in the implemented Software System
Black Box Testing
Find errors without the knowledge of internal Structure of the
Product. This can be done by the Testing Team, Who are not a part of
Development team.
Ex: Integration, Functional, System Testing, Acceptance
Testing
Integration Testing and Types: Verify against the design
Components interfaces. Input for preparing the Integration Test Cases
is HLD. Test modules with expected and unexpected interfaces
values.
Top Down Integration Testing: Input is Stubs
Bottom Up Integration Testing: Input is Test derivers.
Types: Code Integration
Module Integration
System Integration
Functional Testing
Checking the Functional Features in all Modules. HLD is
the Input document for preparing the Functional Test Cases.
Functionality Features, Look and Feel of the product are
Tested
Types : Code Functionality
Module Functionality
System Functionality
System Testing and Types
Testing the System as a whole to Validate that it meets its
Specification and the Objective of its users.
Checking the overall Requirements Specification
Input for preparing the System Test Cases is SRS or SFS.
System Testing Types
Load Testing
Stress Testing
Performance Testing
Reliability Testing
Platform Testing
Security Testing
Configuration Testing
Localization Testing, etc
ReTest and Regression Testing
Retesting means executing the same test case after fixing
bug to ensure the Bug is fixed.
The Purpose of Regression Testing is to ensure proper
Behavior of an Application after fixes or Modifications have
been applied to the Software or its environment.
Acceptance Testing and Types
Done by the Customer.
Input for preparing the Acceptance Test Cases is SRS or
Concept Document or Feasibility Document.
Final Testing Based on the Specifications of the End User
or Customer or Based on use by End Users/Customers over
some limited period of Time.
Types: Alpha Testing
Beta Testing
User Acceptance Testing
Acceptance Testing Types
Alpha Testing: Testing of an application when
development is nearing completion. Minor design Changes
may still be made as a result of such Testing
Typically done by End Users or others, not by the
programmers or Testers.
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 Testers
User Acceptance Testing: Determining if Software is
Satisfactory to an End user or Customer
Different Types of Software Testing
Sanity Testing: The Testing is Sufficient to prove the
application is functioning according to Specifications.
Done in the beginning of each Build or Binary package
Smoke Testing: Also Called Build Acceptance Testing.
Smoke Test Covers all the Functionality is less time to
make sure that the application works fine in the normal
condition. Smoke test is done during the daily build or
Weekly Build.
Different Types of Software Testing
Recovery Testing: Testing How well a System recovers from
Crashes, Hardware failures or other Catastrophic problems.
Adhoc Testing: Test with less knowledge on the product.
Exploratory Testing: Test without having the knowledge of
the Product. Learn the Test Cases while executing them.
Serviceability Testing
Documentation Testing
Global Testing
Software Life Cycle Models
Waterfall Model
V Model
Prototype Model
Iterative Model
V with Prototype Model
Spiral Model
Zig Zag Model, etc
Software Builds
Patch Build
Local Build
Base Build
Pre release Build
Post release Build
Release Candidate, etc
Software Bug Life Cycle
Bugs can be broadly under go following stages
New or Open Stage: Defect origination
Assign Stage: Raised defect assigned to Developer
Resolved Stage: Developer provides the code fix for the
bug.
Retest:
Closed Stage: Tester Re Tests the bug and closes it, if it is
working. Otherwise he will reopen the defect and it will go
back to Open Stage.
Reopen: Reoccurrence of the Closed Bug
Types of Bugs: Catastrophic (Fatal), Major, Minor, Cosmetic
Software Bug Life Cycle
1. New
2. Open
3. Assign
4. Test
5. Verified
6. Deferred
7. Reopened
8. Duplicate
9. Rejected and
10.Closed
Guidelines on writing Bug Description
Be specific. State the expected behavior which did not occur -
such as after pop-up did not appear and the behavior which
occurred instead.
Use present tense.
Don’t use unnecessary words.
Don’t add exclamation points. End sentences with a period.
DON’T USE ALL CAPS. Format words in upper and lower
case (mixed case).
Mention steps to reproduce the bug compulsorily
Severity and Priority
Severity and Priority is similar to Impact and Urgency and this
will be vary based on the state of the Project.
Manual and Automation Testing
Manual Testing (Human effort is more required)
In Manual Testing some disadvantages like
1. No. of persons are required
2. Time consuming
3. Can't repeat same functionality again and again, etc
Automation Testing
In Automation Testing also some disadvantages like
1. Based on the Tool cost
2. Can't automate all the areas
3. Usage of Tool and Domain experience is Must, etc
ISO, CMM, CMMI and Six Sigma
This has a similarity to the ISO 9126 definition of Software Quality:
Portability, Efficiency, Reliability, Functionality, Usability and
Maintainability
SEI-CMM: Software Engineering Institute – Capability Maturity Model
5 Levels:
1. Initial
2. Repeatable (ISO)
3. Defined (Organization)
4. Managed (Metrics)
5. Optimized (Change Management and Continuous Improvement)
Six Sigma
SixSigma Overview :
Six Sigma is a methodology to develop great products and
services that customers love. This is the most efficient and
proven methodology to resolve any problems in order to
improve organization and business performance. Six Sigma aims
to meet and exceed customer requirements while increasing
business profit and minimizing wasted resources. It achieves
these challenging objectives by deploying a structured,
scientific and data-driven organizational excellence process and
culture.
Test Plan
Test Plan is a document that describes the
Objectives
Scope
Approach
Introduction
Purpose
Entry and Exit Criteria
Testing Types
Resources
Release information, etc
Test Case
Test Case is a document that describes the
Test Case Id
Test Case Name
Test Case purpose
Description of the Test Case
Precondition
Steps to execute
Expected Output
Post condition
Result
Remarks, etc
Test Metrics
Test Metrics accomplish in analyzing the Current level of
Maturity in Testing and give a projection on how to go
about Testing activities by allowing us to set goals and
predict future trends.
Test Metrics should cover basically
Test Coverage
Time for One Test Cycle
Test Setup, etc
Commonly Used Testing Terms
Test Strategy
Test Script
Test Spec
Test Suite,
Test Framework,
Test Log,
Test Report, etc
Needs to know before starts Testing
Check the Hardware before download the executable to the
Target Board.
Check the Software in Simulator environment before
flashing to the Target Board
Check the delay (Hardware and Software Delay)
Check the Build Name, Version Number, Release Notes
before starts execution.
Awareness of the Tools used in the Project and Limitations
and Known issues in the Tools, etc
Common Software failures
User Interface failures
Calculation failures
Initial and later states failures
Control flow failures
Errors in handling or interpreting data failures
Race conditions failures
Load conditions failures
Hardware failures
Source, version and ID control failures
Testing failures, etc
Commonly Used Tools
Bug Management Tool
Configuration Management Tool
Code Coverage Tool
Test Management Tool
Static Analysis Tool
Dynamic Testing Tool (Automation)
Build Management Tool
Test Case, Test Plan generation Tool
Memory Leakage Analysis Tool, etc
Questions and
Discussion