-
根据测试对象的可见度:黑盒测试、 白盒测试 根据状态:静态测试、动态测试 执行方式:手工测试、自动化测试 黑盒测试: 不考虑程序内部结构和内部特性下,通过相关暴露出的接口,对程序进行测试。 只检查程序的功能是否按照需求规定,正常使用; 程序是否能适当的输入输出数据,并产生正确的输出信息; 一般针对软件外面的界面,可见的功能; 从用户的视角,通过不同数据事件,通过输出结果进行判断; 优点: 1.容易实施,不需要关注内部的实现 2.更贴近用户的使用角度 缺点: 1.测试覆盖率较低,一般只能覆盖到代码量的不到40% 2.针对黑盒的自动化测试,复用率较低,维护成本较高。 黑盒测试主要测试什么 1.是否有不正确或遗漏的功能? 2.在接口上,输入是否能正确的接受?能否输出正确的结果? 3.是否有数据结构错误或外部信息(例如数据文件)访问错误? 4.性能上是否能够满足要求? 黑盒测试的主要设计方法 等价类划分法:针对程序的输入条件进行分类,输入典型的数据 边界值分析法:特殊的边界数据,测试代码的边界状态 错误推测法:基于经验,直觉,判断错误的地方;特殊字符,文件不存在 因果图法:根据输入输出看做原因和结果,形成因果图。(因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。) 正交试验分析法:选出代表性的数据,作为输入数据 状态迁移图法:软件审批的过程,各种状态迁移 流程分析法:处理程序逻辑执行的路径查看全部
-
软件测试分类:单元测试 集成测试 白盒测试 黑盒测试 性能测试查看全部
-
IEEE定义:使用人工或者自动的手段来运行或测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异。 1.软件测试的对象:软件需求,源代码,可运行的程序,软件运行环境,软件详细设计,概要设计 2.软件遵循的准则:(1)软件测试可以发现缺陷的存在,但并不能证明软件系统没有缺陷 (2)穷尽测试时不可能的,要及时设定终止条件 (3)软件测试要尽早 (4)缺陷具备群集特性(要多关注问题多的模块) (5)测试的杀虫剂悖论(如果用同个测试用例和测试方法反复测试某一模块,很难发现新的问题,所以测试用例和方法要不定期的修改和评审,并且增加不同的测试用例和方法来测试软件的不同部分,从而发现更多的缺陷) (6)测试的二八原则(把80%的时间用在重点的20%的模块) (7)测试活动依赖于测试背景 3.软件测试的分类 4.何时开始进行测试?测试方案如何设计 5.测试流程是怎样的?怎么提bug?怎么写报告? 6.为什么要做自动化测试?怎么做?查看全部
-
全局探索式测试:漫游测试法<br> 让测试人员像游客游览一样来测试,而且软件按照不同属性划分为各个区域。商业区是指软件启动到关闭之间用户会使用的功能。旅馆区是指软件休息没有实际运行时候的功能,例如后台进程和定时任务。历史区是指版本遗留代码或者说以前版本经常出现bug的功能模块。旅游区是指新手引导之类的功能。娱乐区是指主要功能之外的一些辅助特性。破旧区是指废弃或者已经隐藏的功能。查看全部
-
按测试阶段来分类:单元测试、集成测试、系统测试、验收测试。
单元测试:对软件中的最小可测试单元进行检查和验证。(人为规定的、可测试的、最小模块)
单元测试原则:1、尽可能保证各个测试用例是互相独立的。
2、一般由代码的开发人员来实施,用以检验所开发的代码功能符合自己的设计要求。
单元测试益处:1、能尽早发现缺陷。2、有利于重构。3、简化集成。4、文档。5、用于设计。
单元测试的限制:1、不可覆盖所有的执行路径,所以不可能保证捕捉到所有路径的错误。2、每一行代码,一般需要3-5行测试代码才能完成单元测试。所以存在投入和产出的一个平衡。
单元测试框架:Xunit(x代表某种意思)例Junit、ntunit(针对.net)、PHPunit、Cppunit(针对c++)
集成测试定义:是在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动。
集成测试的主要实施方案:1、Big Bang (也叫一次性集成或者大爆炸)。2、自顶向下:递增式 。3、自底向上。4、核心系统集成。5、高频集成(同步开发过程,每隔一断时间,就会对现有的代码进行集成)。
自顶向下、自底向上适合瀑布型系统、核心系统集成、高频集成适合敏捷开发类的系统。
集成测试与单元测试的区别:1、测试的对象不同。2、测试的依据不同:单元测试依据详细设计,集成测试依据概要设计。3、测试的方法不同:单元测试关注是内部的类等,集成测试关注的是接口之间的集成,模块接口之间的集成。
系统测试定义:是将经过集成测试的软件,作为计算机系统的一部分,与系统中其他部分集合起来,在实际运行环境下对计算机系统进行的一系列严格有效地测试,以发现软件潜在的问题,保证系统的正常运行。
系统测试关注点:1、关注系统本身的使用。2、关注系统与其他相关系统间的联通。3、关注系统在不同使用压力下的表现。4、关注系统在真实使用环境下的表现。
系统测试与集成测试的区别:1、测试对象不同,集成测试是由通过了单元测试的各个模块所集成起来的构件。系统测试,除了软件之外,还包括计算机硬件及相关的外围设备、数据采集和传输机构、支持软件、系统操作人员等整个系统。2、测试时间不同,集成测试介于单元测试和系统测试之间,系统测试在集成测试之后。3、测试内容不同,集成测试,各个单元模块之间的接口;系统测试,整个系统的功能和性能。4、测试角度不同,集成测试,偏于技术角度的验证;系统测试,偏于业务角度的验证。
验收测试定义:也称交付测试。针对用户需求、业务流程的正式的测试,确定系统是否满足验收标准,由用户、客户或其他授权机构决定是否接受系统。
验收测试细分:1、用户验收测试,一般是由开发方移交用户之前进行的测试。2、运行验收测试,大多是从运维的层面来看系统是否可以被正常运行,正常维护。3、合同和规范验收测试,主要是参照约定的规范进行的验收,也包括一些政府、法律法规等。4、alpha测试,在开发者提供的场景或者环境中来运行,由用户来运行。5、Beta测试,脱离开发环境,在用户提供的环境或者场景中测试。(alpha版本、beta版本、release版本是最终可交付的版本)
敏捷程序:验收驱动测试
查看全部 -
软件测试的五大要素:质量,人员,资源,流程,技术
两个目标:提升测试覆盖率和提升测试效率
查看全部 -
其他的一些测试类型概念
回归测试:软件功能修改后,对软件进行重新测试以确认修改没有引入新的错误或导致其他部分产生错误。回归测试的重心在关键模块和重点功能组件。软件研发周期中会进行多次回归测试,且尽量实现自动化。
Monkey测试:Monkey测试,也称搞怪测试。就使用一些随机、稀奇古怪的方式来操作软件,以测试系统的健壮性和稳定性。
冒烟测试:来自于硬件板卡验证术语。软件上则用于确认代码中的更改会按预期运行,且不会破坏整个版本的稳定性。(“每日构建”中用冒烟测试来确认合入的代码没有影响主要功能的正常。)
A/B测试:多用于互联网行业,通过为页面提供2个版本给用户使用并记录相关的用户行为数据,来确认更优化设计的一种测试方案。
A/B测试实施要点:多个方案并行;每次测试仅改动一个变量;按照某种规则进行优胜劣汰。
A/B测试工具:Google Analytics Content Experiments;Visual Website Optimizer
查看全部 -
软件测试定义:使用人工或自动的手段来运行或测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异
软件测试五大要素:质量(核心)、人员、资源、流程、技术
软件测试两个目标:测试覆盖率、测试效率
软件测试所遵循的原则:
测试显示缺陷存在,但不能证明系统不存在缺陷
穷尽测试是不可能的,应设定及时终止的条件
软件测试应尽早进行
缺陷具备群集特性
测试的杀虫剂悖论
测试的二八原则
测试活动依赖于测试背景
查看全部 -
安全测试:对软件产品进行测试以保证其符合产品安全需求和质量标准
渗透测试:通过模拟对软件系统的恶意攻击行为来评估系统安全性的一种测试
OWASP:Open Web Application Security Project 开放网络应用安全项目
下面博主演示了访问OWASP官网
OWASP Top Ten Project 2013
1.Injection 注入脚本漏洞使用户访问到不该访问的数据的目的
2.Broken Authentication and Session Management 失效的身份认证和会话管理 会话劫持漏洞
3.Cross—Site Scripting(XSS)跨站脚本
4.Insecure Direct Object References 不安全的对象直接引用 参数的保护
5.Security Misconfiguration 安全配置类错误
6.Sensitive Data Exposure 敏感信息泄露 信息传递没有对关键信息进行加密
7.Missing Function Level Access Control 功能级别访问控制缺失 比如访问网站可以访问到用户没有权限到达的地方
8.Cross-Site Function Level Access Control(CSRF) 跨站请求伪造
9.Using Components with Known Vulnerabilities 使用了已知有漏洞的组件
10.Unvalidated Redirects adn Forwards 未被验证的重定向和转发 (钓鱼网站)
安全测试工具各种针对的点:
Appscan,Webinspect,W3AF:web应用
Nessus:服务器,主机
Nmap:端口开放
MetaSploit:攻击软件,渗透测试
WebScarab:代理劫持
Fortify:针对白盒,源码中的安全问题
查看全部 -
按测试类型来分
功能测试、性能测试、部署测试、文档测试、安全测试、兼容性测试、易用性测试、本地化测试、无障碍测试、可靠性测试
功能测试:根据产品特性、操作描述金额用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。
针对的问题:功能错误或遗漏、界面问题、性能错误、数据及访问错误、初始化及终止错误
功能测试工具:
商用:QTP(基于关键字,web应用)winrunner(桌面端的软件)、silkTest、Rational robot
开源:selenium(敏捷开发)、Watir(web应用)、Sikuli(基于屏幕截图)
查看全部 -
按测试手段分类
根据测试对象的可见度:黑盒测试、 白盒测试
根据状态:静态测试、动态测试
执行方式:手工测试、自动化测试
黑盒测试:
不考虑程序内部结构和内部特性下,通过相关暴露出的接口,对程序进行测试。
只检查程序的功能是否按照需求规定,正常使用;
程序是否能输入数据,并产生正确的输出信息;
不考虑内部的逻辑;
一般针对软件外面的界面,可见的功能;
从用户的视角,通过不同数据事件,通过输出结果进行判断;
优点:
1.容易实施,不需要关注内部的实现
2.更贴近用户的使用角度
缺点:
1.测试覆盖率较低,一般只能覆盖到代码量的不到40%
2.针对黑盒的自动化测试,复用率较低,维护成本较高。因:产品活动增/删(更新)
黑盒测试主要测试什么 ?
1.是否有不正确或遗漏的功能?
2.在接口上,输入是否能正确的接受?能否输出正确的结果?
3.是否有数据结构错误或外部信息(例如数据文件)访问错误?
4.性能上是否能够满足要求
系统测试阶段 用黑盒测试比较多
黑盒测试的主要设计方法
等价类划分法:针对程序的输入条件进行分类,输入典型的数据
边界值分析法:特殊的边界数据,测试代码的边界状态
错误推测法:基于经验,直觉,判断错误的地方;特殊字符,文件不存在
因果图法:根据输入输出看做原因和结果,形成因果图。(因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。)
正交试验分析法:选出代表性的数据,作为输入数据
状态迁移图法:软件审批的过程,各种状态迁移
流程分析法:处理程序逻辑执行的路径
白盒测试(结构化测试,透明盒测试):逻辑可见,逻辑覆盖率
主要的逻辑单位:
语句覆盖:保证每条语句至少执行一次
分支(判定):保证每条分支至少执行一次
条件:条件表达式,至少计算一次
条件组合:所有不同条件的组合情况
路径:程序中,每个可能的路径至少执行一次
优点
1.迫使测试人员去仔细思考软件的实现,理解原理
2.可以检测代码中的每条分支和路径
3.揭示隐藏在代码中的错误
4.对代码的测试比较彻底
缺点
1.昂贵。
2.无法检测代码中遗漏的路径和数据敏感性错误
3.不能直接验证需求的正确性
白盒测试的主要测试方法
1、代码检测法:桌面检查、代码走查/审查
2、静态结构分析法:使用测试工具分析内部结构
3、静态质量度量法:根据标准的质量模型为基准,制造度量模型进行评估
4、逻辑覆盖法:语句、条件、条件组合、分支(判定)、路径、条件和判定的组合覆盖
5、基本路径测试法:分析圈复杂度
【灰盒测试】
定义:介于黑、白盒测试之间的,关注输出对于输入的正确性,同时也关注内部表现
【静态测试】
定义:
静态测试是指无需执行检测程序,而是通过评审软件文档或代码,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率
方式:
互审(不正式)<-走查->会议(正式)
【动态测试】
定义:
动态测试是指通过运行检查程序,检查运行结果与预期结果的差异,并分析运行效率,正确性和健壮性等,黑盒测试的主要测试方法,主要是动态测试。白盒测试的主要测试方法,是静态测试。
【手工测试】
定义:
由专门的测试人员从用户视角来验证软件是否满足设计要求的行为,更实用针对深度的测试和强调主观判断的测试。比如众包和探索式测试
【自动化测试】
定义:
使用单独的测试工具软件控制测试的自动化执行以及对预期的结果进行自动检查,比如单元、接口和性能测试等
手工测试vs自动化测试:
1、易发现缺陷 高效率、速度快
2、容易实施 高复用性
3、创造性、灵活性 覆盖丰富易度量
4、覆盖量化难 准确、可靠
5、重复测试率低 不知疲劳
6、不一致性,可靠性低 机械,发现缺陷率低
7、人力资源依赖 一次性投入较大
查看全部 -
1、单元测试
查看全部 -
软件测试的分类:
查看全部 -
敏捷测试
Aglie Testing --遵循敏捷宣言的一种测试实现
敏捷宣言
我们通过身体力行和帮助他人来揭示更好的开发方式。
敏捷测试
强调从客户角度进行测试。
重点关注迭代测试新功能,不在强调测试阶段。
尽早测试,不间断测试,具备条件即测试(比如某个模块代码编写完成即可进行测试)
强调持续反馈
预防缺陷重于发现缺陷
基于脚本的测试--SBT
Script-based Testing
Scripted Testing(ST)
Exploratory Testing(ET)
探索式测试(ET)
完全抛开测试脚本的测试
它是一种测试风格、思维而不是一种测试技术
探索式测试的优点
1、更能激发测试人员的创造性和工作乐趣
2、增加了发现新的或较深入Bug的可能性
3、在较短时间内找到更多Bug以及对SUT作一个快速的评估
4、有利于更加有效地实施自动化
5、更加适用于敏捷项目
6、减少了在简单、繁琐上用例的无谓编写时间
探索式测试的缺点
1、测试管理上有局限性,较难协调和控制
2、对于Bug的重复利用和重现上作用有限
3、对测试人员的测试技能和业务知识深度依赖较大
4、只有在SUT已完全可用的前提下才更有作用
5、ET的生产率很难定义
6、ET本身较难进行自动化
局部探索式测试
输入 状态 代码路径 用户数据 执行环境
输入:接受输入、产生输出、存储数据、进行运算 (测试时一般从输入顺序,输出内容、输出异常考虑测试要点)
状态:临时状态、永久状态 (运行时有效、阶段有效、数据库保存、文件保存)
代码路径:代码的覆盖
用户数据:真实的用户数据
执行环境:操作系统、系统组网的拓扑、与系统有交互的第三方系统、系统的配置数据,系统的设备
全局探索式测试
漫游测试法: 旅馆区 旅游区 历史区 娱乐区 破旧区 商业区
定义:让测试人员像游客游览一样来测试被测系统,并把系统按照不同的属性分成不同的区域来进行针对性的测试
商业区:软件启动到关闭之间用户可能使用到的一些主要功能
旅馆区:软件在休息或没有在运行的时候的一些功能,一般指运行在后台的一些进程/定时任务。
历史区:版本历史遗留代码的一些功能,或以前测试过程之中发生比较多问题的模块的一些功能
旅游区:新用户会使用到或比较关注的一些功能,比如:新手的一些指引、注册的功能
娱乐区:系统之外的一些辅助功能
破旧区:系统已经废弃的或者是隐藏的,用户看不到的一些功能,一般不在用户手册中提及。
Know You Mession:了解测试任务的重点,测试的主要测试方向,系统的环境信息,理清测试的总体思路。
Leaning Session:详细的学习与探索被测系统,了解系统的逻辑具体的功能,深入的学习被测系统。
Coverage session:主要的探索测试的实施阶段,需要完成主要功能点的测试验收,完成测试点的覆盖,尽可能的把测试点都测试到。
Deep Session:在上一阶段覆盖性测试的基础上进一步的、深入的、发散式的探索性测试,挖掘一些深层次的问题。
Close Session:对前面的测试工作总结,总结前面探索性测试的过程,整理测试过程记录的一些测试信息,并根据这些记录和过程总结,分析测试过程有没有遗漏问题,覆盖率是多少。
查看全部 -
软件测试的分类:单元测试、集成测试、系统测试、验收测试
一、单元测试(基本功能测试)
什么是单元测试:对软件中的最小可测试单元进行检查和验证。(java中的每一个类,界面的功能软件中菜单的某一个子功能)
单元测试的原则:
1、尽可能保证各个测试用例是相互独立的。
2、一般由代码的开发人员来实施,用以检验所开发的代码功能符合自己的设计要求。
单元测试的益处
1、能尽早的发现缺陷(TDD先编写单元测试(对需求的二次确认保障开发的方向正确)->编写代码)
2、有利于重构(重构代码时保障功能)
3、简化集成(保障最小单元的稳定性/正确性)
4、文档(好的单元测试可以代替文档)
5、用于设计(单元测试可以验证设计是否满足要求)
单元测试的限制
1、不可能覆盖所有的执行路径,所以不可能保证捕捉到所有的路径的错误。
2、每一行代码,一般需要3~5行测试代码才能完成单元测试。所以存在投入和产出的一个平衡。
二、集成测试(接口测试)
定义:是在单元测试的基础上,测试在将所有的软件单元按照概要设计规格的要求组装成模块、子模块或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动
集成测试的主要实施方案
1、Big Bang(一次性测试/大爆炸测试,把所有的功能集合在一起进行一次完整的系统测试)
2、自顶向下(从主程序开始->控制层->服务层的顺序进行组装功能)
3、自低向上(从底层一步步向上组装功能)
4、核心系统集成(先组装核心->非核心)
5、高频集成(每隔一段时间对代码进行一次集成测试,典型的案例是持续集成)
集成测试&单元测试
1、测试的对象不同(单元测试是最小单元,集成测试是模块、子系统进行测试,测试的是接口与接口之间的调用关系)
2、测试的依据不同(单元测试为详细设计,集成测试为概要测试)
3、测试方法不同(单元测试只关心代码内部功能实现,集成测试关注的是接口之间的集成)
三、系统测试
定义:是将经过集成测试的软件,作为计算机系统的一部分,与系统中其他部分结合起来,在实际运行环境下对计算机系统进行的一系列严格有限的测试,以发现软件潜在的问题,保证系统的正常运行。
关注点:
关注系统本身的使用
关注系统与其他相关系统间的连通
关注系统在不同使用压力下的表现
关注系统在真实使用环境下的表现
系统测试&集成测试
测试对象:
集成测试:由通过了单元测试的各个模块所集成起来的构建
系统测试:除了软件之外,还包括计算机硬件及相关的外围设备、数据采集和传输机构、支持软件、系统操作人员等整个系统。
测试时间:
集成测试介于单元测试和系统测试之间测试
系统测试在集成测试之后
测试内容:
集成测试:各个单元模块之间的接口
系统测试:整个系统的功能和性能
测试角度
集成测试:偏于技术角度的验证
系统测试:偏于业务角度的验证
四、验收测试
定义:也称交付测试。针对用户需求、业务流程的正式测试,确定系统是否满足验收标准、由用户、客户或其他授权机构决定是否接受系统。
细分:
用户验收测试(开发方交付产品前对产品进行验证)
运行验收测试(运维层面验证、正常运行)
合同和规范验收测试
alpha测试(开发者提供的环境,用户验收测试)
Beta测试(用户提供的环境进行验收测试)
查看全部
举报