单元测试讲义.ppt

单元测试讲义.ppt

ID:55867866

大小:66.00 KB

页数:55页

时间:2020-06-11

单元测试讲义.ppt_第1页
单元测试讲义.ppt_第2页
单元测试讲义.ppt_第3页
单元测试讲义.ppt_第4页
单元测试讲义.ppt_第5页
资源描述:

《单元测试讲义.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、单元测试快速的编程反馈软件开发的困难软件总是要修改的添加新特性Fixbug优化重构软件开发的困难修改软件是危险的举动我们如何得知已经正确的完成了修改?我们如何得知没有破坏任何(既有的)东西?软件开发的困难当前我们如何测试修改编译启动服务器启动一个以上的客户端鼠标操作看看效果重复这些步骤软件开发的困难这种测试的缺点不能立即获得反馈时间漫长运行次数不足甚至不测试软件开发的困难这种测试的外号编辑并祈祷单元测试概念由一组独立的测试构成,其中每个测试针对软件中的一个单独的原子行为单元并非检查一簇类是否能够合作良好,而是检查单个的对象行为是否正确

2、单元测试传说中的例子,被测试的对象非常独立TEST(TestAdd){Mathmath;intresult=math.Add(11,12);CHECK_EQUAL(23,result);}单元测试传说中的过程实例化被测试对象提供测试数据调用被测试的方法验证测试结果单元测试实际情况1内存访问异常,ItemMngS无法在测试中实例化TEST(TestItemMng){CItemMngSmng;}单元测试实际情况2内存访问异常,无法调用被测试的方法TEST(TestBehit){CServerChaPlayerplayer;CServerC

3、haPlayertarget;target.Behit(player);}单元测试实际情况3函数没有返回值,不知道如何验证结果TEST(TestAddInvite){CGroupUnitSunit;CServerChaPlayerplayer1,player2;unit.AddInvite(&player1,&player2);//howtocheck?}单元测试实际的情况理想是美好的,世界是残酷的软件由对象的相互协作来实现功能,对象之间充斥着必不可少的依赖软件的运行依赖于数据库,网络和文件系统多数函数的并没有返回值来验证行为单元测试

4、比如CServerCha依赖各种CXXMngCXXMng之间相互依赖Auto_PlayerData是数据库的接口单元测试依赖的坏处无法将某个类从软件中隔离出来无法轻易的安置单元测试单元测试不经意的转变成集成测试我们可以将被依赖的类在测试中实例化被依赖的类肯定也在依赖别的类一环扣一环,于是我们把整个软件的大部分类都牵扯到一次测试中这个单元测试变得笨重这已经不是单元测试了!!!解依赖有依赖,就要解依赖在被测试的代码中,依赖是少量的解依赖就是将无法放入测试中的小段代码从整块代码中分离出来的行为解依赖就是构造接缝的过程解依赖什么是接缝?接缝是

5、指程序中的一些特殊的点,在这些点上你无需作任何修改就可以达到改动程序的目的如果能够将接缝处的行为取代掉,我们就等于有选择的排除了某些依赖我们还可以将被依赖方替换为其他代码,以此感知测试代码对被依赖方的要求和影响解依赖其实接缝就是间接层接缝的基本类型虚函数指针:函数指针,全局变量,参数解依赖虚函数虚函数是接缝的根本在不改变软件的前提下,虚函数的行为可以在测试中的被派生类所改变解依赖code解依赖伪对象由于虚函数的存在,在测试中的派生类可以改变原来的行为在测试中用于伪装成被测试类的合作者的对象,称为伪对象伪对象是后面介绍的解依赖技术的根本

6、解依赖全局变量实例化的全局对象是恶劣的,如:CPlayerMngg_playerMng;隐性初始化的单件是恶劣的,如:CCommonTimerMng::Instance();对象指针是一个接缝,可以在测试中替换指针实际指向的对象改变对象的行为需要虚函数解依赖code解依赖函数指针全局函数是不可替换的,如:G_GetPlayerUnit但是函数指针可以在测试中替换为其他签名相同的函数解依赖code解依赖参数指针参数对象指针和全局对象指针一样,可以在测试中替换实际指向的对象行为的改变依赖于虚函数解依赖code解依赖完全没有找到接缝,怎么办

7、?没有接缝就创造接缝解依赖创建接缝的方法提取并重写调用设置并替换提取并重写获取方法提取并重写工厂方法解依赖提取并重写调用被测试的代码中,委托了其他的对象做某件事情给被测试对象新添加一个虚函数,封装这个委托在测试中用派生类覆盖这个虚函数解依赖code解依赖设置并替换对被依赖的对象或者单件提供一个设置方法在测试中,用设置方法改变他们解依赖code解依赖提取并重写获取方法在被测试的代码中,委托了其他对象做某件事情给被测试类添加一个获取委托对象的虚函数在测试中用派生类覆盖这个虚函数解依赖code解依赖提取并重写工厂方法构造函数包含太多依赖,以

8、至于无法实例化被测试的类将依赖的代码提取到一个虚函数中在测试中覆盖该虚函数解依赖code解依赖创建接缝的更高级的方法参数包装器方法对象解依赖参数包装器有些类是无法修改的,final的有些类几乎无法实例化,解依赖也很费劲对

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。