0% found this document useful (0 votes)
24 views46 pages

Software Engineering Basics

Uploaded by

mithunshr1217
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views46 pages

Software Engineering Basics

Uploaded by

mithunshr1217
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 46

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

You might also like