Software Testing

Ranjan Bajracharya
6 min readDec 19, 2017

Software testing is a process of executing a program or application with the intent of finding the software bug. Testing assesses the quality of the product. In the software development life cycle it comes before implementation of software. It can also be stated as the process of validating and verifying that a software program or application or product:

  • Meets the business and technical requirements that guided it’s design and development
  • Works as expected
  • Can be implemented with the same characteristic.

Verification

Verification is the process to make sure the product satisfies the conditions imposed at the start of the development phase. The usual definition can be “ Are we building the right system?”.

Validation

Validation is the process to make sure the product satisfies the specified requirements at the end of the development phase. The usual definition can be “Are we building the system right?”.

Myth with software testing!!!

Testing is too expensive

Testing is Time-Consuming

Only Fully Developed Products are Tested

Complete Testing is Possible

A Tested Software is Bug-Free

Testers are Responsible for Quality of Product

Anyone can Test a Software Application

A Tester’s only Task is to Find Bugs

Necessities of Software Testing

Software Testing is necessary because we all make mistakes. Sometime those mistake can be expensive or dangerous and unimportant . So, we need to check every thing to make it error free. Some important reasons for software testing are:-

  1. Software testing is required to point out the defects and errors made during development phase.
  2. It is very important to ensure the Quality of product.
  3. To avoid user detecting issues.
  4. To prove that the software has no fault.
  5. To ensure stored and processed data is protected from unauthorized access.
  6. To increase reliability and quality of the software.

Software Testing Types

Manual Testing :- Manual testing includes testing a software manually, i.e without using any automation tool or any script. In this method the tester plays an important role of end user and verifies that all the features of the application are working correctly. Manual testing does not require knowledge of any testing tool. Types of manual testing:-

  1. Unit testing
  2. Integration testing
  3. System testing
  4. User acceptance testing

Automation Testing :- Automation testing, which is also known as Test Automation, is when the tester writes scripts and uses another software to test the product. The automation software can also enter test data into the System Under Test, compare expected and actual results and generate detailed test reports. It saves time, cost and manpower to test the product.

Suitable Condition for Automate Test

  1. Larger and critical projects
  2. Projects that require testing the same areas frequently
  3. Requirements not changing frequently

Unsuitable condition for Automation Test

  1. Test Cases that are newly designed and not executed manually atleast once.
  2. Test Cases that are newly designed and not executed manually at least once.
  3. Test cases which are executed on ad-hoc basis.

Software Testing Tools

  • HP Quick Test Professional
  • Selenium
  • IBM Rational Functional Tester
  • SilkTest
  • TestComplete
  • Testing Anywhere
  • WinRunner
  • LoadRunner
  • Visual Studio Test Professional
  • WATIR

Testing approaches

Black-Box Testing

The technique of testing without having any knowledge if the interior workings of the application is called black-box testing. Main focus in this testing is on functionality of the system as a whole. The term ‘behavioral testing’ is also used for black box testing. The tester is unknown to system architecture and source code. Tester interacts with systems’s user interface by providing inputs and examining outputs without knowledge how and where the inputs are working upon.

Advantages of Black Box Testing
– Tester can be non-technical.
– Used to verify contradictions in actual system and the specifications.
– Test cases can be designed as soon as the functional specifications are complete

Disadvantages of Black Box Testing
– The test inputs needs to be from large sample space.
– It is difficult to identify all possible inputs in limited testing time. So writing test cases is slow and difficult
– Chances of having unidentified paths during this testing

White-Box Testing

White-box testing is the detailed investigation of internal logic and structure of the code.White-box testing is also called glass testing or open-box testing. In order to perform white-box testing on an application, a tester needs to know the internal workings of the code.

Advantages of White Box Testing

  • Code optimization by revealing hidden errors
  • Transparency of the internal coding structure which is helpful in deriving the type of input data needed to test an application effectively
  • Covers all possible paths of a code thereby, empowering a software engineering team to conduct thorough application testing
  • Enables programmer to introspect because developers can carefully describe any new implementation

Disadvantages of White Box Testing

  • A complex and expensive procedure which requires expertise in programming and understanding of internal structure of a code
  • Updated test script required when the implementation is changing too often
  • Exhaustive testing becomes even more complex using the white box testing method if the application is of large size

Grey-Box Testing

Grey-box testing is a technique to test the application with having a limited knowledge of the internal workings of an application. In software testing, the phrase the more you know, the better carries a lot of weight while testing an application.

Types of Testing

1)Alpha Testing

This is a form of internal acceptance testing performed mainly by in-house software QA and testing teams. It is the last testing done by test team at development site after the acceptance test and before releasing the software for beta test.During this phase, the following aspects will be tested in the application:

  • Spelling Mistakes
  • Broken Links
  • Cloudy Directions

2)Beta Testing

This is a testing stage followed by internal full alpha test cycle. This is the final testing phase where companies release the software for few external user groups outside the company test teams or employees.The initial software version is called as beta version. In this phase, the audience will be testing the following:

  • Users will install, run the application and send their feedback to the project team.
  • Typographical errors, confusing application flow, and even crashes.
  • Getting the feedback, the project team can fix the problems before releasing the software to the actual users.

3)Unit Testing

Unit testing is the testing of an individual unit or group of related units.It falls under the class of white box testing. This type of testing is performed by developers before the setup is handed over to the testing team to formally execute the test cases.

4)Integration Testing

Integration testing is defined as the testing of combined parts of an application to determine if they functionally correct. Modules are typically code modules, individual applications, client and server applications on a network, etc. This type of testing is especially relevant to client/server and distributed systems.It may fall under both white box testing and black box testing.

5)Load Testing

It is a process of testing the behavior of a software by applying maximum load in terms of software accessing and manipulating large input data.Load testing helps to find the maximum capacity of the system under specific load and any issues that cause the software performance degradation. Load testing is performed using tools like JMeter, LoadRunner, WebLoad, Silk performer etc.

6)Acceptance Testing

Acceptance testing is often done by the customer to ensure that the delivered product meets the requirements and works as the customer expected. It falls under the class of black box testing.It is the last phase of the testing, after which the software goes into production. This is also called as User Acceptance Testing (UAT).

7)Functional Testing

Functional testing is the testing to ensure that the specified functionality required in the system requirements works. It falls under the class of black box testing.The application is tested by providing input and then the results are examined that need to conform to the functionality it was intended fo

--

--

Ranjan Bajracharya

MSP 2017. Graduation in computer science and information technology. Studying MBA.