Thursday, November 5, 2015

Quick Overview of Basic Testing Concepts

SDLC - Software Development Life Cycle
       The systems development life cycle (SDLC), also referred to as the application development life-cycle, is a term used in systems engineering, information systems and software engineering to describe a process for planning, creating, testing, and deploying an information system.




Project planning, feasibility study >>> Systems analysis, requirements definition >>> Systems Design (High Level and Low Level) >>> Implementation >>> Integration and System Testing >>> Acceptance installation, deployment >>> Release (Production) and Maintenance

Common Problems in Software Development

  • Poor Requirments
  • Unrealistic schedule
  • Inadequate testing
  • Requirements change
  • Miscommunication
  • Poorly documented code 


Solutions

  • Solid requirements
  • Realistic schedules
  • Adequate testing
  • Communication
Software Testing....?
  • It is the process used to measure the quality of developed computer software
Quality is constrained to such topics as
  • Correctness and completeness
  • Security
  • Capability
  • Reliability
  • Efficiency
  • Portability
  • Maintainability
  • Compatibility and usability
Verification and Validation
  • Verification & Validation of software development process is also called software testing
    • Verification - Are we building the project right..?
    • Validation - Are we building the right product..? 

Goals of Testing
  • Software meets its requirements
  • Evaluating the results under controlled conditions
  • To find as many defects as possible before the customer finds 

STLC - Software Testing Life Cycle


Software Testing  Techniques

White Box Testing
  • Testing is based on internal logic of an applications code/
  • Tests are based on coverage of code statements, branches, paths, conditions
Black Box Testing
  • Tests are based on requirements and functionality
Manual Testing
  • Testing manually without using any third party tools
Automation Testing
  • Testing the application using any third party tools
  • The art of converting manual test cases to machine executable code
Manual and Automation Testing Types

Functional Testing, Performance Testing, GUI(Graphical User Interface) Testing, Security Testing

Functional Testing
  • Testing developed application against Business and Functional requirements
  • Functional testing covers
    • Unit testing
    • Sanity testing
    • Integration testing
    • System testing
    • Regression testing
    • User Acceptance testing
Performance Testing
  • Types of Performance Testing
    • Load testing
      • Load tests are end to end performance tests under anticipated production load
    • Stress Testing
      • Testing conducted to evaluate a system or component at or beyond the limits of its specified requirements
    • Volume testing
      • Testing where the system is subjected to large volumes of data
GUI (Graphical User Interface) Testing
Testing developed application against GUI requirements
  • User friendliness of the screens
  • Interface of the screens
  • Manuals and help
Security Testing
Testing process to determine that an IS(Information Systems) protects data and maintains functionality as intended

The basic security concepts that need to be covered by security testing are
  • Confidentiality
  • Authentication
  • Authorization
  • Availablity

Different Types of Testing.....
  • Sanity Testing or Build verification Testing BVT
    • Testing to assure that the system or methodology works as expected
  • Ad hoc Testing
    • Testing application with functional knowledge and with out any test case execution

Different Types of Testing....
  • Compatibility Testing
    • Testing to ensure compatibility of an application or web site with different browsers, OS's, and hardware platforms 
  • Negative Testing
    • Testing aimed at showing software doesnot work. Discovery of faults that result in significant failures; crashes, corruption and security breaches
  • Competitive Analysis testing
    • Usaability, functionality or a performance evaluation whereby two or more competitive products are compared in an environment where products are going to be used.
      • Eg: IE Vs Netscape, Oracle DB Vs SQL Server Vs DB2)
Phases in Software Testing....
  • Unit testing
    • Testing to validate that individual units of source code are working properly
    • nUnit is used for unit testing
  • Integration testing
    • Testing of combined individual modules as a group
    • It follows unit testing and precedes system testing
  • System testing
    • Testing conducted on a complete, integrated system
    • It's require no knowledge of the inner design of the code or logic.

Phases in Software Testing....
  • Regression testing
    • Testing changes to ensure that the older programming skill works with the new changes.
  • User Acceptance testing
    • Testing done to ensure new software is functionality  ' fit for purpose'.
    • Final stages of a project and often occurs before a client accepts the system
  • Alpha testing
    • Actual operational testing by potential users/customers or an independent test team.
  • Beta testing
    • Testing by selected customers or open public before product release

Test Plan....
  • The test plan is intended as a baseline to identify what is deemed in and out of scope for testing and what the risks and assumptions are
  • Document describing the systematic approach of testing
  • Gives understanding of the eventual workflow and upcoming testing effort
  • Test Plan consists as.....
    • Scope of testing
    • Schedule
    • Approach
    • Test items 
      • Features to be tested
      • Features not to be tested
    • Environment Needs
    • Staffing and Resposibilities
    • Risks and Contingencies
    • Suspension Criteria and Resumtion Requirements
    • Release Criteria
    • Test Deliverables

Defect...
  • A Computer bug is an error, flaw, mistake, failure or fault in a computer program
  • Defects prevents software from working correctly or produces incorrect result