软件测试基础.ppt
软件测试基础,测试人员的目的是为了“破坏”已经建造好的软件系统竭力证明程序中有错误不能按照预定要求正确工作。,极其错综复杂的问题 各类人员之间的通信和配合也不可能完美无缺,案例: 嫦娥卫星 微软公司,整个飞行控制软件有104万行,而为了测试这些软件是否正确,编了160万行的测试程序 在微软,软件开发和软件测试人员比例达到1:1.5 1:2.5,一个软件产品由项目经理、软件开发和软件测试团队组成。 测试人员(Tester) 测试工具软件开发工程师 软件测试工程师,测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。,项目组发现、定位、处理和最终解决一个Bug的过程包括Bug报告、Bug评估和分配、Bug处理、Bug关闭等四个阶段,软件测试准则 (1) 所有测试都应该能追溯到用户需求。,(2) 应该远在测试开始之前就制定出测试计划。,(3) 把Pareto原理应用到软件测试中。,(4) 应该从“小规模”测试开始,并逐步进行“大规模”测试。,(5) 穷举测试是不可能的。,(6) 为了达到最佳的测试效果,应该由独立的第三方从事测试工作。,1. 模块测试 2. 子系统测试 3. 系统测试 4. 验收测试 5. 平行运行,7.3 单元测试,单元测试集中检测软件设计的最小单元模块。,1. 模块接口 主要检查下述几个方面:参数的数目、次序、属性或单位系统与变元是否一致;是否修改了只作输入用的变元;全局变量的定义和用法在各个模块中是否一致。,2. 局部数据结构 对于模块来说,局部数据结构是常见的错误来源。应该仔细设计测试方案,以便发现局部数据说明、初始化、默认值等方面的错误。,3. 重要的执行通路 在单元测试期间选择最有代表性、最可能发现错误的执行通路进行测试就是十分关键的。,4. 出错处理通路 应该着重测试下述一些可能发生的错误: (1) 对错误的描述是难以理解的; (2) 记下的错误与实际遇到的错误不同; (3) 在对错误进行处理之前,错误条件已经引起系统干预;,(4) 对错误的处理不正确; (5) 描述错误的信息不足以帮助确定造成错误的位置。,5. 边界条件 边界测试是单元测试中最后的也可能是最重要的任务。,两种测试方式,白盒测试以测试的深度为主 黑盒测试以测试的广度为主。,两种测试执行方式,7.3.2 代码审查,代码审查是一种非常有效的程序验证技术,对于典型的程序来说,可以查出30%70%的逻辑设计错误和编码错误。,方法一: 研究设计说明书 由编写者解释程序代码 对照程序设计常见错误清单分析审查这个程序,方法二: 由一个人扮演“测试者”,其他人扮演“计算机”。,7.3.3 计算机测试,驱动软件和(或)存根软件 存根程序也可以称为“虚拟子程序”。它使用被它代替的模块的接口,可能做最少量的数据操作,印出对入口的检验或操作结果,并且把控制归还给调用它的模块。,7.4 集成测试,集成测试是测试和组装软件的系统化技术 主要目标是发现与接口有关的问题,7.4.1 自顶向下集成,从主控制模块开始,沿着程序的控制层次向下移动,逐渐把各个模块结合起来。,7.4.2 自底向上集成,自底向上测试从“原子”模块(即在软件结构最低层的模块)开始组装和测试。,