SOFTWARE ENGINEERING ISO-9000 (BCA CSJMU)

ISO 9000 Certification in Software Engineering

The International organization for Standardization is a world wide federation of national standard bodies. The International standards organization (ISO) is a standard which serves as a for contract between independent parties. It specifies guidelines for development of quality system.
Quality system of an organization means the various activities related to its products or services. Standard of ISO addresses to both aspects i.e. operational and organizational aspects which includes responsibilities, reporting etc. An ISO 9000 standard contains set of guidelines of production process without considering product itself.
  
ISO 9000 Certification

Why ISO Certification required by Software Industry?

There are several reasons why software industry must get an ISO certification. Some of reasons are as follows :

• This certification has become a standards for international bidding.
• It helps in designing high-quality repeatable software products.
• It emphasis need for proper documentation.
• It facilitates development of optimal processes and totally quality measurements.

Features of ISO 9001 Requirements :
• Document control –
All documents concerned with the development of a software product should be properly managed and controlled.

• Planning –
Proper plans should be prepared and monitored.

• Review –
For effectiveness and correctness all important documents across all phases should be independently checked and reviewed .

• Testing –
The product should be tested against specification.

• Organizational Aspects –
Various organizational aspects should be addressed e.g., management reporting of the quality team.

Advantages of ISO 9000 Certification :
Some of the advantages of the ISO 9000 certification process are following :

• Business ISO-9000 certification forces a corporation to specialize in “how they are doing business”. Each procedure and work instruction must be documented and thus becomes a springboard for continuous improvement.

• Employees morale is increased as they’re asked to require control of their processes and document their work processes. 

• Better products and services result from continuous improvement process.

• Increased employee participation, involvement, awareness and systematic employee training are reduced problems.

Shortcomings of ISO 9000 Certification :

Some of the shortcoming of the ISO 9000 certification process are following :

• ISO 9000 does not give any guideline for defining an appropriate process and does not give guarantee for high quality process.

• ISO 9000 certification process have no international accreditation agency exists.

SOFTWARE ENGINEERING LEVEL OF TESTING

                           Levels of Testing
Testing levels are the procedure for finding the missing areas and avoiding overlapping and repetition between the development life cycle stages. We have already seen the various phases such as Requirement collection, designing, coding testing, deployment, and maintenance of SDLC (Software Development Life Cycle).
In order to test any application, we need to go through all the above phases of SDLC. Like SDLC, we have multiple levels of testing, which help us maintain the quality of the software.

Different Levels of Testing
The levels of software testing involve the different methodologies, which can be used while we are performing the software testing.
In software testing, we have four different levels of testing, which are as discussed below:
1. Unit Testing
2. Integration Testing
3. System Testing
4. Acceptance Testing
 

For our better understanding, let's see them one by one:

Level1: Unit Testing
Unit testing is the first level of software testing, which is used to test if software modules are satisfying the given requirement or not.
The first level of testing involves analyzing each unit or an individual component of the software application.
Unit testing is also the first level of functional testing. The primary purpose of executing unit testing is to validate unit components with their performance.
A unit component is an individual function or regulation of the application, or we can say that it is the smallest testable part of the software. The reason of performing the unit testing is to test the correctness of inaccessible code.
Unit testing will help the test engineer and developers in order to understand the base of code that makes them able to change defect causing code quickly. The developers implement the unit.

Level2: Integration Testing
The second level of software testing is the integration testing. The integration testing process comes after unit testing.
It is mainly used to test the data flow from one module or component to other modules.
In integration testing, the test engineer tests the units or separate components or modules of the software in a group.
The primary purpose of executing the integration testing is to identify the defects at the interaction between integrated components or units.
When each component or module works separately, we need to check the data flow between the dependent modules, and this process is known as integration testing.
We only go for the integration testing when the functional testing has been completed successfully on each application module.
In simple words, we can say that integration testing aims to evaluate the accuracy of communication among all the modules.

Level3: System Testing
The third level of software testing is system testing, which is used to test the software's functional and non-functional requirements.
It is end-to-end testing where the testing environment is parallel to the production environment. In the third level of software testing, we will test the application as a whole system.
To check the end-to-end flow of an application or the software as a user is known as System testing.
In system testing, we will go through all the necessary modules of an application and test if the end features or the end business works fine, and test the product as a complete system.
In simple words, we can say that System testing is a sequence of different types of tests to implement and examine the entire working of an integrated software computer system against requirements. 

Level4: Acceptance Testing
The last and fourth level of software testing is acceptance testing, which is used to evaluate whether a specification or the requirements are met as per its delivery.
The software has passed through three testing levels (Unit Testing, Integration Testing, System Testing). Some minor errors can still be identified when the end-user uses the system in the actual scenario.
In simple words, we can say that Acceptance testing is the squeezing of all the testing processes that are previously done.
The acceptance testing is also known as User acceptance testing (UAT) and is done by the customer before accepting the final product.
Usually, UAT is done by the domain expert (customer) for their satisfaction and checks whether the application is working according to given business scenarios and real-time scenarios.
Conclusion
In this tutorial, we have learned all the levels of testing. And we can conclude that tests are grouped based on where they are added in the Software development life cycle.
A level of software testing is a process where every unit or component of a software or system is tested.
The main reason for implementing the levels of testing is to make the software testing process efficient and easy to find all possible test cases at a specific level.
To check the behavior or performance of software testing, we have various testing levels. The above-described software testing levels are developed to identify missing areas and understanding between the development life cycle conditions.
All these SDLC models' phases (requirement gathering, analysis, design, coding or execution, testing, deployment, and maintenance) undergo the process of software testing levels.
 



SOFTWARE ENGINEERING TESTING

Software Testing
Introduction:-
Testing is the process of executing a program with the aim of finding errors. To make our software perform well it should be error-free. If testing is done successfully it will remove all the errors from the software. 
 
Principles of Testing:-
(i) All the test should meet the customer requirements 
(ii) To make our software testing should be performed by a third party 
(iii) Exhaustive testing is not possible. As we need the optimal amount of testing based on the risk assessment of the application. 
(iv) All the test to be conducted should be planned before implementing it 
(v) Start testing with small parts and extend it to large parts. 
 
Types of Testing:-
 
1. Unit Testing
It focuses on the smallest unit of software design. In this, we test an individual unit or group of interrelated units. It is often done by the programmer by using sample input and observing its corresponding outputs. 
Example: 
 




a) In a program we are checking if loop, method or 
   function is working fine
b) Misunderstood or incorrect, arithmetic precedence.
c) Incorrect initialization
 
2. Integration Testing
The objective is to take unit tested components and build a program structure that has been dictated by design. Integration testing is testing in which a group of components is combined to produce output. 
Integration testing is of four types: (i) Top-down (ii) Bottom-up (iii) Sandwich (iv) Big-Bang 
Example 
 
(a) Black Box testing:- It is used for validation. 
In this we ignore internal working mechanism and 
focus on what is the output?.

(b) White Box testing:- It is used for verification. 
In this we focus on internal mechanism i.e.
how the output is achieved?
 
3. Regression Testing
Every time a new module is added leads to changes in the program. This type of testing makes sure that the whole component works properly even after adding components to the complete program. 
Example 
 
In school record suppose we have module staff, students 
and finance combining these modules and checking if on 
integration these module works fine is regression testing
 
4. Smoke Testing
This test is done to make sure that software under testing is ready or stable for further testing 
It is called a smoke test as the testing an initial pass is done to check if it did not catch the fire or smoke in the initial switch on. 
Example: 
 
If project has 2 modules so before going to module 
make sure that module 1 works properly
 
5. Alpha Testing
This is a type of validation testing. It is a type of acceptance testing which is done before the product is released to customers. It is typically done by QA people. 
Example: 
 
When software testing is performed internally within
the organization
 
6. Beta Testing
The beta test is conducted at one or more customer sites by the end-user of the software. This version is released for a limited number of users for testing in a real-time environment 
Example: 
 
When software testing is performed for the limited
number of people
 
7. System Testing
This software is tested such that it works fine for the different operating systems. It is covered under the black box testing technique. In this, we just focus on the required input and output without focusing on internal working. 
In this, we have security testing, recovery testing, stress testing, and performance testing 
Example: 
 
This include functional as well as non functional 
testing
 
8. Stress Testing
In this, we give unfavorable conditions to the system and check how they perform in those conditions. 
Example: 
 
(a) Test cases that require maximum memory or other
    resources are executed
(b) Test cases that may cause thrashing in a virtual 
    operating system
(c) Test cases that may cause excessive disk requirement
 
9. Performance Testing
It is designed to test the run-time performance of software within the context of an integrated system. It is used to test the speed and effectiveness of the program. It is also called load testing. In it we check, what is the performance of the system in the given load.
Example: 
 
Checking number of processor cycles.
 
10. Object-Oriented Testing
This testing is a combination of various testing techniques that help to verify and validate object-oriented software. This testing is done in the following manner: 
• Testing of Requirements,
• Design and Analysis of Testing,
• Testing of Code,
• Integration testing,
• System testing. 

Topic :Software & Types, Subject: Computer Fundamental Notes for CSJM University Kanpur(for different courses like BBA, BCA, etc..)

Software Software refers to the programs, data, and instructions that enable a computer or other digital device to perform specific tasks or...