1.5 测试设计思想
测试活动可以粗略划分为测试设计和测试执行两个子活动。测试设计指的是“从测试目标出发,制定一种实施测试的方案”。测试执行指的是“根据测试设计的方案,完成测试实施”。虽然具体的质量评估和缺陷检出工作都是在测试执行活动中完成的,但测试设计才是测试的灵魂。如何确认被测对象的正确性?怎样合理设定测试的范围?怎样才能高效地检出缺陷?怎样让测试的质量评估结论更可信?怎样确定测试准绳?这都是测试设计需要回答的问题。
本书为“测试”设定了宽泛的语义,从软件工程师对代码片段进行的测试,到质检人员对零件批次合格率的检验,再到集成电路工程师对电路设计模型的形式化验证,都可归入测试的范畴。在不同的场景下,测试有着不同的目标,譬如发现与用户需求的偏离、检查被测对象是否合规、评估被测对象在压力条件或恶意输入下的健壮性、度量性能或可用性等指标、估计生产环境中的可靠性等。测试活动的实施方式也是多种多样,有些会遵从可控的标准流程,有些则采用更灵活自由的探索式方式。
无论是何种目的、何种形式的测试,“观察”都是其最主要的行为内涵。一个优秀的测试者应该具备观察家的精神气质,沉静、深邃、执着、醉心于细节。
观察总是伴随着风险。获得联合国马丁·路德·金反暴力奖的动物学家珍妮·古道尔,为了观察黑猩猩,与丛林、风雨、野兽、疾病相伴,度过了三十八年的野外生涯。美联社记者安雅·尼德林豪斯把镜头对准阿富汗、伊拉克、波斯尼亚等地无人知晓的受害者,观察他们的濒死挣扎、人性与生活。获得普利策奖的她,最终在阿富汗的采访过程中殉职。
测试者的人生同样充满艰辛。一款新车能够顺利上路,背后是无数测试者在各种极端环境、极限场景下的辛苦工作,很多人要签下生死状。从事道路测试的工程师,每年要完成几十万公里的测试里程,事故概率累积下来,安全风险非常高。要测试天然气输气管道泄漏检测系统,测试者需要在管道上打一个孔,迎着直冲云霄的尖啸声,在天然气的包围中执行测试用例。
为了更好地实现测试目标,测试者不仅可能面对生命危险,还要面对很多令人望而生畏的难题。即便拥有直面艰辛的勇气,是否具备解决这些难题的智慧?很多时候,测试人员难免在理想和现实之间茫然无措,困顿踯躅。测试人员容易意识到应该反对什么,却往往很难回答应当争取什么;当测试人员关注现实时,又经常发现自己眼见的并非真相,甚至会怀疑自己的大脑根本装不下真相。
假如测试人员有解决这些难题的智慧,它们会在测试设计中开花结果。在不同的专业领域中,针对形形色色的被测对象,测试设计的具体方式方法千差万别。然而在缓解测试基本问题的策略层面上,各种测试设计方法又体现出一些共通的思想。笔者将这些思想归纳为八方面,即系统的思想、枚举的思想、准则化的思想、多样化的思想、统计的思想、冗余的思想、推理的思想、控制的思想,如图1-1所示。
图1-1 八种测试设计思想
这些思想来源于工程,又超越工程;立足于具体领域,又跨越具体领域;依托于方法论,又接近认识论。对于在理想与现实之间徘徊的测试者来说,测试设计思想是关于理想与现实的对照哲学,是有可能帮助测试者冲破迷雾的一线光明。