单元测试技术.ppt

测试驱动开发(TDD) 概念:测试驱动开发是以测试作为开发过程的中心,在编码之前先编写用于定义产品代码行为的测试,而编写的产品代码又要以使测试通过为目标;它在极限编程(XP)中处于核心地位。 过程: 测试驱动开发(TDD) 规则: 只有自动测试失败时,我们才重写代码; 消除重复设计,优化设计结构。 问题及解答 单元测试技术讲解 讲解人:王铁吾 内容 软件开发的困难 测试技术简单介绍 单元测试 测试驱动开发 问题及解答 软件开发的困难 软件总是在不断修改 添加新特性 修改BUG 优化 重构 软件开发的困难 一般我们如何测试修改 编译 启动服务器 启动客户端(或者浏览器) 鼠标或键盘操作 查看结果 重复这些操作 软件开发的困难 这种测试的缺点 不能立刻获得反馈 时间漫长 很容易遗漏一些测试 他有个外号“编辑并祈祷” 不具回归性,效率不高 因为缺乏效率,往往针对典型数据,覆盖面低 测试技术简单介绍 测试技术简单介绍 单元测试:测试单个对象(函数或模块)是否正确工作 集成测试:测试多个对象之间或子系统之间是否正确工作 功能测试:测试整个系统是否工作正常 性能测试:测试系统的性能 验收测试:用户测试系统是否满足要求 测试技术简单介绍 发现软件错误的情况有很多 : 由首次编写代码的开发人员发现 由尝试运行代码的开发人员发现 由组中的其他开发人员或测试人员发现 作为产品大规模测试的一部分 由最终用户发现 第一种情况下发现软件错误,则修复错误比较容易,成本也很低。情况越靠后,修复软件错误的成本就越高。 单元测试 什么是单元测试 由开发人员编写的一小段代码,用于检测被测试代码中一段很明确的代码是否正确 由一组独立的测试构成,其中每个测试针对软件中的一个单独的原子行为单元,而并非检查一簇类是否能够合作良好。 程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致 单元测试 为什么要使用单元测试? 是一种验证行为,不但验证代码语法正确,而且保证代码的语义和行为正确 是一种设计行为,使开发人员从使用者的角度来观察和思考。特别是TDD模式,将迫使程序设计成易调用和可测试,解除软件中的耦合 是一种编写文档的行为,是展现函数或类是如何使用的最佳文档,它可编译、可运行,并保持与代码同步 具有回归性,自动化的单元测试不需要人工干预,可随时回放,可以通过大量经典测试数据进行回归 提升你对编写代码的信心,抬高团队协作性 单元测试 对项目的意义 模块更加可控 及早发现问题,提高模块质量,降低系统测试成本 发现模块构架调整中潜在Bug 加速开发周期,单元测试是最容易自动化测试的,成本最低 单元测试不应该仅是程序员的个人行为,而与项目进度控制、质量控制息息相关 单元测试 单元测试的范畴 它的行为和我期望的一致吗? 单元测试的根本目的 它的行为一直和我期望的一致吗? 考虑异常情况 我可以依赖单元测试吗? 一定要值得依赖 单元测试说明我的意图了吗? 能充分了解代码用法 单元测试 单元测试的误区 编写单元测试太花时间了 运行测试代码的时间太长 测试代码并不是我的工作 我不清楚代码的行为,所以无从测试 单元测试代码不规范 单元测试 XUnit模式-结构 TestSuites TestCase Test [Java method] Fixtures: common setup/teardown code 单元测试 XUnit模式-TestCase生命周期 单元测试 XUnit模式 断言(Assertion),true-正常;false-意外, assertFalse, assertEquals, assertNotEquals, assertNull… setUp(),初始化通用对象或资源 tearDown(),销毁通用对象或释放资源 测试方法(Test Method),以test开头的方法,以Test结尾的测试类名称 异常测试(Exception Test) public void testMethod1 { try{ obj.method1(param1,param2); fail(); } catch(Exception1 exceped) { } } 单元测试 XUnit模式 全部测试(All Tests) 一次性执行所有的测试。 public class AllTests { public static void main() { run(AllTests.class); } public static Test suite() { TestSuite result = new TestSuite(“P tests”); result.addT

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档