【软件测试】软件测试自动化

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33642117/article/details/54377119

1.测试自动化的内涵


1.1  手工测试的局限性


  •  通过手工测试无法做到覆盖所有代码路径;
  •  许多与时序、死锁、资源冲突、多线程等有关的错误通过手工测试很难捕捉到
  •  在系统负载、性能测试时,需要模拟大量数据、或大量并发用户等各种应用场合时,也很难通过手工测试来进行
  •  在进行系统可靠性时,需要模拟系统运行十年、几十年,以验证系统能否稳定运行,也是手工测试无法模拟的。
  •  如果有大量(几千)的测试用例,需要在短时间内完成,手工测试又怎么办呢?
  •  测试可以发现错误,并不能表明程序的正确性。 
自动测试定义软件系统
  • 功能规格书(Spec)只是从书面上的
  • 一套软件产品是由一套完整的可运行的测试来定义的
测试所有可能情况将遭遇“组合爆炸”问题
  • Win98, WinME, WinNT, Win2k, WinXP, WinXP TablePC Ed, WinXP MediaCenter Ed, Longhorn, etc
  • English, German, Japanese, Chinese, Arabic, Thai…
  • Office 97, Office2000, Office XP, Office 2003…
  • X86  32-bit, Intel 64-bit, AMD 64-bit, Alpha, MIPS…
  • SQL Server 6.5, SQL Server 7.0, SQL Server 2000…
  •  Visual Studio 6, VS .NET, VS .NET 2003, Whidbey…
代码全部Code Path测试覆盖也几乎不可能
  • 每一个if…else…或switch语句就会把情况增加一倍
  • 许多异常处理代码在正常使用中不会碰到
  • 许多与时序,死锁,资源冲突,多线程有关的错误很难捕捉到
每一个产品都会有不同的版本外加各自的SP与QFE (Quick Fix Engineering, 又称Hot fix)
  • NT4, VS6 SP1~SP5, Windows 2000 SP1-SP4
  • VS .NET, SQL Server SP1 – SP3
可重复使用的自动测试对产品未来版本与Service Pack的测试将有事半功倍的效果

1.2  自动化测试带来的好处

1. 缩短周期 Testing cycle - Regression Testing
2.  Attributes of TA,
  • Speed 速度
  • Efficiency 效率
  • Accuracy and Precise 准确、精确 
  • Relentlessness 无情
3. 容易实施、结果可靠
4. 做手工不能做

1.3  手工测试 vs.自动测试

手工测试:
耗费时间
低可靠性
人力资源
不一致性
仅对于一次性的测试有益

自动测试:
 速度
 可重复
 覆盖率
 可靠
 可以再度使用
 重复测试节省时间

各自特点:
软件测试自动化(TA)虽然具有很多优点,但只是对手工测试的一种补充,TA绝不能代替手工测试,有各自的特点:
  •  在系统功能逻辑测试、验收测试、适用性测试、涉及物理交互性测试时,多采用黑盒测试的手工测试方法;
  •  单元测试、集成测试、系统负载或性能、稳定性、可靠性测试等比较适合采用TA;
  •  对那种不稳定软件的测试、开发周期很短的软件、一次性的软件等不适合测试自动化
  •  工具本身并没有想象力和灵活性,根据经验报道,自动测试只能发现15%的缺陷,而手工测试可以发现85%的缺陷;TA工具在进行功能测试时,其准确的含义是回归测试工具,因为工具不能发现更多的新问题,但可以保证对已经测试过部分进行测试的准确性和客观性 

1.4  正确认识测试自动化

不现实的期望注定测试自动化的失败
测试自动化能:
  • 显著降低重复手工测试的时间
  • 建立可靠、重复的测试,减少认为错误
  • 增强测试质量和覆盖率
测试自动化不能:
  • 完全替代手工测试和手工测试工程师
  • 保证100%的测试覆盖率
  • 弥补测试实践的不足
1.5  测试自动化项目的本质

定义:利用GUI自动化测试工具来开发和执行测试脚本,从而验证是否满足需求
本质:测试自动化项目本质上是软件开发项目
一个测试自动化项目必须具有:
  • 清晰定义并严格实施的过程
  • 来自组织各级的支持
  • 周密的计划
  • 具体的设计和架构

1.6  自动化测试的引入和应用

  •  找准测试自动化的切入点
  •  把测试开发纳入整个软件开发体系
  •  测试自动化依赖测试流程和测试用例
  •  软件测试自动化的投入较大
  •  进行资源的合理调度

1.7  自动化测试工作流程




1.8   测试自动化的基本结构



1.9  测试自动化的原理和方法

  •  代码分析: 类似于高级编译系统,在工具中定义类/对象/函数/变量等定义规则、语法规则等,在分析时对代码进行语法扫描,找出不符合编码规范的地方。
  •  捕获和回放: 代码分析是一种白盒测试的自动化方法,捕获和回放则是一种黑盒测试的自动化方法。


脚本技术:
  •  线性脚本,是录制手工执行的测试用例得到的脚本,这种脚本包含所有的击键、移动、输入数据等,所有录制的测试用例都可以得到完整的回放。
  •  结构化脚本,类似于结构化程序设计,具有各种逻辑结构、函数调用功能。
  •  共享脚本,是指某个脚本可以被多个测试用例使用。
  •  数据驱动脚本,将测试输入存储在独立的(数据)文件中,而不是存储在脚本中。
  •  关键字驱动脚本,是数据驱动脚本的逻辑扩张 

 测试自动化普遍存在的问题:
  •  不正确的观念或不现实的期望
  •  缺乏具有良好素质、经验的测试人才
  •  测试工具本身的问题影响测试的质量
  •  没有进行有效的、充分的培训
  •  没有考虑到公司的实际情况,盲目引入测试工具
  •  没有形成一个良好的使用测试工具的环境
  •  其它技术问题和组织问题


2.测试工具的分类和选择


2.1  测试工具的研究

软件测试的过程是一项很复杂而费时的工作,它不仅执行每一个测试用例,还要设置运行环境、记录输出、运行后清理并记录失败信息。仅仅依靠测试人员手工完成是很困难的。所以必须研究测试工具以帮助测试人员自动或半自动的完成测试。
在资金和人力、时间的供给一定的条件下面,拥有好的测试工具能够提高测试效率从而降低测试成本,则能够选择更高的测试充分性标准进行测试,从而提高软件质量。


2.2  测试工具的例子




2.3  测试工具的分类

Code analysis Tools
- Static analysis
- Dynamic analysis
Test Execution Tool
- Capture and Replay ( Record & Playback)
- Monitor Tool
- Stubs and Drivers
- Automated Testing Environment
Test case generators

2.4  测试工具的选择




3.测试工具的主流产品介绍


3.1  面向开发的单元测试工具

根据不同的语言进行分类:
  • C/C++单元级测试工具Panorama C++,C++Test, Numega 
  • JUnit是一个开发源代码的Java测试框架
  • 根据工具的功能特点进行分类:
  •  内存资源泄漏检查工具:Numega中的BounceChecker, Rational的Purify等
  •  代码覆盖率检查工具:Numega的TrueCoverage, Rational的PureCoverage,TeleLogic公司的Logiscope
  •  代码性能检查工具:Logiscope和 Macabe等。
  •  软件纠错工具Rational Purl等。

3.2  负载和性能测试工具



3.3  GUI功能测试工具

将操作应用程序的各种动作和输入记录下来,包括键盘操作、鼠标点击等捕捉(Record)下来,生成一个脚本文件,这个脚本以后可以被“回放( playback)” 。在实际测试过程中,要根据测试需求对录制的脚本进行一些必要的修改或加入一些参数,如选择不同的测试数据、脚本中插入检查点(Check Point)进行跟踪调试等。
基于GUI功能测试工具主要适合回归测试阶段。当一个应用开发基本完成后,程序界面基本定型,虽然业务的需求会很频繁变化,但测试脚本结构基本不需要改动,只需要做些小调整,就可以自动运行,则可大大提高了测试的效率和测试的准确性。
目前主要产品有MI公司的 WinRunner, Compuware的QARun, Rational的 SQA Robot,MS Visual Test Suite等

3.4  GUI自动化测试

  •  设计测试用例,并手工进行测试。
  •  如果测试未通过,则先改正缺陷,再次执行测试。
  •  如果测试通过,利用测试工具运行该测试过程,捕获运行过程需要检测的屏幕对象,并保存。
  •  在进行回归测试测试,自动利用测试工具运行测试,并比较运行过程的屏幕对象与保存的屏幕对象比较,从而判断测试用例是否通过。
3.5  基于Web应用的测试工具

基于Web应用的测试工具主要进行链接检查、HTML检查、Web功能和Web站点安全性等各个方面的测试。

主要Web测试工具有MI公司的Astra 系列(如Astra QuickTest )、RSW公司的  E-Test  Suite等;

Web系统测试工具: WorkBench、Web Application Stress Tool(WAS)、页面链接测试Link Sleuth等。 


3.6  Website性能测试测什么?

  • 各种操作的响应速度
  • 最大并发用户数
  • 最大数据容量

没有更多推荐了,返回首页