关键词
覆盖(coverage)、调试(debugging)、缺陷(defect)、错误(error)、失效(failure)、质量 (quality)、质量保证(qualityassurance)、根本原因(root cause)、测试分析(test analysis)、测试依据(test basis)、测试用例(test case)、测试结束(test completion)、测 试条件(test condition)、测试控制(test control)、测试数据(test data)、测试设计(test
design)、测试执行(test execution)、测试执行进度表(test execution schedule)、测试实施 (test implementation)、测试监督(test monitoring)、测试对象(test object)、测试目标 (test objective)、测试结果参照物(test oracle)、测试计划(test planning)、测试规程 (test procedure)、测试套件(test suite)、测试(testing)、测试件(testware)、可追traceability)、确认(validation)、验证(verification)
软件测试基础的学习目标
1.1 什么是测试?
FL-1.1.1 (K1) 识别典型的测试目标
FL-1.1.2 (K2) 区分测试与调试的不同
1.2 为什么需要测试?
FL-1.2.1 (K2) 给出为什么需要测试的例子
FL-1.2.2 (K2) 描述测试与质量保证之间的关系,举例说明测试是如何提高软件质量的
FL-1.2.3 (K2) 辨别错误、缺陷和失效
FL-1.2.4 (K2) 辨别引起缺陷的根本原因及其影响
1.3 七项测试的基本原则
FL-1.3.1 (K2) 解释测试的七项基本原则
1.4 测试过程
FL-1.4.1 (K2) 解释测试过程中的环境影响
FL-1.4.2 (K2) 描述测试过程中的测试活动和各自的任务
FL-1.4.3 (K2) 区分用于支持测试过程的工作产品
FL-1.4.4 (K2) 解释在测试依据和测试工作产品之间保持可追溯性的价值
1.5 测试的心理学
FL-1.5.1 (K1) 识别影响测试成功与否的心理因素
FL-1.5.2 (K2) 解释测试活动所需的思维方式和开发活动所需的思维方式之间的差异
软件开发,包括软件测试,都涉及到人的参与。因此,人的心理对软件测试有着重要的影响。
不论是在静态测试时识别缺陷,例如需求评审或用户故事细化,又或者是在动态测试执行时识别失效,都可能会被看作是对产品及其作者的批评。人类心理学中有个叫做“确认偏见”的原理,会让人难以接受与目前所持有的信仰相悖的信息。例如,由于开发人员希望他们的代码是正确的,但是他们存在确认偏见,这使得他们很难接受代码是错误的。除了确认偏见之外,其他的认知偏见都可能使得人们难以理解或接受测试产生的信息。而且,指责坏消息的传递者是人类的共同特征,而测试产生的信息往往包含了坏消息。
虽然测试对项目进展和产品质量有很大的贡献,但是由于这些心理因素,还是会有人认为测试是一种破坏性的活动。为了减少这些观念所带来的影响,应该以建设性的方式去沟通关于缺陷和失效的相关信息。这样就可以缓解测试员和分析人员、产品所有人、设计人员和开发人员之间的紧张关系。这同时适用于静态测试和动态测试。
测试员和测试经理需要有良好的沟通技巧,才能够有效地沟通缺陷、失效、测试结果、测试进度和风险,并与同事建立积极的关系。良好沟通方式的例子包括:
⚫ 从合作而不是争斗的方式开始项目。提醒项目的每位成员,大家的共同目标是追求更高质量的系统。
⚫ 强调测试的好处。例如,对于作者而言,缺陷信息可以帮助他们改进他们的工作产品和他们的技能。对于组织而言,测试过程中发现并修复缺陷可以节省时间和金钱,并降低产品质量的总体风险。
⚫ 以中性的、以事实为中心的方式去沟通测试结果和其他发现,而不要去指责引入该缺陷项的人员。编写客观且实际的缺陷报告和评审发现的问题。
⚫ 尽量理解其他成员的感受,以及他们为什么对信息反应消极的原因。
⚫ 确认其他成员已经理解了你的描述,反之亦然。
前面讨论了典型的测试目标。清楚地定义正确的测试目标具有重要的心理暗示作用。大多数人倾向于将他们的计划和行动与团队、管理人员和其他干系人设定的目标保持一致。同样重要的是,测试员要以最低限度的个人偏见去坚持这些目标。
开发人员和测试员通常有不同的想法。开发的主要目标是设计并构建一个产品。如前文所述,测试的目标包括验证和确认产品,在发布之前发现缺陷等。因为这些不同的目标,就需要不同的思维方式。将这些不同的思维方式结合在一起,有助于提高产品的质量。
思维方式反映了个人的假设以及作出决策和解决问题的首选方法。测试员的思维方式应该包括好奇心、职业的悲观主义、批判性的眼光、对细节的关注,以及良好和积极的沟通和人际关系的动机。随着测试员经验越来越丰富,测试员的思维方式也在不断成长和成熟。
开发人员的思维方式中可能会包含一些测试员思维方式中的元素,但成功的开发人员通常对设计和研究解决方案更感兴趣,而不是去考虑这些解决方案中可能存在的问题。此外,确认偏见使他们很难在自己的工作中发现错误。
有了正确的思维方式,开发人员就可以自己测试自己的代码。不同的软件开发生命周期模型,通常有不同的组织测试员和测试活动的方式。由独立的测试员进行的一些测试活动可以提高缺陷检测的有效性,这对大型、复杂或安全关键系统尤其重要。因为测试员与作者有不同的认知偏见,所以独立的测试员带来的视角不同于工作产品的作者(例如,业务分析师、产品负责人、设计师和程序员)。