法晓宇 王洁
(1.中国电子科技集团公司第28研究所 江苏南京 210007;2.江苏省教师培训中心 江苏南京 210013)
对于软件研发企业而言,软件编写完成之后必须进行一系列测试,发现软件中的漏洞并及时改进,有效提高软件的质量。当然,市场中并没有完美无缺的软件,软件的测试过程更重要的还是给用户提供更好体验。通常,在软件测试过程中,为了得到全面的测试结果,往往选用多个平台进行软件测试工作,在平台选择过程中,应当按照软件本身的特点进行精准选择。
软件测试这门学科是随着计算机行业的发展而发展的,早期的软件由于当时的计算机性能所限,其结构较为简单,功能也较为单一,通常并不需要进行软件测试工作,但现代的计算机软件功能复杂,占用空间也更多,自身也难免存在一些影响软件运行的因素,这些因素往往会影响用户的使用体验,因此,必须对软件进行测试,其目的是,检验软件是否满足实际需要,或至少弄清楚实际结果与预期结果的差距[1]。软件测试的意义主要是尽可能避免软件出现漏洞或运行错误,如果软件的漏洞和运行错误较少,那么用户的使用体验显然会更好,由此可见,软件测试工作是整个软件开发过程中的重要环节。
计算机软件的多平台测试过程中需要遵循实用性原则和科学性原则两点。一方面,各种计算机软件的具体数据都大有不同,开发类型往往也各不相同,如果直接进行测试,往往过程复杂,因此,需要遵循实用性原则来进行软件测试工作,在测试过程中要适当简化流程和降低测试难度,尽量提高测试方法的使用价值,尽快完成有效测试以确保软件开发工作高效完成;另一方面,测试过程也要坚持科学性原则,在测试前明确多平台测试的具体职能所在,确保测试有效,同时测试人员在测试工作中也务必严谨工作,确保测试工作准确完成[2-3]。
计算机软件在多平台下的测试流程主要分为以下几个步骤:(1)根据实际情况,对测试方案进行设计规划,如测试运行需求和动态发展就采用黑盒测试方法,如进行结构性测试则采用白盒测试方法;(2)根据现有测试方法搭建测试模型,在搭建模型中,需要注意考虑计算机系统的兼容性问题;(3)根据测试软件类型的不同,对每种测试方法进行分配;(4)在实际测试过程中搜集相关信息,重点搜集运行错误的信息,以此来提供修改依据,在完成修复后,立刻进行二次测试,确保整个测试工作完整,进而提高软件开发合理性和实用性[4]。
软件测试的要点是,保证软件系统和测试平台的工作状态一致,这就需要测试人员合理协调测试流程,确保整体效果符合预期。众所周知,各种软件的开发习惯和操作界面往往都大相径庭,这是影响多平台测试效率的一个重要因素,因此在实际操作过程中,要注重采取通用的测试平台来进行测试,通过测试来发现软件的各种缺陷和错误,进而为后期的软件修复工作提供参考[5]。
合理地选择测试平台是测试结果准确的有力保障,因此在选择测试平台时务必慎之又慎。如今的软件测试平台可分为专业型和全面型两大类。专业型测试平台更侧重于测试软件的某一功能,优点是可以针对性测试软件并及时发现软件中的问题,缺点是如果软件功能较多,就必须花费大量时间进行测试工作;而全面型测试平台侧重于统一测试软件的所有功能,优点是一定程度上可以提高软件测试效率,缺点是软件测试结果的准确性相对较低。因此在实际测试过程中,测试人员必须根据软件的实际特点来选择测试平台,确保测试的效率和质量[6]。
人的因素始终是一切工作的关键因素,因此测试人员的工作对于计算机软件的测试结果至关重要。测试人员的工作大致分为以下几个步骤:(1)在测试项目立项后,进行需求评审,开发人员、测试人员和评审人员三方根据自己的经验和专长来讨论需求,软件开发人员从技术实现角度进行讨论,测试人员从用户角度进行讨论,各方通过讨论来提出自己的意见建议,力求意见一致,在会议结束后,安排好项目进度;(2)确定测试方案后,编写全面的测试用例,做好测试用例的评审工作,以进行测试的前期准备,如测试前期准备出现异常情况就应当及时通知另外两方暂停工作;(3)通过各种工具和平台来进行具体测试工作,评估影响范围和漏洞的级别,并及时与相关开发人员进行沟通,随时跟进这些问题;(4)在软件测试工作完成后,认真记录好相应资料,并将资料归档。
多平台的计算机软件测试虽然效果显著,但对于人力物力财力的消耗也是显而易见的。为了降低成本,集成自动化测试领域得到了一定的研究和发展,这项技术可以模拟出多平台测试的效果,目前已得到设计与实现的自动化测试平台是Web自动化测试平台,该平台主要分为统一的脚本开发框架设计和自动化调度设计两个模块,使用Selenium自动化框架来搭建一个自动化测试平台,来实现其测试的功能[7]。
整体来看,集成自动化软件测试平台具有六个重要模块:
(1)分布式集群管理模块,用来对多台自动化测试的设备进行集群管理,根据实际工作需要,采用消息队列的方式来分发各设备的任务,并收集这些任务的执行结果,如发现执行过程异常,则刷新一次设备状态列表,将出现异常的设备及时清理出可用列表;
(2)任务调度和执行设计模块,用于满足多用户对平台的使用需要,同时在逻辑上实现良好的多用户隔离,使各个用户之间的工作互不干扰,该模块可以实现统一的任务调度管理,这项技术是通过可靠的节点集群、合理网络规划、监控集群节点并对其进行动态增减这3种方式来实现的;
(3)日志和运行监控设计模块:进行自动截图和录屏功能,在任务执行中一旦出错就可以自动保存出错状态,为工作人员解决问题提供参考依据;
(4)邮件通知模块,该模块是平台与用户通信的重要途径,可以随时告知用户的任务执行结果或执行异常情况,这一模块的设计重点在于对发送人员和收件人进行分组定义,一般来说,人员的分组配置需要提供发件人的邮箱和密码,而由于企业内部通信需要数字证书签名确认,因此发件人申请邮箱时可不使用数字证书签名;
(5)测试结果管理模块:采用TestNG框架,并以html文档的格式来展示测试结果,同时,为了方便用户直接查看结果报告,在邮件通知中会给出结果报告的地址路径。
(6)定时任务和计划任务模块:灵活调度任务安排,从而做到对测试平台的充分利用,减少任务等待时间。
而对于数据库设计而言,在设计前需要综合各方面因素,结合实际情况来选择数据库,对于数据库结构层次的设计要确保清晰合理,否则不仅会造成结构复杂和效率低下等问题,还容易导致后期的升级和维护工作难度加大。
集成自动化测试平台是依托于统一脚本开发框架实现的,框架中包括页面对象模块、公共方法模块、测试脚本模块和测试工具类模块。在平台运行前,需要对其进行测试,其测试用例应当事先在TestNG.xml当中进行配置,再通过TesgNg注解标识来进行相应的测试[8]。
任务调度模块的实现首先需要进行设备状态列表的设计工作,列表应当显示设备的IP地址、设备名称、工作状态等基本信息,同时,列表应当具有可编辑性,能够手动添加或删除列表中的设备,在添加设备时应填写相关信息,这些信息可通过消息队列与服务器进行通信。其次是日志和异常管理功能,该功能的实现,需要对TestNG所生成的html格式文本进行解析来获取数据,然后将这些数据存储到数据库当中并展现,从而实现测试工作的统一管理,所提取分析的数据应当包括项目名称、测试类型、脚本路径、测试结果、开始和结束时间等,方便后期对测试结果进行分析和排查。最后是测试结果的管理功能,这项功能根据日志中所提取分析的数据,确认测试结果是否成功,并将这些结果以邮件方式发给用户。
集成自动化软件测试平台实现的最后一个步骤就是在实际条件下或高度仿真环境下对平台进行集成测试和验证测试,验证平台是否符合实际需求,测试过程中,主要测试内容是平台统一脚本开发框架功能和平台任务调度模块功能,除此之外,测试人员通常也会对非功能需求方面进行测试工作。
在这个信息化时代,软件是人们日常工作生活当中所不可或缺的,因此软件的测试工作也就成了必不可少的一项工作,以往的软件测试平台已不能满足现阶段软件测试工作的实际需要,必须合理利用多平台下的计算机软件测试方法来进行软件测试工作。当然,软件测试工作是一项复杂工作,需要测试人员根据实际情况选择针对性的方案,不仅如此,软件测试人员还应当在现有技术的基础上,积极探索和创新,不断提升自己的综合水平,为软件测试效率和质量的提升贡献力量,进而促进软件行业继续高速发展。