自动化测试基础学习

性能测试工具:loadrunner、jmeter
  用于生成多个测试数据。狭义上讲,就是通过工具记录、脚本编写、回放或执行脚本 模拟手工测试。
 
自动化测试:传统测自动化测试更关注产品UI曾的自动化测试,要进行分层测试,对产品的不同阶段都需要自动化测试.
 
  单元测试:对最小可测试单元进行检验和查证
  
  集成、接口、API测试:主要检测外部系统与系统、内部各个子系统之间的交互点。测试点主要是 检查数据交换、传递、控制管理过程、系统间的相互依赖关系。
 
  UI层的自动化测试:主流工具QTP、Robot Framework、watir、Selenium
 
  当自动化测试用例的维护成本高于其节省的测试成本时,自动化测试就失去了价值与意义
 
 为什么要自动化测试
  
  1,什么能够进行自动化测试?
    第一,需求稳定,不会频繁变更。
    第二,研发和维护周期长,需要频繁执行回归测试。
    第三,需要在多种平台上重复运行相同测试的场景。
    第四,某些测试项目通过手工测试无法实现,或者手工成本太高。
    第五,被测软件的开发较为规范,能够保证系统的可测试性。
    第六,测试人员已经具备一定的编程能力。
  2,什么应该进行自动化测试?
    要有适合自动化测试的特点和高的投资回报率
    第一,产品型项目。每个项目只改进少量的功能,但每个项目必须反反复复的测试那些没有改动过的功能。这部分测试完全可以让自动化测试来承担, 同时可以把新加入的功能的测试也慢慢地加入到自动化测试当中。
    第二,增量式开发、持续集成项目。由于这种开发模式是频繁的发布新版本进行测试,也就需要频繁的自动化测试,以便把人从中解脱出来测试新的功能。
    第三,回归测试。回归测试是自动化测试的强项,它能够很好的验证你是否引入了新的缺陷,老的缺陷是否修改过来了。在某种程度上可以把自动化测试工具叫做回归测试工具。
    第四,多次重复、机械性动作,将烦琐的任务转化为自动化测试。自动化测试最适用于多次重复、机械性动作,这样的测试对它来说从不会失败。比如要向系统输入大量的相似数据来测试压力和报表。
    第五,需要频繁运行测试。在一个项目中需要频繁的运行测试,测试周期按天算,就能最大限度的利用测试脚本
   3,什么必须进行自动化测试?
   4,什么无需进行自动化测试?
    第一,定制型项目(一次性的)。为客户定制的项目,维护期由客户方承担的,甚至采用的开发语言、运行环境也是客户特别要求的,即公司在这方面的测试积累就少,这样的项目不适合作自动化测试。
    第二,项目周期很短的项目。项目周期很短,测试周期很短,就不值得花精力去投资自动化测试,好不容易建立起的测试脚本,不能得到重复的利用是不现实的。
    第三,业务规则复杂的对象。业务规则复杂的对象,有很多的逻辑关系、运算关系,工具就很难测试。
    第四,美观、声音、易用性测试。人的感观方面的:界面的美观、声音的体验、易用性的测试,也只有人来测试。
    第五,测试很少运行。测试很少运行,对自动化测试就是一种浪费。自动化测试就是让它不厌其烦的、反反复复的运行才有效率。
    第六,软件不稳定。软件不稳定,则会由于这些不稳定因素导致自动化测试失败。只有当软件达到相对的稳定,没有界面性严重错误和中断错误才能开始自动化测试。
    第七,涉及物理交互。工具很难完成与物理设备的交互,比如刷卡的测试等。
 
进行自动化测试需要的铺垫
 
   1,引入自动化测试的时机:
    第一,项目进度压力不太大
  
   2,引入自动化需要的前置条件
    第一,任务测试明确,不会频繁变动
    第二,软件系统界面稳定,变动少,无重构计划
    第三,有一个稳定的软件维护周期
    第四,被测系统开发较规范,能够保证系统的可测试性
    第五,API独立,不过于依赖数据
 
技术提升(自动化测试方向)
 
 
 
1,做好手工测试(了解各种测试的知识/不同测试产品的测试方法,提高测试分析能力)
2,学习编程语言(了解一门主流的编程语言,并且能够在后面的工作中不断深入学习)
3,学习Web基础(了解HTML,HTTP,CSS,DOM,Javascript,UI层自动化必须掌握的)
4,学习自动化测试工具 (熟练掌握Selenium/Appnium/Httpclient)
5,学习自动化测试框架 (熟练掌握testng/junit)
6,实现自动化测试用例 (最好能够接触不同的项目,不断总结用例转换的经验以及难点分析,这将成为你设计测试框架的最用力的需求)
7,开发自动化测试工具(能够根据需求编写的符合项目需求的工具)
8,开发自动化测试框架(能够独立完成框架实现)