刍议测试在软件工程中的应用

2014-10-14 08:09班雪韩军黄明炯史建军王宇恒
无线音乐·教育前沿 2014年11期
关键词:软件工程应用

班雪 韩军 黄明炯 史建军 王宇恒

摘 要:软件的测试环节做的好与坏,决定了整个工程的成败。从软件测试和软件可靠性理论入手,对现有的软件可靠性技术进行研究分析从中发现一些问题就是软件测试的主要目的。与此同时要总结出现有可靠性模型的特点并分析出现有可靠性模型所存在的局限性与不足,以方便后续开发程序中注意存在的问题。

关键词:刍议测试 软件工程 应用

中图分类号:TP311.56 文献标识码:A 文章编号:1672-8882(2014)10-120-01

一、软件测试是属于开发阶段最后一段时间的主要工作。需要对软件进行全方位的测试,以确保软件在上线运营时不会出现影响正常功能使用上的问题。软件测试时一项非常重要的工作,也是软件工程中一个重要的环节。软件测试是在软件投入运行前,对软件需求分析,设计规格说明和编码的最终复审,是软件质量保证的关键步骤。常见的测试方法有黑盒测试与白盒测试等。软件工程中的测试,必须要用正确的方法,才能提高效率并且行之有效的解决整个开发过程中的问题,并且能为后期的维护提供最大的便利。而我们最经常用到的测试方法就是黑盒测试與白盒测试。例如我们在做web程序的黑盒子测试时会经常使用一些Fuzzing工具去进行一些压力的测试,有时候也会进行一些安全性的比如跨站脚本攻击的测试、SQL注入攻击的测试、跨域提交漏洞的测试等等注入此类在不知道程序源代码情况下的Fuzzing技术都属于黑盒测试的范畴。用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出,但这是不可能的。科研中大部分的黑盒测试都可以通过编写代码来实现全自动化的安全测试,这样可以解放人的不断重复性劳动,是一种在做黑盒测试中最常见的方式。把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致,这就是白盒测试。白盒测试又称为结构测试或逻辑驱动测试。软件人员使用白盒测试方法,主要想对程序模块进行如下的检查:对程序模块的所有独立的执行路径至少测试一次;对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次;在循环的边界和运行界限内执行循环体;测试内部数据结构的有效性等。白盒测试是一种比较容易找出软件编码中存在的严重问题的方式,他通过通读源代码,来发现整个工程中存在的一些逻辑漏洞,或者一些危险函数的利用。有时候也可以通过监测输入数据与输出数据的中间流程来发现是否存在输入未过滤或者输出不合法等问题。我们以PHP脚本语言问例,当前很多的WEB端软件工程多是用PHP开发完成,而PHP语言存在的危险函数和危险变量则多达几十个如果稍有使用不慎,就会造成较为严重的安全漏洞。在PHP的设置中register_globals = Off,PHP在进程启动时,会根据register_globals的设置,判断是否将$_GET、$_POST、$_COOKIE、$_ENV、$_SERVER、$REQUEST等数组变量里的内容自动注册为全局变量。

二、软件测试在软件工程中的现实意义。由于目前我国软件产业的现状,存在多个开源或者非开源项目均曾经爆出过较为严重的安全漏洞问题。如下是国内某著名开源软件工程中存在的一个存储型跨站脚本攻击的代码。 数据库系统是应用较为广泛的多用户共享资源,具有通用、独立、冗余少、安全、完整的特性,因此,在进行数据库系统设计时应采用软件工程的方法。主要是对数据管理、库结构设计与建立、系统设计、语言的选择与设计、实用程序的编写、功能模块的设计等方面应用软件工程的理论和方法。在进行这些设计的需求阶段,应确定对软件的设计方法、所使用的描述工具、目标实现、推广使用等方面进行论证,然后根据用户和系统要求,进行包括上述功能的软件设计、输入输出设计、用户设计和模块功能、接口设计,然后编写用于数据库实现的编译、连接、测试等语言程序,使所设计的数据库系统具有易开发、易推广、易理解的高质量、高效率的软件。故,应用软件工程的理论和方法,可以设计较复杂的系统软件,使设计工程化、系统化,比较快的提高软件研制的质量和水准。设计是软件工程的核心,就是把需求变换成为软件的具体方案,软件设计一般分为总体设计和详细设计两个阶段,总体设计是根据需求所得到的数据流、数据结构,使用结构设计技术,导出软件模块结构;详细设计是使用表格、图形或自然语言等详细设计工具,按照模块设计准则进行软件各个模块的具体过程的描述,如模块的分解与合并、低耦合性、高内聚性的特点,以及模块的作用、控制范围、复杂性和接口,按步骤进行设计。软件编码把用户的要求变为计算机能够接受的形式,为每个模块编写程序,即写成以某一种特定程序设计语言表示的源程序清单。自然,写出的程序应当是结构良好、清晰易读又与设计一致。

结语:在实际开发中,要使测试目标都达到理想的程度往往非常困难,而且上述目标很可能相互冲突。如追求降低开发成本,很可能同时也降低了软件的可靠性;若过于追求软件的性能,则可能造成软件对硬件有较大的依赖性,从而直接影响软件的可移植性等。

参考文献:

[1]张海藩.软件工程导论[M].北京:清华大学出版社,2008.

[2]刘润彬.软件工程简明教程[M].大连:大连理工大学出版社,2013.

作者简介:班雪(1992-),布依族,本科,研究方向:软件相关专业;韩军(1989-),撒拉族,本科,研究方向:软件相关专业;黄明炯(1993-),苗族,本科,研究方向:软件相关专业;史建军(1991-),男,汉族,本科,研究方向:软件相关专业;王宇恒(1992-),汉,本科,研究方向:软件相关专业。

猜你喜欢
软件工程应用
依托工作室的软件工程实践教学研究
应用瀑布模型的MOOC制作方法
融合APTECH体系的软件产业人才培养探究
基于工程教育认证的《软件工程》课程教学质量建设研究 
关于如何创新和完善计算机软件工程管理的探讨
多媒体技术在小学语文教学中的应用研究
分析膜技术及其在电厂水处理中的应用
GM(1,1)白化微分优化方程预测模型建模过程应用分析
煤矿井下坑道钻机人机工程学应用分析
气体分离提纯应用变压吸附技术的分析