A Glance at Software Testing

A Glance at Software Testing

If you're embarking on your software development journey, the realm of testing is a crucial aspect to comprehend. In my initial foray into software development, testing wasn't a focal point; I was more concerned with mastering the fundamentals and creating software to share with friends and family. The turning point occurred when I eagerly shared my newly developed software with my mentor, only to discover that it didn't perform as expected.

Despite having manually tested the product, including API endpoints and the front end, I realized there was much more to explore. The beauty of my curiosity lies in its ability to diagnose issues and find solutions. In my quest for answers, I uncovered different types of testing that should have been performed and those to consider in the future.

Crucially, testing isn't reserved for the end of a development life cycle—it's integral from the genesis of the development cycle. This means testing is conducted throughout a product's development. Let's delve into various testing types:

  1. Unit Testing: This involves automating the testing process for units of a software program. An example is the login logic of an application. The traditional approach is to manually test the logic as developers. For TypeScript or JavaScript developers, consider automating this process using a library such as @Jest or @Mocha.
  2. Integration Testing: After different units of a product have been tested separately, they need to be integrated to work together. Testing the flow of data between units is crucial. If you are working on an authentication system, you should test the receipt of login details and the generation of tokens for those using JWT.
  3. Regression Testing: After adding a new feature or modifying a certain feature, regression testing is performed to identify anything that might have broken due to the new changes.
  4. System Testing: System testing is a phase in the software testing process that evaluates the complete and integrated system to ensure it meets specified requirements. It is conducted after the completion of unit testing, integration testing, and other testing phases. This phase assesses the entire software system, considering all its components, modules, and interactions.
  5. User Acceptance Testing (UAT): Each software product is designed to solve a business problem; hence, the software must meet its intended purpose. User Acceptance Testing (UAT) is conducted to validate whether the software meets end-users expectations and requirements.

While these are not an exhaustive list of testing types, they represent areas I researched and applied in a recent project. It's essential to recognize that although testing is indispensable, complete testing of a product is impossible due to factors such as

  • The number of possible inputs is very large.
  • The number of possible outputs is very large.
  • The number of paths through the software is very large.
  • The software specification is subjective. You might say that a bug is in the eye of the beholder.

For further exploration, refer to the following resources:

要查看或添加评论,请登录

McDonald Musimwa的更多文章

社区洞察

其他会员也浏览了