测试的基础分类与每个类型的测试目标
1.1,基于项目流程的测试分类
软件开发的基本流程
需求分析—>设计—>编码—>单元测试—>集成测试—>系统测试—>验收测试
项目流程测试分类:
单元(模块)测试:对程序中的单个子程序或者具有独立工程的代码进行测试的过程
是指软件中最小可测试单元进行检查和验证
在程序测试中单元测试可能是针对一个函数或者类
在图形化界面测试中单元测试针对一个最小功能单元,如验证码显示,系统登录
集成测试:在单元测试基础上,将单元模块组装成系统或子系统再进行测试,检查模块间的接口是否正确
系统测试:针对整个产品系统进行测试,验证系统是否满足了需求规格的定义,以及软件系统的正确性和性能等是否按摩足其规约所指定的要求
验收测试:部署软件前的最后一个测试操作,验收测试的目的确保软件准备就绪,向购买者展示该软件已经满足用户的需求
1.2,基于测试方式的测试分类
黑盒测试:通过对软件的输入数据去查阅输出结果是否正确,针对程序外部结构,不考虑内部逻辑结构,主要针对软件界面和功能进行测试,一般通过操作软件来完成测试
白盒测试:分析产品的交付代码,进而编写测试程序来测试产品是否符合功能以及性能需求,对产品代码进行分析,并编写测试用例,可以测试目标的执行效率,执行时间,合理性,结果精确,效率低下
灰盒测试:介于黑盒和白盒之间,部分核心功能以及性能测试通过白盒测试,其余为黑盒
1.3,基于测试目的的测试分类
功能测试:检测实际的功能是否满足用户的需求,
性能测试:通过自动化测试工具模拟正常,峰值以及异常负载条件来对
系统的各项性能指标进行测试
时间性能测试:软件的响应时间是否符合测试需求(eg:登录时间)
硬件性能测试:指软件运行时所消耗的系统资源,比如硬件资源,CPU,内存,网络宽带消耗等
两者的优先级:系统测试首先进行功能测试,满足功能需求后进行性能测试
1.4,自动化测试与手动测试
手动测试:人为去执行测试用例,通过鼠标键盘等外部设备来操作系统的UI界面,查看返回结果是否符合预期的结果
自动化测试:通过测试程序模拟用户对软件的操作行为
自动化测试过程:根据测试用例中描述的规程一步步执行测试,并比对实际结果
自动化功能测试:通过编码的方式用一段程序来测试一个软件的功能
自动化性能测试:模拟大量用户向系统发送请求,用来验证系统的处理能力, 一般用自动化测试工具完成(例如loadrunner),也可以通过自定义程序完成
1.5,其他测试类型
冒烟测试:测试前验证基本功能是否可以实现
回归测试:修改旧代码后,重新进行测试已确定修改后是否产生或引起其他的错误
随机测试:指测试中输入数据是随机的,目的模拟用户的真实操作,发现一些边缘性问题
探索性测试:碰到测试问题对测试策略进行探索性尝试
安全测试:对产品进行检验以验证产品是否符合安全需求定义和产品质量标准的过程
使用场景:
2.1,自动化测试的优缺点
优点:
1,对程序的回归测试更方便
2,可以运行更多更繁琐的测试
3,可以执行一些手工测试困难或者不可能进行的测试.比如,对于大量用户的测试
4,测试具有一致性和可重复性
5,测试的复用性
6,增加软件信任度
缺点:
不能取代手工测试,有很多需要人脑判断结果的测试用例无法用自动工具实现
手工比自动测试发现的缺陷更多
测试结果对测试人员开发的测试程序质量的依赖性极大
系统频繁升级会导致测试用例频繁升级
概括:自动化测试无法取代手工测试,因此两者通常联合使用
并非所有系统都需要使用自动化测试手段,盲目使用会增加软件测试的风险
2.2,自动化测试的基本原则
1,测试任务明确
2,系统融合度高
3,软件系统界面稳定
4,大量的重复测试任务
5,维护周期长
6,开发比较规范
7,具备自动化测试管理平台
3.1,常用的自动化测试工具
自动化测试工具分类
①UI自动化测试工具:通过调用测试程序模拟用户操作BS或CS软件来实现测试的工具,按照编写测试程序的方式又分为:
录制以及回放工具:生成本次系统操作对应的程序代码段
自动化测试框架:第三方框架,封装了模拟用户操作软件UI界面的系列API接口
一般建议手动编写测试程序分析系统代码结构和UI自动化测试工具结合使用
常用的UI自动化测试工具:
QTP:企业级自动化测试工具,提供强大易用的录制回放功能,支持B/S与C/S两种框架的软件测试,是目前主流的自动化测试工具
Robot Framework:python编写的功能自动化测试框架,具备良好的可扩展性,支援关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行
Watir:基于Web模式的自动化功能测试,是一个Ruby语言库,使用ruby语言进行脚本开发
*selenium:Web应用程序测试的工具,支持多平台,多浏览器,多语言去实现自动化测试,系列产品中包含自动化测试框架,录制工具,分布测试工具等
②性能测试:通过自动化测试的工具模拟正常,峰值以及负载条件来对系统的各项性能指标进行测试
负载测试:监控系统各项性能指标的变化情况
压力测试:获取系统能提供最大服务级别的测试
性能测试工具:
可通过测试工具实现(eg:loadrunner等)
*可通过多线程模拟多用户访问来实现
通过脚本或工具可以监控服务器端资源的使用情况
③接口测试工具
3.2,selenium工具:
selenium IDE功能:
记录用户的操作步骤
声明预期显示结果
声明程序注释
通过配置可编译成Python,Java等语言的测试脚本,测试脚本中调用selenium完成web访问操作
4.2浏览器驱动程序
webdriver:
chrome
unittest框架:python的第三方单元测试框架也可以将单元测试组装为套件,可以依次执行多个单元测试案例
主要功能:
1,提供规范的测试函数声明
2,提供组装测试套件功能
3,提供了多个用于判断异常的断言
4,提供了装饰器用于屏蔽非目标测试函数
单元测试用例:软件测试中最基本的组成单元,在unittest测试框架中被视为吃啥单元的运行实体,一个测试用例应包含一个或多个测试单元
测试用例:在unittest中测试用例对应一个实体类,包含多个测试函数(测试单元)
测试单元:对应一个测试函数,对应一个独立的单元测试用例,例如登录模块是测试用例,登录与退出登录分别为测试单元