Thinking Software Testing


Thinking Software Testing
The primary goal of testing is to improve Quality of end product. No! No! I am not saying its only responsibility of (quality) engineers. Rather I feel that it is a collaborative job where every individual working on any piece of software at hand is responsible for end product / outcome. This individual could be program manager or product manager (some organizations may have both mixed with single role / title) who is managing release program or software development engineer who is writing a code or software quality engineer who is verifying/testing the code or document writers working on product documentation. The best analogy that I can think of is aircraft. If any one of the functions that we described (as example) in above roles does not produce quality outcome then aircraft may never fly due to prolong delays or it may malfunction immediately before/after takeoff or after prolong operation in air :) or incorrect documentation that may create trouble while flying. The later three are bit scary!!!

Every individual who is part of product release should strive to maintain quality of outcome in his own capacity with strict controls. Controls that ensure quality from different perspectives. I could think of different perspectives by answering following questions,

1. Customer 
- How easily customer can deploy our software product? How smooth is upgrade process in case of new release?
- After installation, how much time does our software product take to become fully functional? Does it preserve previous customer configuration and works as expected?
- How easy to configure our software product?
- How many features does customer really needs?
- How our software product/outcome will be used and in which environment?
- What are different software product configurations customers may deploy?
- How much stress will be applied to each of the software product configuration in customer environment?
- Is there any proactive mechanism in place to alert customer of possible near-time issues/problems with deployed configuration?
- How much cost savings customer brings in if s/he decides deploys our software product?
- Does software function as it is intended to function over prolonged and continuous usages in all supported configurations?
- Does our software product cause downtime to itself and any other products in its ecosystem?

2. Engineering
- Does software product undergo full functional testing?
- What are the domains of expertise needed to test our product? If there are no in-house expertise or subject matter experts not available then how to bring expertise to test the product?
- What are the different customer problems that our software product solves?
- What are the ideal performance numbers in terms of load testing and stress testing?
- Are these performance numbers are documented in product documentation?
- Do any of the new features have caused possible regressions?
- How much automation is in place to identify regressions as quickly as possible and to speedup the testing process in future releases?
- How agile is overall development process?
- Does change control mechanism is in place?
- Does software test repository is actively maintained and tracked?
- What should be the ideal functional and conditional code coverage?
- What is the mechanism to deliver a fix if there is critical bug found while in-house testing after product is generally available (GA) or at customer site?
- What should be the ideal response time to deliver critical fixes?

3. Market
- What are the advantages (features) over other competing software products?
- Does this release time the market or is it really needed?

I have added market perspective above because I feel that if software product does not sell then it is very difficult to prove that it is a quality product. :) I am sure that there are many other areas that are left untouched. Feel free to add your comments that stimulate thinking in testing.

Note: We at TechSutram take our ethics very seriously. More information about it can be found here.
Mandar Pise Opinions expressed by techsutram contributors are their own. More details

Mandar is a seasoned software professional for more than a decade. He is Cloud, AI, IoT, Blockchain and Fintech enthusiast. He writes to benefit others from his experiences. His overall goal is to help people learn about the Cloud, AI, IoT, Blockchain and Fintech and the effects they will have economically and socially in the future.

2 comments:

  1. Actually, to go justify a software 1st they have to be knowledge about the software testing because it is very essential and effective for software. By visiting you website i have known about the thinking software testing.

    Anthony

    ReplyDelete
  2. The questions in the article explains pretty clear about,
    Why software testing is needed?
    Why software quality should also be treated of great importance.

    Very nice share. Thanks!
    Regards,
    Software Testing Services

    ReplyDelete

    Your valuable comments are welcome. (Moderated)