
持一些依赖于计算机自动化评测的应用来说,有着重要的意义。这一系统最初用于支撑 ACM/ICPC 竞赛,并保证竞赛的公平公正[1],而在经过一些必要的扩展之后,可以应用于所有需要使用自动化黑盒测试进行评判的场合,例如程序设计类课程的教学与考试[2],亦可用于计算机辅助
教学[3-4]。5852
目前,大部分在线评测系统都着眼于如何准确、高效地评判代码是否正确运行,
在系统中判题子系统成为了整个系统的核心[1]。对判题子系统的研究主要集中在确
保判题过程的公正可靠[5],确保危险代码不破坏系统[6-7],通过引入分布式评测或
借助云计算环境来提高可靠性和容错能力[8-9],以及如何进行快速高效的结果比对
[10]。一些更深入的研究着力探讨如何更精确地计时,并完成更公平公正的判题流程
[11],以及如何利用多核多线程的优势提升单台服务器的负载能力[12]。同样也有一
些尝试从其他方向实现并优化在线评测系统的案例,例如使用 XML 代替数据库实现持
久化,并使用 XSLT 来控制表示层的呈现以减轻服务器端处理负载等[13]。而这些在
线评测系统几乎都采用了经典的三层架构,加上评判内核(即判题子系统),构成“表
现层——业务层——评判内核——持久层(数据层)”的体系结构[14],同时由于在
线评测系统固有的瘦客户端的设计,B/S 结构成为大多数平台的首选[15-19],一些评
测平台会提供自己的客户端以支持更多服务[10]。
在判题子系统之外,一些评测系统虽然有所扩展,但也只是集中在添加竞赛模块
用以支持具有一定伸缩性的比赛,或是添加诸如文件提交或胖客户端提交等更多的提
交方式[10],又或是进行一系列改动使之更适应于程序设计类课程的在线评判[20],
并研究组卷过程中难度系数的衡量以及组卷算法的设计[21]。但有必要指出的是,这
些扩展点的加入在一定程度上提升了系统的整体功能,但却并没有从根本上改变以判
题子系统为中心的体系结构,这也直接限制了系统的可扩展性。
同时,现有的在线评测系统大多采用传统的“数据层——业务层——表现层”的
三层架构搭建,而对于一些在线评测系统而言,由于基于 LAMP (Linux、 Apache、 MySQL、
PHP)构建,间接导致本身的外围业务和表现层的界限也不再清晰,可以见到的只是
判题子系统被作为独立业务模块分离并与其他的模块之间有清晰的界限,但诸如用户
管理、代码管理之类与领域关系稍远的功能模块的划分就相对模糊,一些专注于业务
的功能被放到了表现层实现,并依据用户需求改变表示层,而另一些则依附于判题子
系统而存在,并不具有非常显著的模块特征。可以说,笼统的三层架构在应对一般的
信息系统时也许能得心应手,但在处理诸如在线评测系统之类具有突出业务特征的系
统时,很难用相对粗略的层次使所有模块保持和谐。
在另一方面,现有在线评测平台大多着力于解决评测子系统上的问题,而忽略了
软件整体的扩展性和后续用户需求变更的可能。诚然,完美地实现核心业务是一个软
件的灵魂所在,但由相对僵化的体系结构所决定的在线评测系统也促成了目前这一类
系统的一般格局:用户提交代码,由系统编译执行,应用自动化黑盒测试并给出结果,
除此之外的其他用户需求相对很少顾及到,例如对于所提交代码的管理,对于解题过
共2页:
上一页
1
2
下一页
很多人想要学习软件测试却不得其法,分享软件测试学习路线,帮助大家快速入行软件测试。
第一阶段
为软件测试环境配置与管理,你需要熟练掌握在物理机、虚拟机、容器下的快速部署测试环境的方法,完成SVN文件配置服务器搭建、LAMP环境搭建配置管理、Linux内核配置与定制、Docker&K8S搭建部署,获得全栈测试工程师必备技能——测试环境配置管理能力。
第二阶段
为全栈测试数据管理与数据库测试,你要熟练掌握主流数据库管理系统(DBMS)中的数据定义、数据控制与数据 *** 作方法,完成电商平台数据库设计、ERP系统数据库设计两大项目,最终目的是获得在互联网行业与金融行业进行测试时应当具备的数据使用能力与数据 *** 作能力,同时获得在主流数据库中进行数据库测试的能力。
第三阶段
为Web栈测试技术,你要熟练掌握Web前端的必备测试开发方法,要完成垂直领域电商前台项目测试,最终获得简单Web测试开发的能力,具备Web手工测试与Web自动化测试的必备能力。
第四阶段
为全栈通用测试技术,你要熟练掌握全栈测试的测试方法、熟悉软件测试流程,要完成协同办公平台系统测试、电商平台系统测试、教育实践平台系统测试、用友金融平台系统测试,最终掌握全栈测试通用技术的能力,获得全栈测试必备能力。
第五阶段
为测试开发技术,你要熟练掌握面向对象必备开发技术,完成B2B电商平台后台开发项目,最终获得面向对象的初级编程能力,同时具备进阶自动化测试与性能测试的必备能力。
第六阶段
为移动栈测试技术,你要熟练掌握移动端手工测试与自动化测试方法,要完成AndroidApp测试项目,最终获得在移动端进行各项测试的能力,掌握主流移动端自动化测试工具的熟练使用能力。
第七阶段
为Web栈自动化测试技术,你要熟练掌握自动化测试框架构建与自动化测试脚本开发方法,熟练运用主流测试工具完成高效的自动化测试,要完成人力资源管理系统自动化测试,最终获得自动化测试的能力,掌握主流自动化测试工具的熟练使用能力,具有独立完成自动化测试脚本开发的能力。
第八阶段
为高级自动化测试技术,你要熟悉性能测试方法,熟练运用主流测试工具进行接口测试。要完成慕课(MOOC)系统性能测试、跨平台系统接口测试,最终获得性能测试、接口测试的必备能力,掌握性能测试与接口测试的高阶测试技术。
行业前景好:PC软件、互联网软件、手机软件、嵌入式软件、硬件等,都需要测试,只要有软件和硬件,就需要测试,现在市场上专业性强的软件测试工程师又比较稀少,软件测试发展前景好。
首先你要学习包括:软件测试基础(测试工作基本原则)、软件测试管理、软件测试工具、缺陷管理(缺陷的分类)、测试方法、测试策略 其次是文档:测试计划、测试用例、测试报告(单元、集成、系统)、缺陷报告。 再次:版本测试工具(svn),缺陷管理工具QC…… 还要了解一些测试根据:QTP、loadrunner……
一、软件测试员自身素质培养
(1)
首先,应对软件测试感兴趣和对自己有自信,如果具备了这两点,那么在开发过程中不管遇到什么样的困难,我相信你一定能克服。
(2)
善于怀疑,世界上没有绝对正确的,总有错误的地方,具有叛逆心理,别人认为不可能发生的事,我却认为可能发生。别人认为是对的,我却认为不是对的。
(3) 打破砂锅问到底的精神,对于只出现过一次的bug,一定找出原因,不解决誓不罢休。
(4) 保持一个良好的心情,否则可能无法把测试作好。不要把生活中的不愉快的情绪带到工作中来。
(5) 做测试时要细心,不是所有的bug都能很容易的找出,一定要细心才能找出这些bug。
(6) 灵活一些,聪明一点,多制造一些容易产生bug的例子。
(7) 在有条件的情况下,多和客户沟通,他们身上有你所需要的。
(8) 设身处地为客户着想,从他们的角度去测试系统。
(9)
不要让程序员,以“这种情况不可能发生”这句话说服你,相反,你应该去说服他,告诉他在客户心里,并不是这样的。
(10) 考虑问题要全面,结合客户的需求、业务的流程、和系统的构架,等多方面考虑问题。
(11)
提出问题不要复杂化,这一点和前面的有点矛盾,如果你是一新手,暂时不要管这一点,因为最终将有你的小组成员讨论解决。
(12)
追求完美,对于新测试员来说,努力的追求完美,这对你很好,尽管有些事无法做到,但你应该去尝试。
(13)
幽默感,能和开发小组很好的沟通是关键,试着给你的开发小组找一个“BUG杀手”,或对他们说“我简直不敢相信,你写的程序居然到现在没有找到BUG”。
(14)
到此是不是对测试很有兴趣呢不过我要告诉你,测试过程中有酸甜苦辣,其中的滋味只有你知道,也许你会感到枯燥,要学会放松自己,去溜冰或做你喜欢做的事,不过,别放弃,因为你的自信告诉过你“你会是很优秀的测试员”不是吗
二、浅谈软件测试之技巧
软件测试虽然辛苦,但是掌握了一定的技巧之后将使你事半功倍。
(1) 边界测试,测试用户输入框中的数值的最大数和最小数,以及为空时的情况。
(2) 非法测试,例如在输入数字的地方输入字母。
(3) 跟踪测试,跟踪一条数据的流程,保证数据的正确性。
(4) 在开始测试时应保证数据的正确性,然后在从系统中找出各种BUG。
(5) 接口测试,程序往往在接口的地方很容易发生错误,要在此模块测试勿掉以轻心。
(6)
代码重用测试,在开发过程中有些模块功能几乎相同,程序员在重用代码时可能忘记在原有代码上修改或修改不全面,而造成的错误。
(7) 突发事件测试,服务器上可能发生意外情况的测试。
(8) 外界环境测试,有些系统在开发时依赖于另外一个系统,当另外一个系统发生错误时,
这个系统所受到的影响的情况。
(9)
在程序员刚修复Bug之后的地方,再找一找,往往程序员只修复报告出来的缺陷而不去考虑别的功能在修改时可能会重新造成错误。
(10)
认真做好测试记录在做完一天的测试记录之后,第二天再根据第一天的测试记录重复测试你会发现有未修正的错误。
(11) 文字测试,如果在系统中有用词不当的地方,我想这是不应该的。
(12)
系统兼容测试,例如有些程序在IE6能运行正常,到IE5下不能运行。有些程序在WIN2000下能运行,而到WIN98却不能运行。像一些很特别的用户去使用系统,你很有可能发现BUG。
(13)
用户的易用性测试,往往用户的需求是不断的变化的,而其中的一部份变化的原因,是有用户 *** 作上不方便引起的。
以上就是关于判题系统的国内现状全部的内容,包括:判题系统的国内现状、软件测试学习路线、软件测试需要学习数据库么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)