测试人员能否有效进行软件测试的设计,是进行高效测试的关键因素之一。但在实际的软件测试设计过程中,测试人员面临各种各样的问题,而这些问题的存在给软件测试设计活动带来了极大的挑战。软件测试设计面临的问题主要包括以下四类。
1)测试对象的逻辑路径和测试输入数据的组合几乎是无穷的,而穷尽测试是不可能的。
即使是规模很小的软件或者软件产品,其逻辑路径和输入数据的组合也几乎是无穷的。假如测试人员想对测试对象进行完全的检查和覆盖,那基本上是不可能的,这是国际软件测试认证委员会ISTQB大纲中提到的一条测试基本原则:穷尽测试是不可能的。
面对测试对象中几乎无限的逻辑路径和软件输入数据的组合,如何有效选择和确定测试用例且满足测试覆盖率要求,是测试人员在测试设计过程中面临的一类重要问题。针对测试设计而言,该类问题主要表现在:
◆ 如何有效减少测试用例的数目?
◆ 如何避免测试用例之间的冗余?
◆ 如何满足测试覆盖率的要求?
2)不同利益相关者对软件或者软件产品的质量要求是不同的。
尽早和尽量多的发现软件或者软件产品中的缺陷,是测试的重要目的之一。开发人员或者其他利益相关者修复缺陷,并经过测试人员的确认测试和回归测试,可以不断的提高软件产品的质量。但是,在测试过程中没有发现缺陷,并不代表测试对象是高质量的软件产品,或者用户/客户会接受该产品。
根据Jerry Weinberg对质量的描述:“Quality is the value to some person(质量是可以为某人提供的价值)”,从中可以看出质量是带有内在主观性质的:对于同一个产品,不同的利益相关者对质量的理解和要求是不一样的。因此,测试人员在软件测试过程中,需要站在不同的利益相关者的角度,对测试对象的质量进行检查和验证。
通常而言,软件产品的利益相关者在测试过程中扮演着有不同的角色,例如:项目经理、产品经理、客户/用户、操作员等。测试人员如何在测试过程中尽量多的考虑不同利益相关者对软件产品质量的要求和理解,是他们面临的另一类问题。针对测试设计而言,该类问题主要表现在:
◆ 如何获取利益相关者的不同质量要求?
◆ 如何设计测试用例以满足不同的质量要求?
◆ 如何分析和评估终软件产品的质量?
◆ 如何提高客户对软件产品的满意度?
3)测试时间和测试资源总是非常有限的。
在实际的测试过程中,测试人员面对的测试范围和测试用例数目通常都是非常庞大的,而测试时间和测试资源却都非常有限。多年的测试实践经验表明,测试团队往往很难获得测试计划中预留的测试时间,当软件开发和测试的时间发生冲突的时候,测试团队常常被要求压缩测试时间;同时,测试过程中的测试资源限制,例如:测试平台、测试人员的限制,使得测试团队只能在有限的条件下开展测试活动。
在这种情况下,如果没有良好的测试思想和技术的支撑,想要有效开展测试活动总是显得力不从心。针对测试设计而言,该类问题主要表现在:
◆ 如何有效的选择测试重点?
◆ 如何确定测试优先级?
◆ 如何有效的配置测试资源?
◆ 如何分析和评估测试的有效性?
4)测试人员面对的需求经常是不完善的、经常变更的。
软件或者软件产品的需求规格说明是测试人员进行测试设计和执行的基础,需求规格说明的准确性、完备性、可测试性等特性对成功进行测试非常重要。而实际的测试过程中,测试人员面对的需求规格说明常常是不全的、经常变更的,甚至没有任何需求文档。
测试人员不能因为需求不完善之类的问题,拒绝测试,或者仍旧保持这样的测试理念:测试仅仅依赖于需求规格说明,测试人员只要按照需求规格说明进行测试用例设计和执行,并覆盖了所有的需求条目,即认为达到了需求的覆盖率。相反,测试人员在面对此类问题的时候,必须查找有效的测试技术和手段继续进行测试,以保证测试的有效性和测试质量。针对测试设计而言,该类问题主要表现在:
◆ 如何获取尽量多的显现需求和隐现需求?
◆ 如何利用已有的经验有效设计测试用例?
◆ 如何应对需求的不断变更?