Skip to main content

Software Testing - An Overview

Software testing is a process that is implemented to check the quality and result of the software or application being developed. 

It is done to allow the companies to understand and appreciate the risks that are involved during software implementation. 

It helps to point out the defects and errors that were made during the development phases and is used to makes sure of the customer reliability and satisfaction in the application.

Testing allows developers to deliver software that meets expectations, prevents unexpected results, and improves the long term use of the application.

It also depends the purpose of testing and the software requirements, the appropriate methodologies are applied.
  
Test techniques include the process of executing a program or application with the intent of finding bugs,errors or other defects, and verifying that the software is fit for use.

You need to verify that the completed software package functions according to the expectations defined by the requirements specifications. 

The objective to not to find every software bug that exists, but to uncover situations that could negatively impact the customer, usability and maintainability. 

Depending upon the purpose for testing and the software requirements, a combination of testing methodologies is applied.

One of the most important areas of testing is regression testing and fault tolerant testing.

Module testing verifies that individual software unit performs as expected according to the requirements using a small subset of possible input parameters.

 At the application level, it makes sure the entire application functions together according to the requirements while clearing real world parameters as well as valid but unusual parameters.

At the module level, testing verifies that individual software unit performs according to the requirements for the full range of valid input parameters.

It needs to be at its minimum, maximum and median values, as well as passing in parameters at the minimum and maximum values at the same time.

Module testing verifies that individual software unit does not perform in a detrimental or unexpected manner for illegal or those not within input parameters.

At the application level, testing verifies that the entire application functions together in a graceful manner according to the requirements when presented with unexpected values.

Integration testing is an additional step that is used when different sub-systems are being developed simultaneously by independent developers.

It verifies that the parameters passed between sub-systems are being handled correctly.

Regression testing is retesting units to insure that modifications to unit does not cause unexpected results in another unit and this is known as ripple effect testing.

It is done because many times modifications in one part of the code cause unexpected problems in a totally unrelated area of the code.

Functional testing at the unit, integration or system level is often done manually during during early development phases.

Manual tests are needed when developers are exploring implementation choices and testers are performing risk analysis and designing subsequent test tactics.

Tests at this stage have a short half-life, and the advantages of human cognitive skills and intuition are more valuable than high-maintenance automated test suites.

When it begins to emerge up until final release is time to apply manual testing also as the user interfaces frequently are in a constant state of flux right up until the final stages of development.

 Also the usability and aesthetics of the UI require human cognitive skills to evaluate for both these reasons, it is difficult to utilize automated testing methods.

Manual testing of software even by non-technical staff is possible at any stage of development as this sort of testing leads to the discovery of unexpected defects into how the software could be improved.
Exploratory testing is best done manually and is cost-efficient for tests run only a few times.

It is most effectively done by humans and can only be evaluated by human testers.

Automated testing is universally applied to build regression testing for the purpose of validating that new code changes have not resulted in new defects once the integration phase has been reached.

This is the starting point for a formal test automation process, although earlier automation at the unit test level is also possible.

Automation is very useful for any kind of highly repetitive tests, it can be divided and run in parallel to save time, automation is also the preferred method over hiring teams of manual testers.

 In order to run performance or load tests that simulate hundreds or thousands of concurrent users or transactions, automation is essential.

Although there are record and playback tools that generate test scripts via user interface interactions, these are not typically the best use of automation because of the fragility of the test scripts if the UI is undergoing even slight changes.

It is especially inappropriate if the purpose of the UI test scripts is actually to test layers below the UI. Those should be tested directly via APIs.

There is more code covered in a shorter time using automation and it can allow non-technical staff or customers to run tests.

Automation enables time savings due to parallelization of test execution and tests can simulate thousands of users and configurations easily

Automation and maintenance of test suites requires significant investment in tools and skills and cannot replace human cognitive skills required for evaluating software’s user interface.

No software organization can test their products solely via manual testing these days nor can they hope to achieve 100 percent test automation, given the limitations of automation in some areas.

It is the in-between spaces where the effectiveness and costs of both approaches must be carefully evaluated as it leads to the most sensible choices relative to the capabilities of the organization.

 Informed decisions to automate testing where possible typically lead to better test coverage and improved product quality.





Comments

Popular posts from this blog

Coding Explained

Code can be defined as a set of instructions in a language that computers can understand; and it is what makes it possible for us to create different computer software, apps and websites that we use including the browser, the operating system, the apps present on your phone, social media sites etc. are all made with code.   Computer coding is a process that leads from an original forming of a computing problem to a computer program that works. Codes play an important role in our lives as code is what makes computers work and computers are integrated with many objects and electronic devices that we use daily like phones, watches, microwaves and cars. People who code are known by different names such as coders, programmers, developers, computer scientists, software engineers, etc. Computers are nothing but machines that run on binary code written in 1s and 0s which is very difficult for humans to work with. Computers like people can understand different la...

Culture conflict in globalization

Globalization is a phenomenon that has made its presence felt in our daily lives and has changed the way we live and has led to the interaction between diverse cultures through convergence of world views, products and ideas, whereby cultural conflict can make or break a business that is trying to establish itself in a foreign country. One of the strategies that make a difference when it comes to establishing a successful presence in a foreign land is effective communication. This includes not just language and does not include only English as although English is the global language of doing business, many countries prefer to function in their local language which can be a cause for concern but this problem is minimized as most countries have a sizeable population who are bilingual and are comfortable with using English despite the fact that it is not their mother tongue. Non-verbal communication also plays an important role and one needs to be aware of the cultural nuances and cu...

Smartwatches - How They Work

A  smartwatch  can be described as a mobile device with a touchscreen display that is designed to be worn on the wrist for daily use. It comes with an a compatible smartphone app that provides for management and telemetry such as long-term bio monitoring. Smartwatches have become popular among gadget lovers as more companies that are manufacturing smartwatches including the traditional watch companies due to its large market.  What is it that makes smartwatches different from other gadgets so you can decide you should buy one or not.  Are smart watches worth buying when  the primary function of a watch  is showing you the time.  In case of a smartwatch, the most important function is to show you the notifications and you will have a quick access to them.  It allows you to read a message that you receive or checking out a social media notification without picking up your mobile phone. If you are busy and spend a lot of time outdoors, it...