互联网时代背景下基于软件测试的软件工程特色专业建设研究
2018-02-09沈海波朱雄泳
沈海波,朱雄泳
(广东第二师范学院计算机科学系,广州 510303)
0 引言
随着我国IT技术和行业的快速发展,软件产品已广泛应用于各行各业,软件质量成了企业的生命线,软件产品的质量控制与质量管理正逐渐成为企业生存与发展的核心,甚至是构建和谐社会的重要组成部分。随着软件项目越来越凸现大型化、复杂化,软件开发中出现错误或缺陷的机会越来越多。所以,作为发现错误的重要手段的软件测试在软件项目实施过程中的重要性日益突出。软件测试的地位和作用,越来越真正受到重视。同时,对软件测试人才的需求也越来越大。软件工程专业是培养软件人才(包括软件测试人才)的主战场,而随着互联网的快速发展、广泛应用和互联网+在国家层面的战略实施,越来越多的传统企业已经开始结合互联网优势(人工智能、大数据、云计算、物联网等)来升级或者创造新的商业模式,而软件测试顺应全球化和信息化发展趋势,与这些都有密不可分的关系[1-2]。在互联网模式的冲击下,快速迭代、持续发布、不断试错成为软件开发的关键字,这一切不断冲击着传统软件测试中赖以生存的“流程”、“规范”等优势,给软件测试带来了极大的冲击,对软件测试人才的能力需求也越来越高。因此,如何基于软件测试来进行软件工程特色专业建设,是值得我们深入思考的问题。
1 软件测试在软件工程中的地位与作用
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。软件质量的内涵包括三方面:完整的需求、正确的代码和最少的缺陷。软件测试,描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序bug(缺陷),衡量软件质量,并对其是否能满足设计要求进行评估的过程,可以尽可能减少研发、测试、售后的成本[3]。
在经典的软件工程瀑布式模型中,软件生命周期分为需求、设计、软件开发、软件测试、部署五大阶段。可见,软件测试是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤,也是软件质量保证的重要手段之一,在软件生命周期中占据重要的地位,被称为软件质量的安全副驾驶。一个软件的好坏、质量的优劣不仅取决于软件的开发目标及其可行性的评估、功能需求的分析、软件的设计以及程序代码的编写,还取决于软件测试。软件测试的作用,可以概括为如下几个方面:
第一是确认软件的质量。通过测试发现所要交付软件产品的bug,特别是尽可能地发现各种严重的bug,降低或消除产品质量风险,提高客户的满意度,从而扩大市场份额。需要注意的是,现在质量的概念,已经不仅仅是bug,还包括用户体验满意度,包含感觉和情感的成分。
第二是提供信息。对产品质量完成全面的评估,可以为软件产品发布、软件系统部署、软件产品鉴定、第三方独立测试的纠纷仲裁和其他决策提供信息。
第三是保持质量的持续、全面改进。通过持续的测试可以对软件产品质量提供持续的、快速的反馈,从而在整个开发过程中不断地、及时地改进产品的质量,并减少各种返工,降低软件开发的成本,提高用户的满意度。
第四是防止错误重现。通过对bug进行分析,找出bug发生的根本原因(软件过程中的问题,包括错误的行为方式)或总结出软件产品的缺陷模式,避免将来犯同样的错误或产生类似的产品问题,达到bug预防的目的。
2 互联网时代软件测试的特点
我们通常把非互联网的软件称为传统软件,传统软件产品通常以光盘、U盘为载体以类似于实物的方式进行生产和出售,软件的产出方式也是严格遵守软件工程的流程,对传统软件的测试一般遵循软件测试流程:需求分析-测试设计-用例设计-测试执行-报告评审,重点在于测试过程。目的就是尽可能在测试前深入了解业务和实现,设计出各种组合的测试用例,最终保证产品的质量。但互联网软件的测试与传统软件的测试相比较,具有自己的一些特点。
(1)要求测试周期更短。互联网软件(特别是移动互联网应用)通常采用敏捷开发模式,设计-开发-运营,快速迭代,持续改进,更新速度快,从而快速响应市场需求。在互联网行业,如果一个产品半年发布一次,那么很快就会失去市场竞争力,被市场淘汰。因此,软件测试周期更短、更平、更快,通常采用持续自动化测试。
(2)要求测试工作前移。软件的质量很大程度上主要是代码的质量,所以提高开发提交的代码质量是一个很重要的问题。传统的流程体系中,测试作为上线前的最后一道关,一般接入版本的时机较晚,并且以独立的测试工作为主,较少的参与项目需求和设计方面的工作。测试的介入时机提前,与分析和开发同步,可从产品的概念和设计阶段就介入,参与需求的分析和讨论,特别是由软件开发人员进行详细的单元测试,将大大提高软件的质量,修复bug的代价也越小。当然,测试工作的前移,需要以测试思维为主的思想。
(3)移动互联网应用测试面临更多挑战。随着移动互联网的深入发展,移动应用在智能手机、平板电脑等移动终端设备中得到了广泛应用,并深受广大用户的喜爱。但由于移动设备的多样化、操作系统平台的多样性、网络基础设施和协议的多样性、海量的用户、不同浏览器的兼容性、大量的测试接口、各种测试工具等,对移动互联网应用产品提出了更高的性能、安全性等方面的要求,也给移动互联网应用的测试带来了独特的挑战。
(4)新型IT技术的发展和应用带来极大的挑战。基于人工智能、云计算、物联网、大数据等新型互联网IT技术的发展和应用,出现了人工智能测试、云测试、物联网测试、大数据测试等需求,它们需要一些新的测试方法、技术、平台和工具,这就需要测试人员不断学习这些新技术、新方法和新工具,才能有针对性完成相应应用软件的测试工作。
3 互联网时代对软件测试人才的能力需求
互联网行业最大的特点是更新速度快,因此产品或业务也是不停地迭代从而快速响应市场,适应用户体验需求。从这个角度上说对测试人员的要求也更高,不仅仅需要传统的测试技能,更需要深入理解业务需求,挖掘用户潜在的需求,并做好风险控制与防范,在做好功能测试的同时,对安全测试、兼容性测试、集成测试、接口测试以及用户体验性测试等方面提出了更高的挑战。综合各种IT企业的招聘需求,我们可以归纳出对软件测试人员的总体能力要求:一个合格的软件测试工程师应具有专业的知识背景、实际的操作经验、逆向的思维能力、团队的合作精神、快速的学习能力、优秀的书面表达能力、较强的沟通能力和责任心、工作细致认真和耐心。可以看出,互联网时代需要是既懂软件开发技术、又懂软件测试技术、还要懂项目管理的高端软件测试人才。
我们可以进一步把软件测试人才的能力需求细分为基本、中级、高级三个层次。基本能力需求主要包括:具备计算机科学和软件工程方面的基础理论、基本知识、基本方法和基本技术;拥有软件测试基本能力(软件测试基本知识、主要测试工具的使用);职业基本素质能力(沟通和协作、书面表达能力、责任心和耐心)。这里要强调一点的是书面表达能力的重要性,撰写测试计划、测试方案、测试用例、测试报告、缺陷报告等各种测试文档是测试工作必不可缺少的工作,它们是测试工作的重要成果。测试设计的基础是分析,而分析的基础是测试思维方式和思维能力,具备良好的开发能力且熟悉开发人员的思维和习惯,则可以更好地做好软件测试工作。因此,中级能力需求主要包括:测试思维方式能力(逆向思维方式、组合思维方式、全局思维方式、两极思维方式、比较思维方式、批判性思维方式等)、测试分析和设计能力(能根据需求设计出用户场景、业务流程、分支流程和异常场景,并构建测试用例)、开发者测试能力(较好的编程能力、能熟练进行单元测试和集成测试等)。除了上述能力外,熟练掌握自动化测试工具,打造快速测试和持续交付能力,才能满足互联网应用快速迭代更新的需求。对于测试人员来说,如果不了解产品和业务,不理解产品的构建技术,测试工作很难开展。要成为测试领域技术专家、成为技术和测试团队管理者,一定的测试管理能力是不可缺少的。因此,高级能力需求主要包括:业务理解拓展能力(业务理解与建模能力、缺陷管理和根因分析能力等)、快速自动化测试能力(各种测试工具的熟练运用能力、测试脚本开发与调试能力、新型测试方法和策略的掌握与运用能力、各种专项测试能力等)、测试管理能力(团队领导能力、项目管理能力、决策与规划能力等)。
4 软件测试课程体系设置与能力培养
上述能力需要相关的课程体系来培养。由于普通本科院校并没有设置软件测试专业(只有部分职业技术学院开设)[4],因此在目前的教学体系中,软件测试只是作为软件工程专业的一门主干课程进行开设,分别设置有理论部分、课程实验和课程设计,但随着互联网时代行业对软件测试人才能力要求的提高,特别是移动应用测试、Web安全测试、嵌入式测试、Web自动化测试的出现,一门课程和有限课时的实验,是远远达不到行业的需求。因此,以软件测试作为软件工程专业特色,针对互联网时代对软件测试人才的能力需求的三个层次,需要系统化地设置软件测试课程体系[5-6],这个课程体系要服务于上述能力的培养。我们根据高等学校本科软件工程专业应用型人才培养指导意见(2016版),提出了课程体系,如表1所示。
表1 软件测试课程体系
5 结语
加强专业特色建设是提升专业核心竞争力的关键。随着软件全球化竞争的加剧,为了提高软件质量,降低软件开发成本,软件测试成为重要推动力。随着互联网+、移动互联网、人工智能、云计算与大数据等IT新产业的迅速发展,专业化的软件测试人才成为国内IT行业、软件企业的迫切需求。如何基于软件测试来建设软件工程特色专业,本文作了一些有益的探索。
致谢:在本文的写作过程中,参考了2017年8月在青岛举行的全国高校软件测试教学师资培训班上同济大学朱少民教授、南京大学陈振宇教授及其他老师的讲义,在此特致以谢意。
[1]王磊,黄璞,徐力杰.移动互联网时代高校课堂管理方式的改革探讨[J].现代计算机(专业版),2017(4):51-52.
[2]张泳.软件工程专业移动互联网方向应用型人才培养探索[J].中国大学教学,2015(5):53-55.
[3]朱少民.软件测试方法和技术(第3版)[M].北京:清华大学出版社,2014.
[4]卢克,吴建玉.高职软件测试专业课程体系建设的探索与实践[J].职教论坛,2013(20):46-48.
[5]李静,赵志升.软件测试专业课程体系建设和教学改革[J].教育与职业,?2014(2):135-137.
[6]鞠小林,陈翔,文万志,等.互联网+背景下的软件测试课程教学体系构建[J].计算机教育,2017(5):112-116.