面向小规模程序轻型测试方法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向小规模程序轻型测试方法

面向小规模程序轻型测试方法   摘要:初级程序员开发的程序一般是小规模程序。对于小规模程序,软件工程实践采用的重型测试方法是不适用的,因为测试代码量远大于程序代码量。论文描述三种面向小规模程序的轻型测试方法。第一种方法是“使用freopen函数的方法”,做法是在程序中调用freopen函数把输入输出重定向至文件,并用文件比较命令来比对输出结果和期望结果是否一致。好处是免除手工输入和人工比对,消除繁琐和减少犯错的机会。第二种方法是“使用重定向和批处理程序的方法”,实质与第一种做法类似,但能够批处理地使用多组测试数据对程序进行测试。第三种方法是“轻型单元测试方法”,做法是把程序分解成多个函数,对函数进行测试。好处是便于定位错误。上述三种轻型程序测试方法的优点是易学易用,适用于在OJ网站刷题和计算机软件能力认证考试等场合。   关键词:软件工程;轻型测试方法;小规模程序;重定向;单元测试   中图分类号:TP3 11.1 文献标识码:A DOI:10.3969/j.issn.1003-6970.2015.10.024   引言   这些年,越来越多的大学生和高中生在OJ(Online Judge,在线判题网站)上做编程题,俗称“刷题”。初级程序员经常遇到这样的情况:程序在自己的电脑上运行明明是对的,但在网站上提交代码后,网站却报告答案错误。原因是什么呢?这是因为自己运行时,输入的数据只考虑一种或几种情形,在这些情形下程序运行结果是正确的。但在另外的情形下,程序运行结果将是不正确的。拿排序程序来讲,如果输入已经排好序的数据,程序能正常工作,那么就能说程序百分百正确了吗?   初级程序员还经常遇到另一种情况,就是程序运行一直异常终止或者结果总是不对,不得不一遍又一遍地修改,一遍又一遍地运行程序。遇到这种情况是很耗费时间的。如果加上以下两种状况,时间耗费就更严重了。第一种状况是每次运行都在命令行终端上输入一大批数据。第二种状况是程序输出内容多又长。拿多又长的输出内容和期望输出进行人工比对,不仅耗时而且容易犯错。   假如在计算机协会举办的软件能力认证考试中遇到以上问题,考生的表现将大打折扣。除此之外,另一个阻碍考生在软件能力认证考试中拿高分的因素是:针对所提交的程序代码,考试服务器不提供任何反馈。这与OJ的做法不同。针对所提交的程序代码,OJ会提供诸如编译错误、超时、答案有误和答案正确等反馈。   本文阐述解决以上问题的有效方法。方法的本质是对程序进行测试。这一本质与软件工程实践采用的软件测试方法是相同的。但不同的是,本文阐述的程序测试方法是轻型方法,而软件工程实践采用的方法是重型方法。初级程序员编写的程序一般是小规模程序(代码行数多在300行以下)。对于小规模的程序,采用重型测试方法是不现实的。原因在于,测试代码量(以基于xUnit的单元测试为例),将远远大于程序代码量。对于小规模的程序,本文阐述的轻型测试方法是非常适用的。近两年的程序设计教学过程中,学生的实践已经证明了这一点。这一方法也可应用到测试驱动开发中。   本文阐述三种轻型测试方法。第一种是使用freopen函数的测试方法,在第二节展开叙述。第二种是使用重定向和批处理程序的方法,在第三节展开叙述。第三种是轻型单元测试方法,在第四节展开叙述。第五节是结束语。   1 使用freopen函数的方法   这一做法是在程序中调用freopen函数。该函数的功能是把文件重定向为标准输入,或把标准输出重定向至文件。freopen函数声明如下:   FILE*freopen(const char*filename,const char*mode,FILE*stream):   其中,参数filename是文件路径。参数mode是文件打开方式,例如“r”代表读打开,“w”代表写打开。参数stream是已经打开的文件流。函数的功能是:(1)关闭stream关联的文件流。(2)以mode方式打开filename所指定的文件file;(3)把文件file与文件流stream相关联。(4)如果函数执行失败,则返回NULL。图1举例说明freopen函数的用法。   图l中,stdin代表标准输入,stdout代表标准输出。“freopen(“in.txt”,“r”,stdin)”是把标准输入重定向到in.txt文件。这样,当程序从标准输入读取数据时,不再从键盘读取,而是从in.txt文件读取。“freopen(”out.txt”,”w”,stdout)”是把标准输出重定向到out.txt文件。这样,当程序向标准输出写数据时,不再写到屏幕上,而是写到out.txt文件中。值得提醒的是,freopen函数的第一个参数可以是任意的文件路径。提交代码的时候,要把调用freope

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档