计算机软件测试论文

| jm618 关键词: 计算机软件 测试 论文

  大数据背景下软件测试的挑战与展望

  摘要:随着我国互联网、大数据等各种新兴科技的不断兴起, 软件测试领域受到了重大的冲击, 如何在现阶段大数据背景下面对软件测试中所出现的问题, 应对时代赋予软件测试的挑战, 促进软件测试更好更快地发展成为了我们应该重视的事情。文章对大数据背景下软件测试发展所遇到的困难以及挑战进行简单分析, 并且根据分析结果对软件测试的未来发展提出期望, 希望能够对我国软件测试的发展起到作用。

  关键词:大数据; 软件测试; 困难挑战; 发展期望;

  Challenges and prospects of software testing in the context of big data

  Abstract:With the rising of various emerging technologies, such as Internet, big data and so on in China, the field of software testing has been greatly impacted.How to deal with the problems in software testing under the present big data background, to challenge the time given to software testing, and to promote the software test to be better and faster to develop into me what we should pay attention to.This paper simply analyzes the difficulties and challenges in the development of software testing under big data background, and makes a hope for the future development of software testing according to the results of the analysis, hoping to play a role in the development of software testing in our country.

  Keyword:big data; software testing; difficult challenges; development expectations;

  0、引言

  时代的不断发展、科技的不断进步, 各种新兴科技的不断发展, 大数据的潮流引发了又一次的科技以及技术改革, 因此, 人们对于科技技术的创新与发展提出了更高的要求, 为软件测试领域带来了更新的挑战。如何在大数据背景下解决软件测试发展当中所遇到的难题成为我国应该着重关注的事情。对此, 我们应该积极面对大数据背景下对软件测试所提出的挑战, 并解决这些问题, 促进我国软件测试领域更好地发展。

  1、大数据背景概述

  随着我国科学技术的不断发展, 计算机技术不断更新与发展, 使全国进入了大数据的时代。大数据的特征不仅仅只有对规模庞大的数据的处理能力, 同时能够对相关行业大规模专业化数据进行处理。大数据主要是需要将众多的、多样化以及增长率较高的数据信息作为主要资产, 对这些大量的数据进行优化以及处理[1]。因此, 在对大数据进行使用时, 应该充分对大数据所提供的数据信息进行挖掘, 对其结构化与非结构化的数据结合进行更加细致的集合, 以便能够在实际需要中提供具有相应价值的数据。

  同时, 在目前大数据的背景下, 大数据本身具有多个特点: (1) 大数据的数据量非常庞大, 就现阶段我国大数据发展形势看来, 随着大数据的不断发展, 今后会发现大数据的衡量体量单位正在逐渐发生变化。 (2) 大数据的类型较多, 种类繁多, 其中互联网、传感网以及物联网都属于大数据的范畴, 使现阶段的数据类型变得越来越复杂, 不仅包含着传统的相关数据类型, 同使还包括了网页、图片、音频、视频等半结构化的数据存在。 (3) 大数据的价值密度偏低, 由于大数据的快速发展, 大数据方面存在着许多与需求无关的信息, 需要对信息进行过滤与整理, 才能更好地发挥出大数据的作用。 (4) 大数据对于信息处理这一方面的速度非常迅速, 和从前传统的数据挖掘技术之间存在着本质的不同, 能够有更加明显的效果。相比于传统的数据处理方式, 现阶段对于数据的处理方式有很大的不同, 所以软件测试的形式、重点以及方法也在不断地变化与发展。

  2、大数据背景下软件测试所面临的挑战

  2.1 大数据背景下Oracle问题不断突出

  进行软件测试的目的主要是为了更好地对软件有错误运行的情况进行发现的一种工作, 专门对测试过程是否通过的可验证也就被我们称之为Oracle。在现阶段我国大数据背景下, 软件测试不管是针对趋势的分析还是对所需要的图类进行相应的计算, 都产生了一定的难度, 开始变得越来越困难。我们可以将大数据的处理模式主要分为两种来进行分析, 也就是物理模式下大数据的处理模式以及化学模式下大数据的处理模式这两种有关大数据的处理模式[2]。其中, 在物理作用下对大数据进行处理, 主要是以保证大数据价值为基础的前提下, 不断地对大数据规模进行缩小的处理, 然后由此对数据不变的基本属性进行充分清洗。在这一过程中其实就包含了许多对于数据进行处理的方式, 能够有效地实现物理模式下对大数据所进行的处理, 因此, 我们可以充分了解到, 物理模式下的数据处理测试Oracle本身不存在任何问题。而在化学作用下对数据进行处理则需要具备两个经典问题:最主要的预测以及快速算法这两方面问题, 这两个经典的问题可以直接增加Oracle的难度, 使Oracle变得尤为困难。比如在对个性化推荐统计学信息进行计算时, 通过个性化所推荐出来的商品, 更容易满足人们的需求, 受到人们的喜爱, 但同时, 也存在着一半人不喜爱的概率, 只是通过计算得出这一类商品可能受喜爱程度会更高的结论, 无法进行更加准确的分析。这种概率性的问题一旦出现, 就代表了结果的正确性与准确性从本质上产生差别, 使Oracle的确定难度增加。

  2.2 传统的测试平台难以更好地符合大数据的处理要求

  传统时期所采用的软件性能测试方法主要是需要借助控制器协调本地, 直接向服务器端发出服务的请求, 应用这种方法来完成对于服务器压力的测试, 测试的负载产生器属于局部的物理主机。相对于较少量的服务器构成应用系统来说, 需要应用服务的用户数在上百甚至是上千才能够更好地满足应用所提出的需求。我国现阶段随着云计算的不断研究与发展, 用户的需求量也在迅速地增加, 其中多个系统所需支持的并发用户的数量也在不断增加, 同时也就带动了相应的访问量迅速增加并且不断攀升。这时就需要针对服务端系统来进行测试, 以确保服务端系统能够真正地承受巨大的用户访问量并且正常有效地进行运作, 这一测试可以在系统上线之前就可以展开, 对较为充分的测试内容进行测试。传统的局域网主机测试方法所产生的这种压力, 很难在一定程度上真正满足服务器对其所产生的压力进行过测试的需求, 因此, 软件测试工作当中产生了一系列的问题, 我们可以简单从4个方面对所产生问题进行分析。 (1) 负载产生器的物理机数量很难更好地获得动态的拓展。 (2) 在大数据背景下, 大数据对云计算产生了一定的驱动作用, 使云计算系统直接采用了广泛的分散客户端。 (3) 在网络方面各种海量数据的不断推动下, 控制器所监视的负载产生器的状态直接成了性能测试时的瓶颈, 这种瓶颈的出现十分容易导致测试的失败。 (4) 现阶段而言, 我国软件测试的控制器与负载产生器之间同步的问题变得越来越复杂, 直接对负载测试的效果产生了重要的影响。

  2.3 软件服务化对测试所带来更新的挑战

  从开发模式上来看, 软件的开发可以从4个阶段进行分析, 也就是完全编码阶段、构建化阶段、服务阶段以及云计算阶段, 我们可以从这4个阶段来简单对软件开发测试进行分析。 (1) 完全编码阶段。对这一阶段而言, 是基础阶段, 也是开发人员从零开始对代码进行编写的一个阶段, 除了系统所提供的类库以外, 开发人员几乎可以掌握所有的代码, 也是开始的一个阶段, 在这一阶段方面, 用户的可测性非常好, 几乎所有对测试盒的调试方法都可以得到实现。 (2) 构建化阶段。在构建化阶段, 往往为了提高软件的开发效率开发组织在系统类库的基础上根据业务自身所具有的特点对一系列可复用的业务组建进行构建, 但是这些所构建的组件往往只能应用到本地来进行运行, 业务系统当中的耦合度较高, 同时用户可以更好地对组件进行掌握。同时, 用户无法对第三方所提供的组件进行内部的跟踪与分析, 但是可以对运行的结构进行更好的跟踪。 (3) 服务阶段。服务阶段会将原本由本地组织所提供的调用转变为远程的方式来进行更好的服务。在这一阶段当中, 用户逐渐减少了对于外部服务的把握, 仅仅只能通过服务的输入与输出来对服务的情况进行把握与掌握。 (4) 云计算阶段。云计算在现如今大数据的背景下, 越来越多地被应用。在云计算这一阶段, 特别构架与PASS之上的应用程序, 除了输入以及输出的接口之外, 用户完全没有更多的能力对PASS的实际服务运行状态来进行了解, 进一步加大了用户测试的难度。

  3、大数据背景下软件测试的展望

  3.1 对Oracle的内存区进行充分调整以及优化

  对于Oracle数据库的内存区我们可以简单分为两个部分, 即系统全局区 (System Global Area, SGA) 和PGA两部分[3]。其中, SGA主要是作为Oracle数据库当中的数据缓冲区域, 资源共享池以及相关数据日志的缓冲区域, 这些区域的分配能否合理直接关系到了数据库系统性能的优劣程度, 对数据库系统性能起到了非常重要的作用。其中, 数据库的缓冲区域起到了能够有效地对所搜索到的相关数据进行储存的作用, 也就是说是用来对相关数据进行储存的区域。如果说相关的数据库用户所发出的数据请求直接进入到了数据的缓冲区域, 那么数据的缓区域会直接将这些所接收到的数据直接再返还给用户, 这样可以最大限度地有效减少检索的时间。如果相关数据库用户所发出的数据请求没有直接进入数据的缓冲区域, 那么就需要专门的服务器将数据从进入的数据文件中读取出来, 然后再将所读取出来的资料转换至数据的缓冲区域, 再从数据的缓冲区域对用户进行数据的反馈, 这样从一定程度上就加长了数据的检索时间。因此, 为了确保用户能够更快地收到数据, 可以有效地对数据库相应的数据操作性能进行提高, 只有这样才能更好地保证工作效率。资源共享池主要是由数据库缓冲以及数据字典缓存这两方面所构成。数据库缓冲的主要作用是将执行过的代码以及执行计划等一系列的信息进行存放, 而数据字典缓存的作用则是将数据库相关系统当中的相关数据对象以及相关数据库用户权限等一系列信息进行存放。更好地对资源共享池这两个方面进行合理的配置, 能够有效地提高程序的实际执行效率。数据日志的缓冲区域主要是对数据库系统当中所修改的信息进行存放的区域, 如果在日志的缓冲区域当中出现较多日志写入失败的问题, 那么就说明了数据库中对于相关日志的缓冲区所能应用的容量较小, 无法更好地对日志进行存放, 会直接对数据库的形成产生重要影响。

  3.2 对数据库当中的碎片进行整理

  由于在实际操作过程当中, 数据库不断进行运作, 相关数据的操作也在不断地变化, 所以导致了数据库当中磁盘碎片的产生。我们可以将磁盘碎片主要分为3个级别来进行分析, 即表空间级、索引级以及表级3个方面。其中, 表空间级的主要作用是应用表空间重组以及对相关命令的运行对数据库当中的数据进行导出操作, 再通过TRUNCATE将表空间内的数据进行删除, 最后通过IMPORT程序的导入方式来对相关的有效数据进行导入, 应用这种方法来对表空间级所产生的磁盘碎片进行清理。索引级主要是将表空间级上面的相关索引数量进行充分减少, 或者是变换相对来说频率较低的列来对索引进行创建, 通过对索引进行重建等一系列的方式, 来有效对索引当中产生的磁盘碎片进行清理。表级相对于表空间级以及索引级磁盘碎片的清理方式相对简单, 主要是对系统数据块的大小进行合理的配置与设置, 同时利用相关的PCEFREE等数据参数来更好地防止磁盘碎片的产生以及对表级所产生的磁盘碎片进行清理。

  3.3 提高数据测试技术及测试数据的准确性

  因为对数据存储的模糊认识以及发送无用的重复请求导致错误信息出现, 进而容易造成因为数据信息的准确性降低而导致的软件测试效果变差的问题发生[4]。因此, 在应用数据库之前, 我们应该对数据库所应用的软件进行多次测试, 以确保软件测试的有效性与信息的可靠性, 将错误数据所产生的影响降到最低, 有效提高数据信息的准确性。同时, 我们应该对现阶段软件测试技术进行不断的创新与发展, 传统的测试人员所应用的软件测试技术主要是应用单一的软件测试技术对软件性能进行测试, 这样的测试方法所测试出来的结果具有一定的局限性。软件产品所面向的是行业内部全部的生产生活人员, 如果使用单一的测试方法就容易出现结果片面的问题。因此, 我们需要应用多元化的测试方法, 将应用的测试方法与测试技术进行充分结合, 同时吸收传统测试方法当中较好的地方, 取其精华, 去其糟粕, 不断对软件测试的方法进行改进与完善, 消除对于软件测试方面的片面性认识, 全面应用多元测试技术, 以保证软件测试信息的准确性, 提高软件测试的工作效率, 同时可以有效地规避杀虫剂现象。

  4、结语

  随着各种新兴科技的不断发展, 在大数据的背景下, 软件测试作为一种较为传统的科技方法受到了相应的挑战, 在这种背景下如何更好地解决所存在的问题成了软件测试中所需要解决的重要事情, 本文从3个方面对大数据背景下软件测试所遇到的挑战进行分析, 并结合现阶段我国发展形势对软件测试方面问题提出了解决方法以及软件测试方面的发展展望, 希望能够对软件测试研究与发展起到帮助作用。

  参考文献

  [1]谭逸璋.大数据背景下软件测试技术的发展[J].通讯世界, 2017 (24) :108-109.

  [2]卢玲, 刘勇, 陈小奎.浅析大数据背景下软件测试的挑战及其展望[J].电脑知识与技术, 2017 (8) :92, 94.

  [3]陈施奇, 庞伟.基于大数据背景下的软件测试研究[J].信息系统工程, 2017 (1) :41.

  [4]合云峰.大数据背景下软件测试的挑战与展望[J].通讯世界, 2016 (8) :34-35.

  软件测试与提升产品质量的思考

  摘 要:软件测试是软件能力成熟度模型集成的重要活动, 软件占产品比重的不断提升, 对软件的验证提出了更加严格的要求。文章根据实际项目经历, 从体系认证、标准和发展的角度, 提出软件测试在提升产品质量方面的思考。

  关键词:软件测试; 质量保障; 软件能力成熟度模型集成;

  Exploration on software testing and improving products reliability

  随着软件规模和复杂程度的不断提高, 软件测试技术也在不断发展, 软件在各个领域的应用比重不断加大的情况下, 对于保障软件质量的软件测试也提出了更高的要求。目前, 国内的软件测评能力建设经历了CMMI (能力成熟度模型集成) 体系认证、国家实验室 (CNAS) 认证和国防科技工业实验室认可 (DILAC) 。测评实验室已发展成为具有规范过程管理、具备一定测试能力及测试资质的软件质量保障机构。如何发挥软件测评的优势, 将软件测评与产品的软件研发过程紧密结合起来, 提升产品质量, 笔者就这方面的内容谈谈看法。

  1、软件测试与产品质量保障

  软件系统的组成结构如图1所示。语句是系统组成的最基本单元, 多个语句集成完成特定目标的函数, 多个函数集成完成指定功能的部件, 多个部件集成完成具有独立配置管理一组功能的软件配置项, 而多个软件配置项组成功能完整的系统。代码审查、静态分析的检测可以消除编码不规范、变量未定义即使用、内存泄漏、数组越界、未初始化等可能造成系统运行不稳定的缺陷;单元测试、集成测试可以消除所设计的软件不满足设计需求的缺陷;人工代码走查可以消除软件设计的逻辑缺陷;软件配置项测试可以消除软件不满足软件配置项需求的缺陷;系统测试可以消除软件不满足系统/子系统需求的缺陷。

  因此, 在软件系统的不同阶段, 代码审查和静态分析保障了软件最基本单元语句级别编写的正确性和一致性;单元测试保障了由多条语句组成的软件函数级别编写的正确性和一致性;集成测试保障了由多个函数组成的软件部件级别编写的正确性和一致性;软件配置项测试保障了由多个部件组成的软件配置项级别编写的正确性和一致性;软件系统测试保障了所有软件配置项组成的软件系统编写的正确性和一致性。以此自底向上逐层验收、确认, 从而确保了整个系统的质量。

  以软件开发过程为对象, 建立软件测试对软件开发过程各阶段工作的质量保障。其过程及对应关系如图2所示。

  图1从软件产品构成的角度, 通过建立软件系统的构成树, 来阐述软件测试对于保障软件系统构成树中各节点验证与确认的手段与方法, 以说明软件测试对于构成软件系统各个组成要素的保障。图2从软件开发过程的角度, 通过建立与软件开发各过程活动对应的各软件测试活动模型, 阐述软件测试对于软件开发过程各活动的验证与确认, 以说明软件测试对于软件开发过程各活动的质量保障。其中软件开发过程由系统/子系统需求分析为开始, 以编码实现为终止。而编码活动的结束即完成了对图1软件系统的构建, 代码审查和静态分析对图2中编码结果即图1中语句级别与编码规范的一致性进行验证;单元测试按照图2中详细设计结果即详细设计文档, 验证图1中函数与详细设计文档的一致性;集成测试按照图2中概要设计结果即概要设计文档, 验证图1中部件与概要设计文档的一致性;软件配置项测试按照图2中软件配置项需求结果即软件需求规格说明, 验证图1中软件配置项与软件需求规格说明文档的一致性;系统测试按照图2中系统/子系统需求结果即系统子系统规格说明, 验证图1中系统与系统/子系统规格说明文档的一致性。

  2、软件测试过程中的薄弱环节

  然而经过这么细致的验证与确认, 软件在交付使用后仍然会暴露出很多问题, 有的甚至可以导致软件崩溃。根据实践经验, 软件测试过程中仍然存在着以下几个薄弱环节。

  a) 软件测试工作不到位。由于缺乏有效的手段对软件测试工作进行监控与评价, 导致软件测试工作有时只是走走过场, 很难着实有效地开展工作。

  b) 软件开发文档编写不到位。软件开发文档由需求到设计层层递进, 并可以上下追溯。而现在编写的软件开发文档, 都是人工填写的追溯信息, 缺少必然的逻辑关系, 势必会造成软件设计或者需求的冗余、缺失甚至不合理。

  c) 编码质量分析的不到位。编码质量的分析直接影响到软件系统的可靠性和稳定性, 然而这些问题的暴露无法通过任何一种动态测试方法捕获。比如就内存泄漏来说, 会造成系统运行很长一段时间后崩溃, 但这又无法定位到任何动态问题上来。

  d) 软件一致性检查不到位。对于软件一致性检查, 即文档与编码实现的一致性, 只是比对文档中提到的内容, 在软件中是否实现了。但是没有对所有代码都查明是否有确切的文档出处和要求, 造成测试事项的遗漏, 导致测试未覆盖代码的不可控。

  e) 测试方法不到位。软件测试按照标准的要求 (如能力成熟度模型集成体系认证、国家实验室认证和国防科技工业实验室认可关于测试管理和测试能力) 只是站在用户角度对软件代码与文档的一致性检查, 缺乏站在开发人员角度对系统的正确性、稳定性、可靠性和效果给予必要的验证与确认。

  3、发挥软件测试对提升产品质量的作用

  标准只是对测评工作的基本要求, 然而以标准为基础又可以赋予我们丰富的想像空间, 除了做到以上标准 (CMMI体系认证、CNAS和DILAC关于测试管理和测试能力) 提出的基本要求之外, 软件测试还需加强以下9个方面工作。

  a) 加强软件各测试验收阶段的评审工作, 以确保测试工作的有效性。

  b) 加强软件文档审查分析能力。采用逆向工程的方法, 将下一层次文档的功能描述进行整合, 观察是否可以还原上一层次文档的需求, 从而可以判断出功能分解中是否有冗余的、缺少的或者不合理的, 以提高软件的设计质量。

  c) 熟悉静态分析、代码审查工具的特性, 熟练掌握测试工具的使用方法。从而可以在有限的时间内更好、更多、更准确地发现软件代码的规范问题, 排除动态测试无法发现的可能给系统带来不稳定因素的软件隐患。

  d) 加强软件源代码与软件设计文档的一致性检查。杜绝设计的功能未实现, 实现的功能未设计, 达到文实一致, 每段代码的实现都有证据可依。可以增强软件开发的规范性, 也减少软件蔓延或镀金给系统带来的不稳定因素。

  e) 打破常规的测试思想。不仅要按需求逐条进行验证, 也要根据经验采用猜错的方法验证软件是否实现了需求没有要求的功能, 往往这些额外的功能轻则影响系统的处理性能和带宽, 重则可能导致系统的崩溃。

  f) 注重软件故障树的建立。软件问题往往具有蝴蝶效应, 一个小小语句的失误就有可能造成重大的损失。建立软件故障树, 通过展示小缺陷可能导致的重大危害, 可以提高人们对细小问题的认识, 对软件问题的及时排除具有极大意义。

  g) 注重仿真数据及实装数据的积累。通过使用积累的仿真数据和实装数据, 不仅可以模拟特殊环境下验证软件的处理能力, 而且有助于通过这些已知的数据来判断软件处理结果的正确性, 提升在专业领域测试的权威性。

  h) 建立具有专业领域测试特征的软件配置项测试工具和系统测试工具。对于目前行业的动态测试工具来说, 由于其考虑了不同领域行业使用的兼容性, 导致测试具体领域软件项目的不便, 不仅配置复杂, 而且具有具体行业测试特征所亟需的功能并未提供。针对此种现象可以结合企业软件测试的特点, 自己编写测试工具用于实现软件自动化测试执行、文档生成、测试数据生成, 提高测试的执行效率和有效性。

  i) 加强对软件算法时间复杂度和空间复杂度评价。计算软件算法的时间复杂度和空间复杂度, 不仅有助于了解软件算法实现的正误, 更可以优化软件算法, 提升算法执行效率, 从而大大提升系统的稳定性和可靠性。

  参考文献

  [1]万江平, 孔学东, 杨建梅.集成能力成熟度模型 (CMMI) 的研究[J].计算机应用研究, 2001, (10) .

  [2]李兴兵, 李孟军, 谭跃进.军用CMMI模型的建立初探[J].兵工自动化, 2003, (06) .