Quality certifications for organizations



Capability maturity model:-
Software CMM is a business process management and quality improvement concepts to software development and maintenance. It’s a community-developed guide for evolving towards a culture of engineering excellence, model for organizational improvement. The underlying structure for reliable and consistent software process assessments and software capability evaluations. The Capability Maturity Model for Software (CMM) is a framework that describes the key elements of an effective software process.
It has the following 5 levels

CMM level 1 (initial): Software development follows little to no rules. The project may go from one crisis to the next. The success of the project depends on the skills of individual developers. They may need to finish the project in a heroic effort.

CMM level 2 (repeatable): Software development successes are repeatable. The organization may use some basic project management to track cost and schedule. The precise implementation differs from project to project within the organization.

CMM level 3 (defined): Software development across the organization uses the same rules and events for project management. Crucially, the organization follows this process even under schedule pressures, ideally because management recognizes that it is the fastest way to finish.

CMM level 4 (managed): Using precise measurements, management can effectively control the software development effort. In particular, management can identify ways to adjust and adapt the process to particular projects without measurable losses of quality or deviations from specifications.

CMM level 5 (optimizing): Quantitative feedback from previous projects is used to improve the project management, usually using pilot projects, using the skills shown in level 4.

(Note) All of the above mentioned levels have many key processing areas in it

ISO:-
International Organization for Standardization, it provides a reference framework, or a common technological language, for different industry types which will help Industries to develop & maintain quality of the products. The ISO 9000 and ISO 14000 families are among ISO's most widely known standards ever. The familiar three standards ISO 9001, ISO 9002 and ISO 9003 have been integrated into the new ISO 9001:2000.        
                         
Six Sigma
Six Sigma is a rigorous and a systematic methodology that utilizes information (management by facts) and statistical analysis to measure and improve a company's operational performance, practices and systems by identifying and preventing 'defects' in manufacturing and service-related processes in order to anticipate and exceed expectations of all stakeholders to accomplish effectiveness.
Six sigma levels Metric: 3.4 Defects Per Million Opportunities. DPMO allows you to take complexity of product/process into account. Rule of thumb is to consider at least three opportunities for a physical part/component - one for form, one for fit and one for function, in absence of better considerations. Also you want to be Six Sigma in the “Critical to quality” characteristics and not the whole unit/characteristics.
Methodology: DMAIC/DFSS structured problem solving roadmap and tools.
Philosophy: Reduce variation in your business and take customer-focused, data driven decisions.

BS7799: -
BS 7799, Information Security Management, released by the British Standards Institution (BSI) in 1995, and revised in 1998 and 1999, provides a comprehensive set of controls comprising the best information security management system (ISMS) practices.
BS 7799 applies to information systems used by organizations in industry and commerce, including information processing technology in the area of networks and communications. Organizations complying with BS 7799 should assess security risks, select controls and develop guidelines. This standard may be used for ISMS audits and as a basis for a registration scheme. It covers such areas as document control, security policy and organization, asset classification and control, physical and environmental security, communications and operations management, access control and compliance with legal requirements.

(Note)The advantage of having these certifications for an organization is that, it will provide an identification and good will in the market. That makes the customers More belief towards these organizations when they are approaching for different type of the services and requirements

Quality in software


Software Quality can be defined as “an application/system/product which satisfies the requirements and expectations of the customer(s) developed with in the time and budget". Quality is obviously a subjective term. Hence definition is frequently changed.

What is quality assurance


Quality assurance can be defined as a defined process which is applied on application/product/system to confirm that it has satisfied the specifications, requirements of the customer. This is can be also called validation.

What are alpha / beta testing?


Alpha Testing:-
Testing of an application when development is nearing the completion of the Product. Minor design changes may be done as a result of such testing. Alpha Testing is typically performed by end users but not programmers or testers

Beta Testing: -
Testing the application when testing and development are essentially completed and final bugs are needed to be found before the final release Testing is typically   performed by end users but not programmers or testers
 The basic purpose of alpha and beta tests are
 a) To give confidence that the software is in a suitable state to be seen by customers
  (But not necessarily released.) 
b) To find bugs that may only be found under operational conditions. Any other major defects or performance issues should have been discovered by this stage. 

Acceptance Testing


Testing of the application to evaluate the adequacy of a production-ready system from a customer perspective i.e., to focus on usage scenarios, interface design, and usability Etc
Few points about acceptance testing

* Acceptance testing will be done by the client side test team
* Only test cases specific to functionality are executed
* No negative scenarios are validated

System testing


A type of testing to confirm that all modules work as specified, and that the system as a whole performs adequately as per the design and the requirements on the platform on which it will be deployed.

(Note) The major difference between integration testing and system testing is that, Integration testing is carried out on independent modules as well as combination of the modules, where as system testing, all modules are combined together and tested

Specific tests that are to be performed during system testing:-
a) Installation Testing
b) Performance Testing
c) Load testing
d) Stress Testing

a) Installation Testing: -
Testing the application by full installation, partial installation, or upgrading, uninstallation of the product on the specified operating system(s) to ensure that all above activities will work fine with the application/system/product

(Note) In case of a web application apart from the installation test, check the
Browser compatibility on different versions of browsers.

Performance Testing: -
Performance Testing deals with, how fast application/system/product
Will respond to user input.
a) Specify the bench marks for the application to determine the application
    Performance
b) Best method to determine an applications performance is through a tool only
c) If no tool is used and manually we have to determine, then do like this, for example If    25 records are to be displayed for user input in 25seconds- to test this, Use a stop watch to test the performance of the application by clicking the corresponding button/link and notice the time in the stop watch .

C) Load Testing: -
Testing an application under heavy loads, to determine at what point of time the system response time degrades or fails. For example write a script Which will create 100 virtual users and pulls the data to an web application by opening 100 browses versions, wait and see the response if it Works fine or not then increase it to an extent, at certain point of time it will not respond or degrades or fails, this is the point that is the maximum load that The application can accept.

D) Stress Testing: -
This term often used interchangeably with 'load' and 'performance' testing. Also used to describe such tests as system functional testing while under unusually heavy loads, heavy repetition of certain actions or inputs, input of large numerical values, large complex queries to a database system, etc. for example write a script which will repeatedly do the same kind of action by sending different type of input data the application and see the behavior of the application

What is stub/Driver


A stub or a driver can be defied as a program or a method that simulates The activity of a missing subsystem which is suppose to provide a specific Functionality depending on the design. The basic advantage of this is, if any modules is expecting or suppose to receive data from other module and that module is not ready, by writing the stubs/driver we can provide fake data to the module and can test its functionality.