高职计算机专业复合型人才培养的路径研究

2021-05-01 21:55邹银凤
经济师 2021年10期
关键词:软件开发软件测试

摘 要:随着“互联网+智能制造”以及工业物联网的进一步发展,软件应用的规模、复杂程度也将进一步扩大。如何培养高素质的复合型计算机技能人才,保证软件的质量,降低软件质量问题所带来的潜在风险,是目前软件产业走向成熟和标准化生产亟待解决的问题。软件开发人员怎样才能有效地开发出高质量的软件产品,提高软件产品的质量,是现有计算机技能人才和中高等教育、培训机构需要探索的重要课题。文章提出应将软件测试理论融入软件开发类课程,提高高职学生设计开发软件产品的质量,完善学生的专业技能。

关键词:软件测试 软件开发 软件质量 复合型技能人才

中图分类号:F240;G71  文献标识码:A

文章编号:1004-4914(2021)10-172-02

一、研究背景

智能制造背景下的转型升级需要大量合格和优秀的技能人才,他们是国家产业发展的重要战略资源。“十四五”规划《建议》明确提出了要加快壮大新一代信息技术发展,推动互联网、大数据、人工智能等同各产业深度融合。高职计算机软件技术人才是信息技术发展的应用研发人员的重要来源,其人才培养质量尤为重要。培养高素质的计算机复合型人才,是保证新一代信息技术顺利和高质量发展的必经之路。

近年来互联网和信息技术的不断发展成熟,软件应用领域越来越广泛,其质量的优劣也逐渐受到了人们的广泛关注和重视。随着智能制造以及工业物联网的进一步发展,软件应用的规模、复杂程度也在进一步扩大,这对计算机软件研发从业人员提出了更高的要求。如何保证软件的质量,降低软件质量问题所带来的潜在风险,是目前软件产业走向成熟和标准化生产亟待解决的问题。软件测试作为软件生命周期中的重要环节,是保证软件质量的重要手段。然而目前包括高等院校在内的教育培训机构,在培养软件开发人才时,过于强调编程技术在实现软件功能方面的应用,轻视甚至忽视了软件整体质量对于软件成功的重要性。这一问题出现的主要原因是,软件开发人员缺乏对软软件工程理论的科学认识和应用,对软件生命周期中软件开发过程与软件测试的有机关联还存在不足。

二、软件测试简介

软件测试是为发现软件错误而执行一个程序或者系统的过程。它是软件投入运行前,对软件需求分析、设计规格说明和编码的最终复查,也是软件质量保证的关键步骤。软件测试强调的是一系列发现软件错误和缺陷的活动过程。这一系列活动是发生在软件投入生产运行之前,其中既包含对实际软件的功能筛查,也包含对软件相关文档的审核。虽然软件测试的重要任务之一是发现软件中存在的缺陷,但其根本目的是为了提高软件质量,降低软件开发过程中的风险。

(一)软件测试流程

软件测试的一般过程包含:测试需求分析,测试计划制定,测试用例的设计与开发,测试执行与缺陷提交,测试评估与总结,测试资产归档六个过程。在实际的软件测试过程中这六个过程通常是依次执行。

测试需求分析阶段的工作主要是分析软件规格需求说明书,确定测试软件的功能与性能的范围以及验证软件正确性时所参考的行业和企业标准,明确测试软件的规模和测试活动所需的资源配置。测试计划阶段的核心工作是制定软件测试方案,明确软件测试活动执行的时间和人力安排,以及风险应对方案。测试用例设计与开发是整个测试活动重点。测试用例的本质是测试数据,包含真实测试执行过程中输入的数据和具体操作,以及根据需求说明书期望看到的软件运行结果等。不同的测试类型在测试用例设计上存在区别,这是测试领域岗位区分的主要依据。测试执行与缺陷提交是与测试用例设计与开发紧密关联的阶段,其核心工作是將测数据输入到被测系统,根据软件的实际运行结果比对需求说明书,找出软件的缺陷和不足反馈给开发人员,实现对软件功能的完善和修正,以保证软件的质量。

(二)软件测试的分类

软件测试是一项系统性的工程,从不同的角度考虑可以有不同的划分方法,如图1。从测试执行的时间先后划分,软件测试可以依次理解为:单元测试、模块测试,集成测试,系统测试,验收测试,Alpha测试,Beta测试。根据测试过程侧重的内容不同,测试可以划分为功能测试,兼容性测试,性能测试,用户界面测试,安装卸载测试,接口测试等。从测试技术和用例设计的角度考虑,软件测试可以分为黑盒测试、白盒测试和灰盒测试。随着自动化测试工具的不断推广和应用,根据是否使用工具,软件测试则可以分为手工测试和自动化测试。文档作为软件产品的一部分,在测试过程中根据是否执行被测软件,软件测试可以分为静态测试和动态测试,其中静态测试主要是对软件文档和程序代码的审查。

(三)软件测试用例

测试用例是为某个特定的测试目标而设计的,其本质是包括输入数据和操作行为在内的一系列数据的集合。测试用例的设计和编制是软件测试活动中最重要的工作内容。测试用例是测试工作执行的主要参考,也是软件测试必须遵循的准则。测试用例的设计一般需要遵循一定的方法,才能实现对软件测试活动的科学组织和归纳。

(四)软件缺陷

在实际应用和测试过程中,准确地定义软件缺陷对于整个测试活动至关重要。IEEE729-1983对缺陷的标准定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。完整的软件缺陷定义可以明确测试目标,统一测试人员与软件开发人员的工作方向。比如,部分软件对软件的安全性并没有特殊或者严格要求,如果软件开发人员和测试人员的工作方向没有达成一致,若软件开发人员在设计软件时没有充分考虑软件的安全性漏洞,而测试人员在测试过程中过分侧重软件的安全性测试则可能会导致软件崩溃性或者运行失败。合理的软件缺陷定义可以在软件提交用户验证之前进一步明确客户需求,为软件的用户可操作性及质量提供有力保障。

三、软件测试与软件开发的关系

软件工程是从技术和管理两方面研究如何更好地开发和维护计算机软件的一门学科。软件工程学提出的软件生命周期的模型,发展了许多软件开发与维护阶段适用的技术和方法,并应用于软件工程实践,取得了良好的效果。

软件开发与软件测试作为软件生命周期模型中的两个重要活动,他们之间存在紧密的联系。软件开发通常会遵行一定的开发模型,经典的开发模型有瀑布模型、原型模型、增量模型、螺旋模型、敏捷模型等。软件测试和软件开发一样,都遵循软件工程的原理。测试活动贯穿于软件项目开发的全过程,和研发活动交互开展。瀑布模型作为最早出现的开发模型,给出了软件开发的固定流程,强调软件生命周期中各阶段的先后顺序,使得大部分人至今仍存在一个软件测试与软件开发的认识误区——软件测试是在代码完成之后进行的。如图2,V模型准确地展现了软件开发与软件测试的有机关联,因此本节以V模型为参考,分析软件测试与软件开发之间的关系。

以虚线为界,从水平对应关系看,左边对应软件开发与设计的各个环节,右边是软件测试的验证和测试,即对软件设计和分析的各个环节进行测试,以确认是否满足用户的需求。

需求分析阶段对应验收测试。表明软件开发人员分析软件需求和产品功能设计时,测试人员同时也在了解软件产品的设计特性、用户的真正需求;通过阅读和审查需求分析结果,进一步确认软件测试的范围和标准,制定测试计划和安排测试资源。

规格说明阶段对应系统测试。软件开发人员在做系统设计时,软件测试人员可以了解软件系统的架构设计风格、系统设计需要使用的主要技术,提炼相关的测试要点,事先准备相关测试点的用例和搭建对应的测试环境。

概要设计阶段对应集成测试。软件开发人员需要了解各软件功能模块之间的业务关联和数据流通,软件测试人员则主要侧重各功能模块之间业务的交替规则,规划各模块测试的先后顺序和功能要点。

程序设计阶段对应的是单元测試。一面编程,一面测试是一种很有效的办法。充分地单元测试,可以保障程序开发过程的顺利进行,提高程序质量,降低开发成本。

从整体来看,软件开发的每一个阶段本质上与软件测试对应的每一个阶段所关注的是同一件事情:客户需求。区别在于,软件开发活动侧重于实现业务功能,以业务目标的实现为工作驱动,重视软件局部功能的实现,对软件整体功能的应用认识和考虑存在不足。软件测试活动则更强调对业务功能实现结果的检验,不考虑软件的具体实现技术,侧重从全局使用的角度检验软件设计和实现是否科学、合理、满足用户友好性,符合用户的实际需求。它们是两个互为补充的逆向工作过程。缺乏软件测试观念的开发团队,是难以有效开发出高质量软件产品的。

四、软件测试理念融入软件开发课程的意义

近年来随着工程教育认证的不断推广,对能力的提高逐渐成为教育的目标。一方面,在计算机类的职业教育和社会培训机构,甚至部分本科院校的计算机专业课程开设中,仍呈现出对编程技术的“过度”推崇和重视,大部分包括软件测试在内的专业综合理论和实践课程并没有发挥应有价值。学生掌握了丰富的编程技能却难以设计研发出具有实际应用价值的软件产品,知识停留在理论的掌握层面,学生专业技能很难得到进一步的提升和扩展。另一方面,因为所学技能太过丰富又缺乏综合性的课程将各项“技术技能”知识有效地关联起来,学生很难形成自己的知识体系,这对于学生长期发展是不利的。例如,部分学校希望将学生培养成“无所不能”的全线工程师,在其开设的课程中学生不仅要学习各种前后端编程语言,还要学习各种前后端框架的使用。从整体上看课程设置是非常完整的,但是从学生实际掌握的知识和技能提升方面来看,一部分学生能够使用所学习的各项技能但不精通技能水平,仅停留在认识和了解层面,另一部分学生可以熟练地使用所学的技能做出复杂惊艳的效果,却不懂得如何将这种高级效果合理地归置到软件产品中。

软件测试作为软件工程科学的重要内容和软件开发有着密切的关系。与纯编程技能课程不同,软件测试是综合性技能课程。它关注软件产品的整体,能够科学地指导编程学习者可以设计开出什么样的软件,什么样的软件作品才是具备实用价值的产品,完整的软件应该具备哪些必要条件,满足哪些的行业标准。

合理地将软件测试理论融入软件开发类课程中,一方面,可以让编程学习者将学习到的各项编程技能参考软件工程理论有方向地进行梳理;另一方面,也可以指导学生开发出更符合企业要求的产品,对提升学生的专业技能意义重大。

五、小结

本文首先提出了现有软件产品存在的问题以及未来软件产品和软件企业的发展趋势,确定了软件测试在保证软件质量方面的重要性。然后简单介绍了软件测试的相关工作即工作流程,重点分析了软件测试与软件开发的紧密联系。最后通过对现有计算机专业教学现状的思考,分析了将软件测试理论融入软件开发类课程在培养复合型计算机技能人才方面的重要性和深远意义。

[课题名称:2020年度湖南省教育厅科学研究项目优秀青年项目(课题编号:20B092)]

参考文献:

[1] 吴际.能力培养目标驱动的软件开发类课程实践教学方法研究[J].国内高等教育教学研究动态,2019(9):11-13.

[2] 朱少民.软件测试课程的问题驱动教学模式探索[J].中国大学教学,2018,338(10):34-38.

[3] 赵翀,高鹏.软件测试课程工程实践教学模式的探索与实施[J]. 计算机工程与科学,2014,36(A01)

[4] 辜萍萍.软件测试课程实验教学体系设计与实践[J].实验室研究与探索,2019,38(7)

[5] 吴际.能力培养目标驱动的软件开发类课程实践教学方法研究[J]. 国内高等教育教学研究动态,2019(9):13-13.

(作者单位:湖南财经工业职业技术学院 湖南衡阳 421002)

[作者简介:邹银凤(1991—),女,湖南衡阳市人,硕士研究生,湖南财经工业职业技术学院,助教,研究方向:计算机教育与教学。]

(责编:若佳)

猜你喜欢
软件开发软件测试
基于OBE的软件测试课程教学改革探索
EXCEL和VBA实现软件测试记录管理
关于软件测试技术应用与发展趋势研究
信息安全环境下的计算机软件开发研究
核电厂定期试验管理软件开发
FPGA软件开发过程中编码规范的作用
智能电能表软件测试技术概述
《软件测试》课程教学策略研究