“只有底层逻辑,才是有生命力的。”
所以我们要来探讨一下:
软件测试的底层逻辑是什么?
1.对软件测试的基本认知
一句话来说明软件测试的基本认知,那就是:**基于对用户真实需求的理解,通过各种手段获得软件产品真实的、全方位的质量信息。**无论是验证软件功能特性是否满足需求、评估产品的质量还是揭示产品的质量风险,都是基于获得的有关产品的真实的质量信息做出判断的,而缺陷可以看做是这个活动过程中的副产品。
- 这里强调对用户真实需求的理解,一方面体现“没有用户就没有质量,质量相对用户而存在”,我们必须从用户角度出发来完成测试,另方面是用户的真实需求,而不是虚假的、错误的需求,业务的需求最终要分解成用户角色的需求,而系统的功能/非功能性需求也是为了满足用户的需求。
- 这里提到的“软件产品”不局限于程序,还包括数据、需求文档、设计文档、代码、用户手册、技术手册等。
了解了“什么是软件测试”之后,下面就可以讨论软件测试的底层逻辑。
2.软件测试的底层逻辑
软件测试的底层逻辑可以概括为三个问题的回答:
- 为什么测?
- 测什么?
- 如何测?
而且在回答这三个问题的过程中,要能适应不同的测试对象(如Windows/MacOS native应用、 web软件、移动app、嵌入式软件 )、不同的测试类型(如功能测试、性能测试、安全性测试、兼容性测试等)、不同的测试层次(如单元测试、集成测试、系统测试等)、不同的团队和不同的产品等,成为放之四海而皆准的答案。虽然上下文不同,会有不同的测试方法、技术和实践,但我们能抽象出它们的共同点。
基于这样的考虑,那下面就来回答这三个基本问题:
1.为什么测?
只要是人做的工作,就不能保证万无一失,会存在问题。如果软件带着问题出去,就很有可能给客户带来损失或让客户不满意,最终导致企业的利益受损。过去无数的质量事故,也证明了这一点,在交付给客户之前,软件需要得到充分的测试,否则后果严重。
2.测什么?
取决于交付的质量目标,即从质量目标出发,进行目标分解,然后针对每一个特地的子目标来确定要获得的有关被测对象的质量数据,从而确定其测试范围或测试项。如果再进一步,我们根据用户对质量特性、功能特性的感受不同来决定测试项的优先级。这部分属于测试分析的工作,并涉及测试风险和测试策略。
3.如何测?
就是找到获取被测对象的质量数据的方式、方法或手段,包括测试方案设计、场景设计、测试用例或测试数据等的设计。
也就是 F