APP下载

关于软件测试面临问题及对策的分析与思考

2020-11-30苏晶

科学与信息化 2020年30期
关键词:软件测试缺陷

摘 要 软件测试是发现软件缺陷和提高软件质量的重要手段。随着软件复杂度和规模的日益增加,软件测试本身的局限性及负面影响愈发显著。本文深入分析了软件测试面临的问题及对策,为软件测试过程的顺利实施、尽快尽早地发现软件缺陷提供重要参考。

关键词 软件测试;缺陷;需求变更

前言

软件测试是软件开发过程中的重要组成环节,是发现软件缺陷和提高软件质量的重要举措。受限于总体项目的进度和成本,软件测试工作在开展过程中存在诸多局限性,对软件测试过程的顺利实施产生了不利影响。因此,分析软件测试所面临的问题并给出优化解决方案,对提高软件质量具有重要意义[1]。

1输入空间的无限性

软件测试的本质为通过建立输入与输出之间的映射关系验证系统功能是否满足用户需求。而现实情况是,即使是一个非常简单的应用程序,其输入输出组合也过于庞大,因此穷举测试是在有限的时间和成本条件下无法完成的任务。以经典三角形问题为例,假定三边边长取值为1到100之间的整数,则穷举测试需验证106种数据的排列组合。另外,即使能够做到穷举测试,由于输入无效的情况未考虑,则无法发现程序中所有隐藏的缺陷,与此同时测试所花费的成本代价却大大增加。为了解决上述问题,可借鉴生物学领域中的分类思想,通过等价类划分法,分析海量数据存在的共性,并根据实际情况结合其他测试方法,做到“合理分类”,从最大程度上减少测试用例的绝对数量,提高测试的效率,并且确保测试的有效性。

2故障的巧合性

通常情况下,软件缺陷具备隐藏的特性,只有当运行于某一特定条件时才会被激活。若测试数据选取不当,错误的代码执行时却产生正确的结果,则无法被测试人员发现。经实践证明,大量错误是发生在输入或输出范围的边界上,而不是在输入或输出范围的内部。等价类划分等方法只实现了“合理分类”,在挑选数据方面略显随意。比如程序员将构成三角形的条件a+b>c错误的写成了a+b≥c,若随意挑选测试数据(30, 40, 60)和(30, 40,80)开展测试,则无法发现这一类缺陷。也就是说随意测试会带来风险,如果数据选取不对症,则白白浪费了宝贵的测试时间,却无法发现系统中隐藏的缺陷[2]。为了解决上述问题,在测试过程中,可将边界值分析法作为等价类划分等方法的有力补充,用于实现测试数据的“精心挑选”。比如(30, 40, 70)可以有效发现程序中的关系谓词书写错误。

3缺陷的不确定性

对于大中型软件系统,无法确定系统的缺陷数量及所在位置,对修正缺陷而带来的问题也是不可预测的,因此系统质量不易把握。①随着软件技术的不断发展,用户对软件提出了更高的要求。系统规模逐渐增大,系统功能、结构日益复杂,算法难度不断增加,但软件却要求高精确性,任何一个环节出现差错,都会导致缺陷隐藏其中。②对已发现缺陷进行修复的过程中,应当注意,修改是比编写代码更容易引入错误的操作,一旦处理不当,有可能使得原本能够正常运行的功能模块被无辜牵连,导致功能失效。③软件系统在使用过程中,很多原本不存在的问题可能会逐渐凸显出来。比如系统更新升级,可能引发与操作系统、浏览器、其他应用软件间的兼容性问题;系统持续运行一段时间后,性能、稳定性问题会日益明显;随着技术的发展,黑客可能发现了系统中新的安全漏洞,导致用户信息安全受到威胁;部分产品需要扩大市场,将其翻译为多个不同版本,但有可能由于语言、文化差异等导致国际化问题出现。④使用集成开发环境、操作系统、框架等第三方软件,可能导致缺陷引入至正在开发的软件系统之中,影响其使用质量。软件缺陷是软件产品固有的特性,软件测试无法发现软件中所有的缺陷,需在风险分析后通过权衡折中,最大限度地提高软件质量。⑤根据应用场景选择最佳的测试策略,使其在有限时间和成本的条件下,既保证测试效果,又兼顾测试效率。⑥在整个软件開发过程中,尽可能保证每个阶段都有最终用户的参与,加强与最终用户的沟通交流,尽早得到最终用户的直观反馈意见,并以此作为今后工作开展的依据。⑦软件测试需贯穿于整个系统开发过程中,并根据实际情况覆盖尽可能多的功能点和质量特性,充分发挥其全程质量监管的职能。

4需求的可变性

人们通常对复杂事物认知能力有限,往往需要一个循序渐进的过程,才能对事物有一个较为全面的认识和了解。在软件系统开发之初,要求非计算机专业的最终用户对软件系统提出全面准确的需求是不现实的。随着系统设计和开发的逐渐深入,当软件系统初现雏形,最终用户才会慢慢了解自身对软件的真实需求。此时的需求与开发之初对软件的期望有可能是大相径庭的,此时称用户的需求发生了变更。需求变更的影响是多方面的,有可能导致系统重新设计,设计人员的日程需要重新安排,已经完成的工作可能要重做或者完全抛弃。如果需求发生了变化,而文档没有及时更新,设计、开发人员仍然依据变更前的需求完成系统的各项工作,则势必导致更为严重的软件缺陷。需求变更容易引发连锁反应,需从最大程度上降低其对测试过程带来的负面影响。

①测试需求分析活动的过程和结果,必须经过周密部署、多方评审、用户参与和反复确认,尽可能做到消除歧义、达成共识,以免影响后续工作的顺利开展。②测试需求一旦确认,尽可能在整个测试过程中不发生较大变化,而且不允许测试人员随意更改测试需求。③如果在后续的测试过程中,用户对参与确认的内容存在异议,或者提出新的要求,需与最终用户进行协商。对于核心需求或者必须发生变更的需求,要严格执行需求变更流程,确保后续过程的正确性和有效性。

5结束语

随着软件复杂度和规模的日益增加,软件测试本身的局限性愈发显著。为了规避负面影响,软件测试理论、方法也在不断优化、完善,通过科学有效的开展软件测试活动,能够尽早地全面地发现软件缺陷,提高软件测试的效率和有效性。

参考文献

[1] 郑人杰.软件测试[M]. 人民邮电出版社, 2011。

[2] 佟伟光.软件测试(第2版)[M]. 人民邮电出版社, 2015。

作者简介

苏晶(1981-),女,山东省滨州市人;学历:硕士研究生,职称:讲师;现就职单位:山东理工大学,研究方向:软件工程、软件测试。

猜你喜欢

软件测试缺陷
软件测试方向人才培养“1+X”融合研究
大数据背景下软件测试技术的发展
关于 Web 应用系统的软件测试的研究
且虔诚,且宽容
医院会计制度的缺陷及其改进措施探讨
园林绿化植物应用现状与展望
军用软件测试项目管理系统设计与实现
软件测试发展现状及前景的探讨
印度电商为两大“缺陷”苦恼