智能家居场景功能测试用例设计方法研究
2023-01-15杨文全田云龙马晓玉时雨
杨文全 田云龙 马晓玉 时雨
1.青岛海尔科技有限公司 山东青岛 266101;
2.数字化家电国家重点实验室 山东青岛 266101;
3.青岛海尔智能家电科技有限公司 山东青岛 266101;
4.中家院(北京)检测认证有限公司 北京 100053
0 引言
随着信息技术的不断发展,人类正加快进入数字化时代,计算机技术、物联网技术、人工智能等技术的深入发展,使得智能家居行业得到了前所未有的进步,其中,智能家居场景化更是不断升级,正在深刻改变着人们的生活成为智能家居新的发展方向。
场景是指由云端、控制终端、设备端组成的能够满足用户特定需求的软件系统。场景一般模型如图1所示[1],图1为静态结构,其中各平台指云端,控制终端包括家用电器的控制面板、手机、平板电脑控制终端等,设备端一般指各类家用电器及各类电子设备等。图1给出了一般结构,在图1的结构基础上,根据用户的不同需求可衍化出各类满足用户不同需求的多个具体场景,其可理解为家居软件系统中的特定软件功能。图2为归家场景示例,“cloud”表示云端,“App”表示控制终端,“网关、门锁、摄像头、灯、窗帘、空调、音箱”表示设备端。该场景功能为:用户在App端选择场景,App将信息上传至云端,用户触碰门锁打开,门锁将信息上传至云端,云端通过网关控制摄像头关闭、窗帘关闭、灯光打开、空调打开、音箱打开,形成一个满足用户归家需求的软件系统。
图1 场景一般模型
图2 归家场景示例
当前,各大家电厂商均在纷纷布局智能家居场景,场景的研发和服务正成为行业发展的重要方向。场景使用体验的好坏是用户选择场景的重要依据,影响场景使用体验最直接的因素是场景的质量,而保障场景质量的重要手段就是进行场景测试。场景测试的本质是软件测试,是对由组件组成的场景进行功能性、性能效率、兼容性、易用性、可靠性、信息安全性、维护性、可移植性测试的过程。在场景测试过程中最基本也是最重要的测试就是功能性测试。
目前,由于技术和水平的限制,场景功能的检测质量参差不齐、使用体验差、使用率不高,普遍存在以下问题:
(1)测试维度不完善。目前场景功能检测局限于依据功能需求规格说明书进行场景功能覆盖率测试,未充分考虑功能的完备性、正确性、适合性以及依从性、未覆盖场景的隐含需求、未考虑场景的实际使用环境、未对场景执行过程中的冲突情况进行测试[2]。
(2)测试用例设计不科学。目前场景功能测试过程中对等价类划分、边界值分析等测试技术的融合应用不够,导致测试过程中出现重复测试、边界、极值未覆盖等情况,影响场景功能测试的效率和质量。
针对上述问题,考虑到场景的本质是软件系统,本文参考GB/T 25000.51-2016《系统与软件工程 系统与软件质量要求和评价(SQuaRE)第51部分:就绪可用软件产品(RUSP)的质量要求和测试细则》[3]中产品质量功能性及其子特性的要求,将软件黑盒测试方法应用于智能家居场景功能测试实例中,提出智能家居场景功能测试用例设计方法,供行业参考。
1 场景功能测试问题分析
1.1 测试维度
目前智能家居行业场景功能测试的维度较单一,普遍是对照着需求规格说明书进行逐项测试,测试覆盖不够全面,导致场景执行过程中的很多隐藏需求未测试,影响场景的使用体验。主要原因是进行场景功能测试过程中没有建立完善的测试体系,对功能性的测试维度认识不够全面。
根据国家标准GB/T 25000.10-2016《系统与软件工程 系统与软件质量要求和评价(SQuaRE)第10部分:系统与软件质量模型》,功能性主要从功能完备性、功能正确性、功能适合性、功能依从性方面进行测试[4]。
(1)功能的完备性
主要验证功能集对指定的任务和用户目标的覆盖程度。
场景功能的完备性测试是指测试场景对指定的任务和用户目标的覆盖程度。场景功能完备性一般测试场景的实际功能覆盖场景需求规格说明书或其他技术说明文档中所有功能的程度,即场景功能实现的充分性、完整性和覆盖率。
(2)功能的正确性
主要验证产品或系统提供具有所需精度的正确结果的程度。
场景功能的正确性测试是指场景提供具有所需精度的正确结果的程度。场景功能正确性一般测试:
1)对具有功能执行正确性要求的场景,选择具有覆盖性的数据作为输入,依据等价类划分法和边界值法设计用例,并计算这些输入的预期结果,执行用例,记录软件的实际结果,比较两者之间的差异;
2)场景执行过程中,对精度有要求的数值设计测试用例,验证运算结果的精度及有效位与用户需求规格说明书中的要求是否一致;
3)对场景执行过程中的业务数据进行严格的正确性测试(包括数据是否超出正常的值范围、数据准确性等),确保系统实时数据和历史数据准确无误;
4)适合性与正确性可以一起测试。如,依赖室外温度的场景,当室外温度超过限值时,是否给手机发送短信,适合性检查是否进行发送、接收;正确性检查发送、接收的内容是否正确、内容有无丢失等。
(3)功能的适合性
主要验证功能促使指定的任务和目标实现的程度。
场景功能的适合性测试是指场景功能促使指定的任务和目标实现的程度。场景适合性一般测试:
1)分析被测场景功能需求,依据《需求规格说明书》要求验证场景是否实现了全部需求,确保各项功能是可执行的;
2)检测场景是否自相矛盾,是否与正常逻辑或单品自身功能相矛盾;
3)测试场景是否完整描述用户的需求,包括隐含的需求(需求规格说明书虽未明确说明但是应该达到的功能)如:睡眠模式下的灯光关闭应渐暗,归家模式下的灯光应立即亮起;
4)测试场景是否实现了预期结果;
5)场景测试过程中,涉及数值的,要考虑以下因素:值域、边界值,包括最小或最大值、键的长度、表记录的最大数目、界面输出的数据规格、最小样本大小等,当不可能提供固定的边界值时(例如边界值取决于应用问题的类型或输入数据时),应说明这些限制可提供的允许值组合。
(4)功能的依从性
主要验证产品或系统遵循与功能性相关的标准、约定或法规及类似规定的程度[1]。
场景功能的依从性测试是指场景应符合需求文档中列出的国际标准、国家标准、行业标准、企业内部规范等。语音场景、蓝牙场景、NFC场景应符合行业对应的标准,场景中的模块也应符合对应的行业标准。
因此,在进行场景功能测试过程中要综合考虑场景的适合性、完备性、正确性、依从性。只有建立完善的测试维度才能保证场景功能测试过程中的全面性,保证隐含需求和冲突情况能够覆盖到,从而保证场景的质量。
1.2 测试用例设计方法
在场景功能测试过程中仅有完善的测试维度是不够的,运用科学的用例设计方法才能避免测试过程中的重复性和片面性,保证测试的效率和质量。
根据被测场景的特点,采用场景法、等价类划分法、边界值分析法、因果图法、判定表法、随机测试法、错误推测法等黑盒测试技术,要求必须将所有的测试需求细化到最基本的功能点,设计覆盖全部场景功能的测试用例,从完备性、正确性、适合性和依从性等方面对场景功能进行质量测试。
(1)场景法
场景法由基本流和备选流两部分组成,其流向表示测试用例的路径[5]。
基本流:也称有效流或正确流,模拟用户正确的业务操作流程。
备选流:也称无效流或错误流,模拟用户错误的业务操作流程。
如烟灶联动开机场景中,基本流为任意一灶头点火→烟机自动开机。备选流为所有灶头关火→烟机未自动开机。
(2)等价类划分法
等价类划分法,把系统的输入范围划分成几个部分,选择输入条件时从每个部分中选择若干个有代表性的数值[5],从而减少测试用例数,提高测试效率。等价类可以分为有效等价类和无效等价类。有效等价类是合理有意义的输入元素的集合,符合需求规格说明书中对输入的要求;无效等价类是不合理无意义的输入元素的集合。如以时间作为触发条件的场景,时间的有效等价类是场景触发的时间段,无效等价类是非触发时间段。
(3)边界值分析法
根据经验,程序大部分的错误在输入范围的边界被发现,场景功能亦是如此。如果针对性地对输入范围边界值设计测试用例,能够有更大概率发现缺陷。边界值分析法是用于对输入或输出的边界值设计测试用例的方法,可看作是等价类划分的补充[5]。如睡前准备场景的生效时间段为21:00:00到23:00:00,其有效等价类的取值范围为[21:00:00,23:00:00],其取值包含了边界点和边界外侧的点,我们可以取以下3个值作为输入:20:00:00、21:00:00、23:00:00。除此之外,边界值分析法还应考虑一些数值的极端情况,如涉及空调温度调整的场景,用户允许的调温范围不能超过空调使用说明书中标明的最低或者最高温度。
场景功能测试过程中要将场景法、等价类划分法、边界值分析法等方法充分融合在用例设计中,使用最少的测试用例个数覆盖边界、极值等情况,最大限度地发现问题,提高测试效率和测试质量。
2 场景功能测试方案研究及应用
基于以上问题分析,无论从测试维度还是测试用例设计方法方面都能有效提高场景功能测试质量。功能测试的核心是用例设计,场景功能测试用例设计一般分为三个步骤,如图3所示。首先使用场景法设计测试路径,根据场景的需求描述拆分为若干个子场景;第二步根据功能测试内容综合考虑功能的完备性、正确性、适合性、依从性,利用等价类划分法、边界值分析法等确定测试用例的具体输入条件;最后利用因果图法将各个输入条件进行综合分析得出高效、有序的测试用例。
图3 场景功能测试用例设计
下面以典型场景归家场景为例介绍场景功能测试技术在场景测试中的应用,归家场景如图4所示。
图4 归家场景
2.1 测试路径设计
使用场景法拆分需求设计测试路径。根据对归家场景测试需求的分析,基本流与备选流如下:
基本流:女主人在生效时间段使用人脸信息/指纹信息打开门锁→执行女主人归家场景:播放音乐、灯光亮起、窗帘关闭、电视打开。
备选流:(1)使用非女主人的人脸信息/指纹信息打开门锁;(2)女主人在非生效时间段使用人脸信息/指纹信息打开门锁。
根据上述基本流和备选流生成不同的测试场景,如表1所示,表1中,V:valid有效,I:invalid无效。
表1 场景法设计测试路径
2.2 输入条件确定
根据拆分的场景考虑功能的完备性、正确性、适合性、依从性,结合等价类划分法、边界值分析法确定场景中的输入条件。
(1)完备性:测试场景的实际功能是否与需求描述中的一致。得到如表2的测试用例。
表2 完备性测试用例
(2)适合性:测试场景实现指定的任务和目标的程度,测试过程中要考虑值域、边界及隐含的需求。对于隐含需求:应在合理的时间内启用归家模式,使用等价类划分的方法确定输入条件,针对该需求,有效等价类时间为工作日17:00:00至21:00:00,无效等价类时间为工作日21:00:01至第二天16:59:59和非工作日的00:00:00至24:00:00。同时采用边界值分析法进行补充,分析有效等价类和无效等价类的边界,得到表3的边界值分析表。
表3 边界值分析表
适合性还应测试是否与正常逻辑或单品自身的功能相矛盾,假设智能家居中还存在离家场景,离家场景为主人离家室内无人超过1小时后,执行离家场景(灯光关闭、电视关闭、空调关闭、窗帘打开),执行时间为全天24小时,在表3中选择两个时间17:00:00和22:00:00执行完归家场景后,执行离家场景,检查两个场景是否能正常执行。归家场景的适合性还应测试在女主人执行完归家场景后其余家庭人员再次执行归家场景,检查场景执行是否存在冲突。
(3)正确性:测试场景提供其所需精度的正确性的程度。归家场景中输入参数包括人脸信息和指纹信息,可通过等价类划分的方法设计输入,如表4所示。
表4 人脸、指纹信息的等价类分析表
根据场景的执行情况,正确性还应测试灯光、电视、窗帘、音箱,一个条件发生故障时不应影响其他条件的正常执行。
2.3 测试用例设计
通过对场景功能完备性、适合性、正确性的分析,确定每个测试项对应的输入条件,但各输入条件间的组合关系是否存在相互制约的情况,以及各种组合是否合理并未进行分析,在形成最终测试用例前使用因果图法对各个输入条件间的关联关系进行综合分析得出归家场景的测试用例[6],如表5所示。
表5 归家场景的测试用例
2.4 效果分析
以归家场景为例,以往进行功能测试时,更多的是对照着需求进行机械的测试,未考虑非生效时间段场景的执行情况,导致用户在凌晨回家时归家场景执行给用户带来困扰;未考虑人脸信息和指纹信息的无效等价类,导致错误的信息也能打开门锁,用户的生命财产安全得不到保障;未对可能产生的冲突情况进行测试,导致归家场景和离家场景互相冲突影响用户的使用体验。将场景功能测试技术应用于场景测试中后,我们可以看到测试维度更加完善,在设计测试用例时更加科学、严谨,能够用最少的测试用例最大限度地暴露场景的缺陷。
3 结束语
功能测试是场景测试中最基本也是最重要的测试内容,是提高场景使用体验的重要手段。本文对场景测试过程中出现的问题:测试维度不完善、用例设计不科学进行分析,提出场景功能测试的维度和测试用例设计方法,并将该方法应用于归家场景中。通过本文第1、2章的论述,建议在设计用例时,首先进行测试路径设计,将场景需求拆分为若干个子场景;然后进行输入条件分析,采用边界值分析、等价类划分等方法,考虑场景功能的完备性、正确性、适合性、依从性来设计测试用例;最后将输入条件进行综合分析,可以有效、有序地设计出一组可靠性高、执行性强的功能测试用例,从而提高场景测试的效率,保证测试的置信度和软件质量。
同时,我们也应该知道任何软件测试都不是完全的测试,我们只能在有限的时间和资源下尽可能多地发现问题而不能发现所有问题。鉴于智能家居场景的独特性,场景测试需要测试人员对场景业务逻辑足够熟悉,才能设计科学、有序的测试用例,合理、有效地执行测试。另外,场景测试虽然可以参考软件相关标准进行测试,但行业需要更多具有针对性的统一标准用于测试,这就需要我们将更多更好的方法经验形成行业统一的标准指导测试,为用户提供更好的场景使用体验。