Sanity Testing and Smoke Testing

A software is tested in different ways. Sanity testing and Smoke testing are such type of testing used to test software

Sanity Testing

Sanity testing is a type of software functional testing performed after receiving a product with little changes in the code or its functionality to make sure that the bugs has been fixed in advance to resolve workflow issues.

When a stable product is undergone for small bug fixing or some functionality changes, then the tester will do a quick check of the product build to determine whether the product is eligible for further software testing or not. This is known as sanity testing.

Objective of sanity check are,

  • To verify and validate the essential functionalities of the product
  • Evaluate any new functionalities or changes made
  • Ensure that the new changes don’t affect the existing functionalities
  • Test the rational thinking and logic implementation of developers

As it is a quick process of testing an application, scripting of test cases is not required. The process involved in sanity testing are,

  • Identify new functionality, features and changes involved in the code if any
  • Identified features and functionality are evaluated to verify their intended and proper functionality
  • Test all the depended parameters, associated functionality to ensure their appropriate functioning

Smoke Test

Some test is a high-level testing performed during the initial software build to make sure that the critical functionalities of the software or program is working properly. It is done before any detailed functional or regression testing executed on that particular software build. The process of smoke test targets all key features and it is often consider as a cost-effective approach because it is just checking the basic functionalities of the software build. Smoke testing is also known as build verification testing or build acceptance testing.

Smoke testing is done,

  • By developers before giving the build to testing team
  • By testers they start the detailed testing
  • When the new functionalities of software are developed

Difference between Sanity and Smoke Testing

Smoke TestSanity Test
Smoke test is done to make sure the critical functionality is working fineSanity test is to test the new functionality/ bug have been fixed
Objective is to verify the stability in order to proceed with further testingObjective is to verify the rationality in order to proceed with further testing
Performed by both developer and testerUsually performed by tester
Smoke testing is usually documented or scriptedNot documented or scripted
It is a subset of acceptance testingIt is a subset of regression testing
Smoke testing done to the entire system from end to endSanity testing is only done for a particular component of the entire system
It is like a general health check upIt is like a specialized health check up

SpeckFlow

SpeckFlow is an open source tool, is a part of Cucumber family which helps us to write the automated test cases in human readable format. Gherkin is used to write the feature files which supports English language.

SpeckFlow consist of a Feature file and a HookUp file. Feature file is nothing but the English version of the automated test cases. Each test case in the feature file is called scenarios. A feature file can have multiple scenarios. Each of these scenarios in the feature file is connected to the Selenium Nunit C# code through the HookUp file. HookUp file also consist of C# code.

A Feature File consist of a header for the file and the element includes a name and high level definition of the corresponding feature of that application. Each Feature file consist of multiple scenarios which includes multiple steps.

There are three types of steps in scenarios, preconditions, actions or verification steps. These steps start with a keyword called Gherkin keyword. They are Given, When and Then respectively and the subsequent steps of the same type can be written using And and But keywords.

These scenarios are then used to create the Step Definition or Hookup between Feature file and Selenium Nunit automated test cases. A tag name can be assigned to features and scenarios. Tag names are used to categorize the scenarios like the test cases that needs to be executed in Chrome can be tag as @Chrome, or the test case that need to be automated can be tag as @automated.

Automation Testing…What, Why, How, When?

What is testing? What are the different ways a software can be tested?

Software testing is the process of finding and preventing failures and defects to provide a high-quality product that meets all the requirements of all the stakeholders. Testing can be done in two ways; one is Manual Testing and the other is Automation Testing.

What is Manual Testing?

Manual testing is done by a human manually by sitting In-front of the computer and executing each test case and comparing the actual test result with the expected test result and provide the test report.

What is Automation Testing?

Automation testing is executing the same test cases with the help of an automation test tool. The automation software can enter the input data into the system under test and compare the expected result and actual result and generate a detailed test report.

Why Automated testing?

  • Manual testing is time consuming.
  • Automation testing does not need any human intervention, so the testing can be done unattended.
  • Automation increases the speed of test execution.
  • Automation increases the test coverage.

Which test case to be Automated?

  • Test cases that are executed repeatedly.
  • Test cases with high risk which may affect the business critically. (Example: login validation)
  • Test cases which are prerequisite to some other test cases.

Test cases that are not good to automate.

  • Test cases that are newly automated and not executed manually atleast once.
  • Test cases for which the requirements are frequently changing.
  • Test cases which are done on an ad-hoc basis.

When do we run the automated test cases?

  • When the software is in the production stage and a minor bug is fixed, then instead of running the whole bunch of regression test a sanity check can be conducted to check the stability of the application which includes all the features of that application. This sanity test can be automated test cases.
  • When a new feature is added to the QA environment, the QA team will run a sanity test before testing the feature to ensure that the application is stable enough to do the testing. This sanity check can be automated.
  • Other than Sanity testing, automation can be done in different situations such as Smoke testing, regression testing, and also it varies depends on the project and test cases.

Test Plan

Test Plan is a document that describes the scope, approach, resources and schedule of test. The success of a testing project always depends on a well-written test plan. Test Plan is a blue print of testing activities.

Test Plan is influenced by the test policy and test strategy of the organization, the development life cycle and methods being used, types of testing etc. Test Planning is a continuous activity throughout the project. Feedback from test activities should be used to identify the changing risk and so the test plan can be adjusted.

Test Plan can be documented into different types,

  • Master Test Plan: It is a single high-level test plan that defines all the test activities
  • Testing Level Specific Plan: Plans for each testing types like
  • Unit Test Plan
  • Integration Test Plan
  • System Test Plan
  • Acceptance Test Plan
  • Test Type Specific Test Plan: Plans for major types of test plans like,
  • Performance Test Plan
  • Security Test Plan

Test plan document is shared with the Business Analyst, Project managers, Developers and all the other stake holders to review, which helps the QA Team to create a high-quality Test Plan document that can deliver a more successful test result.

Serverless Architecture

Serverless Architecture also known as Serverless Computing are applications that build, run and serviced with having to manage an infrastructure. The application will run on a third-party server. Hence it is also known as Function as a Service (FaaS). It eliminates infrastructure management tasks such as server or cluster provision, patching, operating system maintenance and capacity provision. Applications are broken down into individual functions that can be invoked and scaled individually.

The cloud service providers like AWS and Microsoft provide us a virtual server which can be used to host a software application so it will help to avoid the requirement of physical hardware such as servers, but still some level of management of operating system and web server software management is required.

But with a serverless architecture a developer can fully focus on the code. The service providers such as AWS Lambda, Microsoft Azur Functions will take care of all the physical hardware, virtual machine operating system and web server software management.

STLC – Software Testing Life Cycle

Software Testing Life Cycle is defined as the different steps or phases that occurs during the testing process of a Software. Each phase is carried out in a planned and systematic way and all these phases have its own goal.

As shown in the picture above the different phases of Software Testing Life Cycle are,

  • Requirement Analysis
  • Test Plan Creation
  • Environment Setup
  • Test Case Execution
  • Defect Logging
  • Test Cycle Closure

Each of these steps has its on Entry and Exit criteria. Before entering to a Testing phase entry criterion has to meet and also before exiting the current testing phase it has to met the exit criteria too.

Requirement Analysis

This is the very first and important phase of testing. In this stage testing team has to put their full focus to learn and understand the requirement of that particular product from the point of view of a tester. They have sit along with all the other stakeholders to understand the requirement in detail.

Based on the understanding they obtained from the requirement study, they have to do different types of activities such as,

  • Identify the different types of test to be performed
  • Understanding the priorities and focus
  • Prepare Requirement Traceability Matrix or RTM (RTM is nothing but a document that maps user requirement with test cases. Main purpose of RTM is to make sure that all the test cases are so that no functionality is missed while testing the product.)
  • Identify Test environment details
  • Understand the feasibility of automation testing

Based on the activities carried out during phase teeter has to deliver RTM and Automation feasibility report as the outcome.

Test Planning

This phase is usually done by a Senior QA Manager. He will determines the effort and cost estimates for the project and he will prepare and finalize the test plan and he determines the test strategy.           

The activities carried out during this phase are,

  • Preparation of test plan/test strategy
  • Test tool selection
  • Test cost and effort estimation
  • Resource planning and determining roles and responsibilities
  • Identifying training requirement

Deliverables and Outcomes of this phase are,

  • Test Plan/ Test Strategy document
  • Effort estimation document

Test Case Development

After the test plan is finalized QA team initiates the development of test cases. Once the test case is developed the Business Analyst will review and rework if any modification is required and then sign off the test cases.

Once the BI signed off the test cases QA team will prepare the Test Data.

Activities included in this phase are,

  • Test Scenarios Identification such as identifying the motive of different users eg:-Hackers.
  • Test Case Writing – Test cases are documented including test data, expected results
  • Test Data Preparation

Test Environment setup

Test environment includes the elements that support the execution with software, hardware, network configurations etc. This includes the combination of both hardware and software, configuration of hardware, OS setting, Software configuration etc. Readiness of environment setup is validated by smoke testing.

Activities involved in this phase are,

  • Design Test Environment
  • Setup of the Environment
  • Conduct smoke testing

Test Execution

This is the phase were the real testing is happening. Here the QA team will execute the test cases they have prepared and compare the expected result with the actual result. Testers will report the bugs if any, prioritize the issues, resolve blocking issues as they arise.

Activities included in this phase are,

  • System Integration testing (SIT) – It is a black box testing technique that evaluates systems compliance against test cases.
  • Defect Reporting – A bug arises when the expected result doesn’t match with the actual result. These bugs are reported to the concerned team members.
  • Defect Mapping – Once defect is reported and logged, it should be mapped with the concerned test case and RTM.
  • Re-Testing – This is done to check whether a bug is resolved or not.
  • Regression Testing – This is done after closing all the test cases. Regression Testing is a black box testing to check the overall product after closing of all the test cases.

Test Cycle Closure

Before signing off from the test process, the product quality is measured against the test completion criteria. Before closing test, process team has to make sure that there are no critical issues.

A Test Completion Report is created which indicates the quality, measures outstanding risks, and identifies the level of a tested software.

While executing the test case, re-testing defects and performing regression test case, these data is saved to produce a test result document to support the completion of test execution.

SDLC – Software Development Life Cycle

SDLC is a very familiar term for those who are a part of software industry and also those who wish to become a part of it. SDLC is nothing but Software Development Life Cycle. SDLC defines different phases that involves in software development.

 Planning and Requirement Analysis

The very first stage of a software development is ‘Planning and Requirement Analysis’. The sales department in an industry will collect all the information and requirements from the customer. This stage is used to identify risks associated with the project and also quality assurance requirement.

Defining Requirement

Once the requirement analysis is completed then the next step is to create an SRS (Software requirement specification) document and then get the confirmation and approval from customer or market analyst.

Designing the product Architecture

This is one of the main steps in Software Development Life Cycle. This step decides the whole structure, style, look and feel of an application or software. The product architects make us of SRS to design the product.

Usually Product Architects will create more than one design in the form of DDS(Design Document Specification). And then all the stakeholders will review and finalize one among that. Finalizing a design is based on different factors such as risk, product robustness, design modularity, time constraints and budget

Building or Developing Product

This is the real step where development starts. Developers will use different types of programming languages for coding. The programming language is chosen based on the type of software being developed.

Testing the Product

This step is usually a subset of all the stages as in the modern SDLC models. Testing is involved in all the stages of SDLC. All the bugs, issues, defects are tracked, reported and solved in this stage. After fixing all the issues the tester will test the whole product. And this process will continue until a product reaches the quality standard defines in SRS.

Deployment of the Product

Once the product is tested ready to release, then the company will deploy product in appropriate market. Sometimes the deployment will happen in multiple stages based on the requirement.

My First Blog

This is my first blog. So I would like to introduce myself to you. I am Dona Emily Thomas. I did Bachelors in Electronics and Communication Engineering. After my degree I started working with a bank as a Software tester (Manual Tester). I worked there for two years and eight months. After that I moved to New Zealand. Now I’m doing Software Test Analyst Job ready Program with Industry Connect.

Design a site like this with WordPress.com
Get started