应用场合

  自动化测试

  明确的特定的测试任务
  回归测试,压力测试,性能测试
  相对稳定且界面改动比较少的功能测试
  人工容易出错的测试工作
  周期性长的软件产品开发项目,项目时间压力不大
  被测试软件具有良好的可测试性
  拥有运行测试所需的软硬件资源
  拥有较强编程能力的测试人员

  手工测试

  一次性项目或周期很短的项目的功能测试
  需求不确定或需求变化比较快
  适用性测试或验收测试
  产品功能设计或界面设计还不成熟
  没有适当的测试过程,测试内容和测试方法不清晰
  项目时间压力较大
  团队缺乏编程能力的测试人才
  缺乏软硬件资源

  测试工具的分类

  单元测试工具,包括静态测试工具和动态测试工具;
  功能测试工具,包括web功能测试工具,windows客户端功能测试工具;
  性能测试工具,包括负载测试工具、压力测试工具
  测试管理工具,包括缺陷、测试用例和计划等管理工具
  其他测试工具,如安全性测试,多媒体测试

  单元测试工具

  xUnit系列;Mock Object工具(强调测试对象的独立性);代码扫描工具

  功能测试工具

  从GUI对象识别入手,模拟鼠标和键盘的操作和验证界面元素的实际显示结果

  脚本技术

  线性脚本
  按键精灵 MouseMove MouseDown WinWait
  结构化脚本
  类似于结构化设计的程序,具有各种逻辑结构
  关键字驱动脚本
  脚本用一个简单的表格来表示,Selenium
  数据驱动脚本
  将测试脚本(执行步骤)和测试数据进行分离, QTP

  自动化测试的实现原理,首先要针对不同的类型来区别对待。

  针对静态测试,主要依赖于形式化的方法,如形式化描述或形式规范,即实现对程序“做什么”的数学描述,用具有精确予以的形式语言来描述编程语言的规则,然后读入程序,检查代码是否符合规则。

  针对动态测试

  1 识别对象,包括调用windows API来识别GUI对象,以及使用其他工具(IE DOM Inspector和firebug)来识别web的DOM对象
  2 模拟操作,也是能捕获鼠标和键盘的操作,或者通过调用API直接操作所识别的对象。
  3 通过自动化比较技术,验证实际获得的测试结果和事先定义的期望结果是否一致,如果不一致,将记录所执行的具体日志,报告错误。比较技术包括静态比较和动态比较,简单比较和复杂比较,敏感性测试比较和健壮性测试比较,比较过滤器。