- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【2017年整理】数据库程序的单元测试
数据库程序的单元测试?翻译:PMTeam Xu NingNing来自PMT评论 总第23期?这些笔录是我关于已完成的数据库功能测试的一些心得。其中的例子是用java语言编写的,但我认为这些想法对于大多数编程环境都普遍适用。当然,我仍致力于寻找更佳的解决方案。现实的问题是这样的:你有一个SQL数据库,一些存储过程和一个介于应用程序和数据库之间的中间层。你怎样在其中插入测试代码从而保证在数据库中数据存取功能的实现?一、 为什么会有这样的问题?我猜想有些,可能不完全是大多数的数据库开发过程都是这样的:建立数据库,编写存取数据到数据库的代码,编译并运行,用一个查询语句查验所列的数据是否正确显示。如果能正确显示那就大功告成了。然而,这种靠眼睛来检测的弊端在于:你不经常进行这样的检验,而且这种检验是不完全的。存在这样的可能性,当你对系统进行了修改,过了几个月后,你无意中破坏了系统,从而导致数据的丢失。作为一个编程人员,你可能不会花很多时间来检查数据本身,这就使错误的数据要经过较长的时间才能暴露出来。我曾经参与一个建立网站的项目,该项目中在注册时有一个必填数据在大半年中没有被发现未实际输入进数据库。尽管公司市场部曾经提出他们需要这一信息,但因为这项数据从来没有人去看它,直接导致了这一问题在很长时间内没有被发现。自动化测试,由于它能经常测试而且测试范围较广,降低了数据丢失的风险。我发现它能使我更心安理得地休息。当然,自动化测试还有其他一些好处,他们本身就是代码编写的范例,也可以作为文档,便于你修改别人编写的原始程序,从而减少检测所需的时间。二、 什么是我们所谈论的测试?设想有一个非常简单的用户数据库,包括用户电子信箱和一个标志,用来指示邮件地址是否被弹回。你的数据库程序应该包括插入、修改、删除和查询等方法插入方法会调用一个存储过程将数据写入数据库。为了叙述方便,这里省去了一些细节,大致的程序如下所示:public class UserDatabase?{?...?public void insert(User user)?{?PreparedStatement ps = connection.prepareCall({ call User_insert(?,?) });?ps.setString(1, user.getEmail());?ps.setString(2, user.isBad()); // In real life, this would be a boolean.?ps.executeUpdate();?ps.close();?}?...?}?而我认为的测试代码应为:public class TestUserDatabase extends TestCase?{?...?public void testInsert()?{?// Insert a test user:?User user = new User(some@email.address);?UserDatabase database = new UserDatabase();?database.insert(user);?// Make sure the data really got there:?User db_user = database.find(some@email.address);?assertTrue(Expected non-null result, db_user != null);?assertEquals(Wrong email, some@email.address, db_user.getEmail());?assertEquals(Wrong bad flag, false, db_user.isBad());?}?...?}?可能你还有更多测试代码。(注意一些测试,例如对date类的测试)。assertTrue和assertEquals方法进行条件测试。如果测试失败,他们将返回诊断消息。其重点是这些测试都基于一个测试框架自动执行,并给出测试成败的标志。这些测试都基于用java语言编写的测试框架Junit类(程序附后)。这一框架也能适应其他诸如C, C++, Perl, Python, .NET (all languages), PL/SQL, Eiffel, Delphi, VB等语言环境。下一个问题就是:我们有测试,但我们怎样保证测试数据和实际数据能严格区分?三、 不同的鉴别方法在开始之前,我必须指出你最好有一
您可能关注的文档
- 【2017年整理】数学教研组活动记录(面积单元教材分析).doc
- 【2017年整理】数学必修5解三角形单元测试.doc
- 【2017年整理】数学建模案例分析--线性代数建模案例(20例).doc
- 【2017年整理】数学模型综合题练习格式.doc
- 【2017年整理】数学工具软件说明书.doc
- 【2017年整理】数学物理方法知识点归纳.doc
- 【2017年整理】数学和中国文学的比较.doc
- 【2017年整理】数学讲解.doc
- 【2017年整理】数据平台发现问题及填报注意事项.doc
- 【2017年整理】数学解题:从简单情形入手.doc
- 异型钢管混凝土拱桥荷载试验与整体稳定性的深度剖析与实践研究.docx
- 基于模拟退火算法的中学机房管理系统优化设计与实践研究.docx
- 解析阵发性睡眠性血红蛋白尿症中T细胞亚群的特征、数量与功能关联.docx
- 最终控制人、制度环境对上市公司过度投资的影响:基于多视角的深度剖析.docx
- 基于随机变异优化选择规则的神经网络在汇率预测中的创新应用与效能研究.docx
- 对赌协议的法律属性剖析与风险防控策略研究.docx
- 高频数据视角下沪深300指数波动特征的深度剖析与应用研究.docx
- 高中优秀英语教师反馈语:的支架功能探究.docx
- 中国山药产业发展的多维度剖析与未来展望.docx
- 新疆在丝绸之路经济带中构筑交通枢纽中心的战略与实践.docx
最近下载
- 智算中心及算力产业集群项目运营管理方案.docx VIP
- 2025安徽芜湖市湾沚区招聘社区工作者11人考试备考题库及答案解析.docx VIP
- 锅炉安装改造维修质量保证体系文件(手册+程序文件+表格+工艺文件汇编)-符合TSG 07-2019特种设备质量保证管理体系.docx
- 甲状腺科普宣教.pptx VIP
- 贵州省2025年高职院校分类考试招生中职生文化综合语文试题答案.docx VIP
- 智算中心及算力产业集群项目节能评估报告.docx VIP
- 甲状腺的科普宣教.pptx VIP
- 高考试题——物理(全国卷)云南.doc VIP
- 智算中心建设可行性分析.docx VIP
- 产前筛查实验室标准操作程序文件.pdf VIP
文档评论(0)