Smoke Testing


Smoke Testing, also known as  ‘Building Verification Testing’ is a type of software testing that comprises of  a non-exhaustive set of tests that aim at ensuring that the most important functions work.  The results of this is used to decided if a building is stable enough to proceed with further testing.

The term ‘smoke testing’ it is said came to software testing from a similar type of hardware testing. In which the device passed the test if it did not catch fire (or smoked) the first time it was turned on.

Advantages

  • It is exposes integration issues
  • It uncovers problems early
  • It provides some level of confidence in the organization

System testing


System testing is defined as the process of testing an integrated system to verify that it meets specified requirement.

System testing of software or hardware is testing conducted on a complete, integrated system to evaluate the system’s compliance with its specified requirements.

System testing takes as its input , all of the “Integrated”  software components that have been successfully passed integration testing and also the its integrated  with any applicable hardware system(s)

You will come across two very different type  of System testing.

  • Functional system testing
  • Non-Functional system testing
 
Functional system testing  is focuses on testing the system based on what it is supposed to do.
 
Non-Functional system  testing  looks at those aspects that are important yet not directly related
 

System testing falls within the scope of black box testing. and as such should require no knowledge of the inner design of the code or logic.

Regression testing


Regression testing is any type software testing that seeks to uncover new errors, or regressions, in existing functionality after changes have been made to a system such as functional enhancement, patches or configuration changes.

It is a type of software testing that intends to ensure that changes (enhancement or defects fixes) to the software have not adversely affected it.

The likelihood of any code change impacting functionalities that are not directly associated with the code is always there and it is essential that regression testing is conducted to make sure that fixing one thing has not broken another thing.

During regression testing new test cases are not created but previously crested test cases are re-executed.

Acceptance testing


Alpha testing is simulated or actual operational testing by potential users/customers or an independent test team at the developers’  site.

Alpha testing is often employed for off the shelf software as a form of internal acceptance testing before the software goes to ‘Beta testing’

Beta testing comes after alpha testing  and can be considered a form of external  user acceptance testing.

Versions  of the software  know as beta versions are released to al limited  audience outside of the programming team. The software is released to groups of people so that further testing can ensure the product has few faults or bugs.

Sometimes beta versions are made available to the open public to increase the feedback field to a maximal number of future users.

In engineering and its various subdisciplines, acceptance testing is a test conducted to determine if the requirements of a specification or contract are met.

Software developers often distinguish acceptance testing by the system provider from acceptance testing by the customer( user or client) prior  to accepting transfer of ownership.

It is also known as functional testing.

Functional Testing


It  is a type of black box  testing that bases its test cases on the specifications of the softeware component under test.

Functions are tested by feeding them input and examining the output, and internal program structure is rarely considered.

Testing the functionality of an application or website require GUI testing.

GUI automation offers two main challenge, you require a highly sophisticated GUI test technology for the best reliability and secondly, it needs to be cost effective.

Functional testing differs from system testing because functional testing “Verifies a program by checking it against the desing docment(s) or specification(s) while System testing is validating a program by checking it against the published user or system requirements.

Funtional testing involves five main steps

  • Identification of functions  ‘SUT” that the software is expected to perform
  • Create an input data source on the function’s specifications
  • Determine an output based on the function’s specifications
  • Execute of  test case
  • Comparing of actual and expected outputs