Thursday, April 14, 2011

What is Software Testing

Software testing is the process to verify if the developed solution/product meets the requirements with desired quality. Software testing is investigation to find unknown defects in the system once developers provide the product. The main intention of performing software testing is find maximum number of defects which in turn will ensure quality of the final product.


Software testing can also be stated as the process of validating and verifying that a software program/application/product:
  1. meets the business and technical requirements that guided its design and development;
  2. works as expected; and
  3. meets defined quality standards
Software testing can be started at any phase of software development life cycle (depending upon the methodology used to develop software). But it is always preferred to start testing activities at early stage to have better defect stage contamination.

Software testing is also termed as the process to verify completeness and correctness of developed solution/system. 

Monday, April 04, 2011

Automation Framework

What do you understand by automation framework?
What are the driving parameters for automation framework?
Platform independence and access



A test automation framework is a set of assumptions, concepts and tools that provide support for automated software testing. The main advantage of such a framework is the low cost for maintenance. If there is change to any test case then only the test case file needs to be updated and the Driver Script and Startup script will remain the same. Ideally, there is no need to update the scripts in case of changes to the application.
Choosing the right framework/scripting technique helps in maintaining lower costs. The costs associated with test scripting are due to development and maintenance efforts. The approach of scripting used during test automation has effect on costs.
Various framework/scripting techniques are generally used:
  1. Linear (procedural code, possibly generated by tools like those that use record and playback)
  2. Structured (uses control structures - typically ‘if-else’, ‘switch’, ‘for’, ‘while’ conditions/ statements)
  3. Data-driven (data is persisted outside of tests in a database, spreadsheet, or other mechanism)
  4. Keyword-driven
  5. Hybrid (two or more of the patterns above are used)
The Testing framework is responsible for:[1]
  1. defining the format in which to express expectations
  2. creating a mechanism to hook into or drive the application under test
  3. executing the tests
  4. reporting results
Another view Automation Framework is not a tool to perform some specific task, but is an infrastructure that provides a complete solution where different tools work together in an unified manner hence providing a common platform to the automation engineer using them.

Stage Containment

It means that the defect should be detected in the same stage where it is originated. The cost of fixing the defect in the same stage is much cheaper than to fix it in later stages. A bad case (without stage containment) and a good case (with stage containment) is shown in below screenshots:


Without stage containment

With stage containment

V-Model

  • VERIFICATION & VALIDATION
  • Ensures quality  from beginning of the process to end of the process
  • Structured, organized and efficient way of testing
  • Keep on enhancing test cases as we move toward development phase
  • Ensures complete testing of the initial requirements
  • Detect defects in early stages (stage containment) to save cost, effort and and chances of failure of application at later stages
V-Model

Functional vs Non-Functional Testing

What should application do? Verifying the application's specific functionality as per requirements is called functional testing.

Non-functional testing deals with verifying non-functional requirements. like performance, scalability, security etc Non-functional testing mainly deals with quality, performance and usability of the product.

Operational Acceptance Testing (OAT)

Operational acceptance testing (OAT), also called operational readiness testing, is acceptance testing focuses on the operational readiness of the system which is to be deployed to the production environment.

Web services, backup facilities, database connectivity disaster recovery procedures, working with different operating systems, working with different browsers (in case of web based application) etc are various tasks performed in OAT.

Beta Testing

Beta testing is acceptance testing (external) done at client's site (where software has to be deployed). It is done by end users verifying product meets all requirements and operates as expected on client's machine. Beta testing is done before beta testing. It is similar to the beta version of any software i.e to be used by limited number of users and then based on the feedback either provide product to all users or do the changes and provide solution.