掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明是有关于一种计算机程序的在线测试系统及测试方法。

背景技术

政府机关或企业单位有时会委托外部的程序开发者进行程序开发。受委托的程序开发者在程序开发的阶段往往需要委托者提供资料进行测试,以评估所开发的程序是否有达到委托者要求的标准。然而,基于个资法规或企业机密的考量,有些机敏资料例如医院病历、银行账户资料、客户交易历史资料或税务资料等并不适合提供给程序开发者。因此,现行常见的方式是通过在线测试的方式,由程序开发者将要测试的程序上传至线上测试平台进行测试,在线测试平台会将测试得到的评分告知程序开发者,以让程序开发者可以对程序进行改良。然而,这种方式并非万无一失。有心人士实际上可以透过在程序中添加特定机制、多次上传以及分析评分结果来盗取机敏资料。

公开内容

本发明的一方面揭露一种用于计算机程序的在线测试系统。在线测试系统具有封闭的运行环境。在线测试系统包括通信单元、存储单元及运算单元。通信单元用以与外部装置连接,并接收来自外部装置的一计算机程序。存储单元用以存储原始资料、程序执行模块、资料产生模块以及评分模块。运算单元耦接至通信单元及存储单元。当接收计算机程序后,运算单元被配置以:执行资料产生模块,以根据原始资料产生测试资料及对应于测试资料的解答;执行程序执行模块,以根据测试资料执行计算机程序以产生执行结果;以及执行评分模块,以根据执行结果及解答产生分数。

本发明的另一方面揭露一种用于计算机程序的测试方法,适用于具有封闭的运行环境的线上测试系统。测试方法包括:通过在线测试系统的通信单元接收来自外部装置的计算机程序;通过在线测试系统的运算单元执行资料产生模块,以根据存储于在线测试系统的存储单元的原始资料产生测试资料及对应于测试资料的解答;通过运算单元执行程序执行模块,以根据测试资料执行计算机程序以产生执行结果;以及通过运算单元执行一评分模块,以根据执行结果及解答产生分数。

附图说明

图1为本发明实施例的用于计算机程序的在线测试系统的结构图。

图2为本发明实施例的用于计算机程序的测试方法的流程图。

图3为本发明另一实施例的用于计算机程序的测试方法的流程图。

附图标记说明

10:在线测试系统

100:通信单元

102:存储单元

104:运算单元

106:程序执行模块

108:资料产生模块

110:评分模块

112:验证模块

90:外部装置

S201~S309:步骤

具体实施方式

请参照图1,图1为本发明一实施例的用于计算机程序的在线测试系统的结构图。在线测试系统10包括一通信单元100、一存储单元102、一运算单元104、一资料产生模块108、一评分模块110。在线测试系统10具有一封闭的运行环境。举例来说,在线测试系统10会限制来自外部网络的存取权限,例如只被允许执行上传操作,而不允许执行下载或读取在线测试系统10中的部分或全部资料。

通信单元100用以与一外部装置90无线或有线连接,以与外部装置90传送/接收信息或资料。通信单元100可以是通用的或专用的通信芯片。

存储单元102例如是任何型态的固定式或可移动式的随机存取存储器(randomaccess memory,RAM)、唯读存储器(read-only memory,ROM)、快闪存储器(flash memory)、相变化存储器、硬盘(hard disk drive,HDD)、暂存器(register)、固态硬盘(solid statedrive,SSD)或类似元件或上述元件的组合。需要注意的是,在本实施例中,存储单元102指的是用以存储资料及计算机指令的记忆装置的集合,并不限定记忆装置的数量及类型。存储单元102可存储一原始资料。

运算单元104耦接至通信单元100及存储单元102。运算单元104例如是中央处理单元(central processing unit,CPU),或是其他可程序化的一般用途或特殊用途的微控制单元(micro control unit,MCU)、微处理器(microprocessor)、数字信号处理器(digitalsignal processor,DSP)、可程序化控制器、特殊应用集成电路(application specificintegrated circuit,ASIC)、图形处理器(graphics processing unit,GPU)、算术逻辑单元(arithmetic logic unit,ALU)、复杂可编程逻辑器件(complex programmable logicdevice,CPLD)、现场可编程门阵列(field programmable gate array,FPGA)或其他类似元件或上述元件的组合。

程序执行模块106、资料产生模块108以及评分模块110可通过计算机可读指令的组合实现,并存储于存储单元102中。运算单元104通过执行存储于存储单元102的资料产生模块108以及评分模块110来实现资料产生模块108以及评分模块110的功能。

程序执行模块106用以执行来自外部装置90上传的一计算机程序PRG。

资料产生模块108用以根据原始资料产生一测试资料及对应于测试资料的一解答。资料产生模块108可通过变换顺序(shuffling)及/或取样(sampling)的方式来产生测试资料。举例来说,假设原始资料共有第一笔至第一百笔共一百笔资料。在通过变换顺序的实施例中,资料产生模块108可将一百笔的资料随机排序,以产生测试资料。在取样的实施例中,资料产生模块108可从一百笔的资料中随机选出九十笔,以产生测试资料。在同时使用变换顺序及取样的实施例中,资料产生模块108可从一百笔的资料中随机选出九十笔,并将选出的九十笔资料随机排序,以产生测试资料。所谓解答是指当测试资料被用来进行测试计算机程序PRG时所预期得到的正确结果。举例来说,测试资料包括一百张图片,解答则是指此一百张图片中分别显示的物件为何(例如图片显示的是人、汽车或机车等)。测试资料与解答详细的用途会于下文详述。

评分模块110用以根据外部装置90上传的计算机程序PRG根据测试资料产生的一执行结果及解答产生对应于测试资料的一分数,并将分数传送至外部装置90。

为了进一步理解本发明,请参照图2,图2为本发明一实施例的用于计算机程序的测试方法的流程图。测试方法可搭配在线测试系统10进行应用。

S201中,通过通信单元100接收来自外部装置90的计算机程序PRG。计算机程序PRG可以是以Python、Java、R、Julia、Matlab、Octave、Scheme、Processing、Scala、C、C++或汇编语言等程序语言所编程的程序。在一实施例中,外部装置90上传的计算机程序PRG会被存储至存储单元102。

S203中,通过运算单元104执行资料产生模块108,以根据原始资料产生一测试资料及对应于测试资料的一解答。

S205中,通过运算单元104执行程序执行模块106,以根据测试资料执行计算机程序PRG,并产生一执行结果。针对每次外部装置90上传的计算机程序PRG,资料产生模块108都会产生不同的测试资料及解答,以避免直接使用原始资料,借以降低原始资料被盗取的风险。

在一实施例中,运算单元104可通过代理人(agent)来执行计算机程序PRG,并且是以测试资料而非原始资料做为执行计算机程序PRG所使用的资料。举例来说,当运算单元104执行程序执行模块106时,会致使运算单元104呼叫存储于存储单元102的一代理人程序,并由代理人程序来执行计算机程序PRG。通过这样的方式,可以使得程序执行模块106可以掌控计算机程序PRG的执行状况以及令计算机程序PRG在一个权限受限的环境下执行,一旦计算机程序PRG有任何的恶意行为,程序执行模块106便可以透过中止执行代理人程序来强制中止计算机程序PRG,以避免计算机程序PRG对在线测试系统10造成损害。以一实际例子来说,当计算机程序PRG是以Java语言所编程时,代理人程序可为用以执行Java程序的执行器。

S207中,通过运算单元104执行评分模块110,以根据执行结果及解答产生一分数。一般而言,执行结果与解答会具有相同的格式,以利评分。然而,在某些情况下,例如程序设计失误导致计算机程序PRG无法产生与解答的格式相应的执行结果时,评分模块110将无法针对格式错误的执行结果进行评分。因此,在S207之前,更可包括步骤S206,通过运算单元104执行在线测试系统10的一验证模块112,以判断执行结果是否可进行评分,也就是判断执行结果的格式是否与解答的格式相符。验证模块112可以通过计算机可读指令的组合来实现,且存储于存储单元102中。当运算单元104执行此些计算机可读指令时可以实现验证模块112的功能。当判断执行结果可进行评分,则执行S207;当判断执行结果无法进行评分,则执行S208。在一实施例中,计算分数的方式可根据正确率。例如,测试资料包括一百笔资料,具有正确格式执行结果会包括对应于此一百笔资料的一百个结果。评分模块110会将此一百个结果与解答所包括的对应于此一百笔资料的一百个正确答案(ground truth)进行比较,并计算正确率,以产生分数。例如当此一百个结果中有九十个结果与解答相符,则正确率为90%,则分数可为0.9。

S208中,通过运算单元104将一错误信息记录至存储单元102,并将错误信息通过通信单元100传递至外部装置90。

S209中,通过运算单元104将分数记录至存储单元102,并将分数通过通信单元100传递至外部装置90。

请参照图3,图3为本发明另一实施例的用于计算机程序的测试方法的流程图。本实施例的方法可用于测试基于机器学习的计算机程序PRG。

S301中,通过通信单元100接收来自外部装置90的计算机程序PRG。计算机程序PRG可以是基于机器学习的程序。

S303中,通过运算单元104执行资料产生模块108,以根据原始资料产生一训练资料、一测试资料及对应于测试资料的一解答。在一实施例中,资料产生模块108会将原始资料切割为一第一部份及一第二部分。资料产生模块108会根据第一部份产生训练资料。例如,资料产生模块108可将第一部份做为训练资料,或者资料产生模块108可通过变换顺序及/或取样的方式根据第一部分产生训练资料。另一方面,资料产生模块108会根据第二部分产生测试资料及解答,产生的方式与前文所述类似,故不加以赘述。在一实施例中,对于每次上传的计算机程序PRG,训练资料可以是相同的。也就是说,第一次计算机程序PRG被上传时所产生的训练资料可继续用于之后上传的计算机程序的训练。在另一实施例中,对于每次上传的计算机程序PRG则会重新产生训练资料。

S304中,通过运算单元104执行程序执行模块106,以根据训练资料执行计算机程序PRG,以对计算机程序PRG进行训练。

S305中,通过运算单元104执行程序执行模块106,以根据测试资料执行经过训练的计算机程序PRG,并产生一执行结果。在一实施例中,运算单元104可通过代理人(agent)来执行计算机程序PRG,并且是以测试资料而非原始资料做为执行计算机程序PRG所使用的资料。针对每次外部装置90上传的计算机程序PRG,资料产生模块108都会产生不同的测试资料及解答,以避免直接使用原始资料来降低原始资料被盗取的风险。

S307中,通过运算单元104执行评分模块110,以根据执行结果及解答产生一分数。一般而言,执行结果与解答会具有相同的格式,以利评分。然而,在某些情况下,例如程序设计失误导致计算机程序PRG无法产生与解答的格式相应的执行结果时,评分模块110将无法针对格是错误的执行结果进行评分。因此,在S307之前,更可包括步骤S306,通过运算单元104执行在线测试系统10的一验证模块112,以判断执行结果是否可进行评分,也就是判断执行结果的格式是否与解答的格式相符。当判断执行结果可进行评分,则执行S307;当判断执行结果无法进行评分,则执行S308。计算分数的方式可参考前文所述。

S308中,通过运算单元104将一错误信息记录至存储单元102,并将错误信息通过通信单元100传递至外部装置90。

S309中,通过运算单元104将分数记录至存储单元102,并将分数通过通信单元100传递至外部装置90。

本发明可以确保原始资料免于被盗取的前提下对计算机程序进行评分,并将评分告知外部装置。实际应用上,本发明可应用于在线程序竞赛,参赛者可多次上传计算机程序进行评分,并根据评分来改善计算机程序。然而,参赛者无法直接碰触到原始资料,且由于在线测试系统测试计算机程序时不是直接使用原始资料进行测试,有心人士也无法通过多次上传计算机程序及分析评分结果来盗取原始资料。

综上所述,虽然本发明已以实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视后附的申请专利范围所界定者为准。

相关技术
  • 用于计算机程序的在线测试系统及测试方法
  • 一种适用于反熔丝型FPGA的通用在线测试系统及测试方法
技术分类

06120112923347