更多详细说明在HTTP 方法:GET 对比 POST
点击软件测试方法
bug严重程度:一般提L4和L3,L2很少提,除非影响流程。L1这个是非常致命的bug,只有很严重的情况才提。
技术分析
from selenium import webdriver#webdriver库源代码示例与分析
区别
常规而言,在不强调网络协议的情况下,请求基本都是HTTP网络协议下的请求完整流程:
域名解析——服务器建立连接——发送请求——服务器接收并运算,生成响应——返回响应结果——前端解析,加载资源——渲染到页面展示
jmeter、load runner
程序、数据及相关文档的完整集合。
国际电气电子工程师协会
简单讲,软件测试是发现缺陷的过程:IEEE中的定义是,软件测试是使用人工或自动手段来运行或测定某个系统的过程,目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
(1)验证软件是否满足各类文档说明书等规定的软件质量要求
(2)找出软件缺陷
(3)为软件产品的质量测量和评价提供依据
功能代表一个软件能做什么;性能反映软件运行的速度或效率、占用资源的多少等指标;兼容性表示一个软件与其所在运行环境的依赖程度,包括与硬件、操作平台、其他软件的依赖。
测试分为单元测试、集成测试、系统测试、验收测试四个阶段。前三个阶段的目的是尽可能多的发现缺陷,而验收测试是要验证软件满足了用户需求,帮助用户建立系统可以正常使用的信心,发现缺陷不是此阶段的目标。
QA的含义是软件质量保证(人员)。
主要职责是制定和加强促进软件开发并防止软件缺陷的标准和方法,并监督标准和过程被正确的遵循。
测试工程师的主要任务是在最短的时间内发现尽可能多的缺陷,并确保这些缺陷得以修复。
软件质量保证的主要职责是制定和加强促进软件开发并防止软件缺陷的标准和方法,并监督标准和过程被正确的遵循。
测试应该由独立的第三方来进行,第三方表示测试人员不参与程序的开发。
一般情况下80%的缺陷聚集在20%的关键核心业务模块中,这个原则至少告诉我们在做
测试时,应该重点分析和测试20%的核心业务,具体说要做好需求分析。
杀虫剂怪事用于描述软件测试越多,其对测试的免疫力越强的现象。这个现象告诉我们,
测试时,应尝试新方法、不同的测试程序,对程序进行测试,以找出更多软件缺陷。
木桶原理在软件方面的主要含义是全面质量管理,另外还告诉我们测试时要关注团队中较弱的人。|
Good-enough 原则告诉我们做测试的时候既不要做过多测试,也不做不充分的测试。至于多少测试合适,需要我们不断积累经验,在项目中可以指定最低测试通过标准和测试内容,然后具体问题具体分析。
群集效应的含义是发现的缺陷越多,证明软件存在的缺陷越多。群集效应指导我们在找
到软件缺陷的地方要继续找找。
确认测试也称再测试:缺陷修复以后,验证缺陷是否真正修复
回归测试:缺陷修复以后,确保对程序的修改没有给软件其他未改变部分带来新的缺陷。
要有责任心,要有破坏的态度,对事不对人,三心二意(细心、信心、耐心、缺陷预防意识、沟通意识),具有一定的开发技能,善于思考。
细心,信心,耐心。
团队合作的沟通意识、时刻保持怀疑的态度且有缺陷预防意识
首先分析或与开发沟通开发不认可的原因。
(1)以沟通和合作的方式开展工作
(2)提高开发技能
(3)换位思考
(4)进行有效沟通
测试负责人:制定测试计划,监督安排任务,进行测试总结。1
测试工程师:进行测试需求分析、设计用例、搭建环境、执行用例、提交并跟踪缺陷。3
技术支持:负责环境维护。1
配置管理员:维护版本架构,维护版本库,文档配置。1
质量保证人员:负责软件质量方面的工作。1
从软件最初构思到公开发行的过程。瀑布模型的过程是计划、需求、设计、编码、测试、运行、维护循环。
软件开发模型:大爆炸模型、边写边改模型、瀑布模型、螺旋模型、敏捷开发模型
软件测试模型:v模型、w模型、H模型、X模型、前置测试模型、敏捷测试模型
V模型的过程:用户需求―需求分析—概要设计—详细设计—编码—单元测试─集成测试—系统测试—验收测试。
w模型的过程:左边v是需求分析—概要设计—详细设计—编码实现—模块集成—系统构建―系统安装;右边v是需求测试―概要设计测试—详细设计测试—单元测试―集成测试—系统测试—验收测试。
优点:
(1)W模型体现了尽早和不断测试的原则,既强调测试方案设计,也强调测试执行。
(2)左侧V是开发,右侧v是与开发并行的测试,相对于v模型,W模型增加了软件
各开发阶段中应同步进行的验证和确认活动,w明确表示出了测试与开发的并行关系。测试与开发是同步进行的,有利于尽早地全面的发现问题。
(3)测试伴随整个软件开发周期,且测试的对象不仅仅是程序,需求、设计等同样要测试。
缺点:
在w模型中,需求、设计、编码等活动被视为串行的,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型,不利于当前软件开发复杂多变的情况。
H模型将测试活动完全独立出来,形成一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来。H模型的测试流程是只要测试准备工作完成,达到测试就绪点,测试就可以执行了。
优点:
(1)软件测试不仅仅指测试的执行,还包括很多其他的活动。
(2)软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行。当某个测试时间点就绪时,软件测试即从测试准备阶段进入测试执行阶段。
(3)H模型反映出软件测试要尽早准备,尽早执行。
(4)软件测试可以进行迭代、反复进行。
敏捷开发的核心思想是:以人为本,适应变化。具体讲:
(1)认为个体和交互重于过程和工具,强调通过过程和工具理解个人和交流的作用;
(2)认为可用软件重于完备文档,强调通过全面的文档理解运行的软件;
(3)认为客户协作重于合同谈判,强调通过合同和谈判得到客户的协作;
(4)认为响应变化重于遵循计划,强调在计划的执行中做出对变更的响应。
特点:
(1)敏捷开发提倡迭代式和增量式的开发模式,并强调测试在其中的重要作用。
(2)敏捷开发是以用户为中心、以客户需求为导向的开发过程,在此过程中随时做好“迎接变化”的准备,客户是敏捷的关键环节。
(3)敏捷开发没有单一固定的开发方法或过程,敏捷开发有三个共同点:依赖客户的参与、测试驱动以及紧凑的迭代开发周期。
(1)敏捷测试是协同测试的一种形式,程序员结对编程,程序员分饰测试员角色,敏捷测试是连续测试。
(2)敏捷测试侧重单元测试和验收测试。单元测试的过程是先设计单元测试用例,然后进行编码,之后执行测试。
(3)敏捷测试强调客户参与,单元测试通过之后代码集成到代码库中,再由客户进行验收测试,验收测试的结论反馈给开发人员,缺陷得以迅速修复。
功能要求和非功能要求。
性能要求(压力测试、负载测试、容量测试、可靠性测试)、界面测试、兼容性测试、易用性测试、文档测试、可用性测试等。
(1)测试人员进行测试需求分析。
(2)测试负责人编写测试计划。
(3)测试人员根据测试需求分析设计和编写测试用例。
(4)测试人员搭建测试环境、创建测试数据、执行测试用例、提交缺陷报告并进行跟踪、记录测试事件。
(5)进行测试评估和总结。
每一分步工作完成后都进行评审。
编写需求分析并评审→编写测试计划并评审→设计测试用例并评审→搭建测试环境、执行测试用例、提交缺陷报告→进行评估和总结
编写需求分析并评审→编写测试计划并评审→设计测试用例并评审→搭建测试环境、执行测试用例、提交缺陷报告→进行评估和总结
编写需求分析并评审→编写测试计划并评审→设计测试用例并评审→搭建测试环境、执行测试用例、提交缺陷报告→进行评估和总结。
需求分析测试-> 概要设计测试-> 详细设计测试-> 单元测试-> 集成测试-> 系统测试-> 验收测试
(1)收集各类文档,仔细阅读文档,提出问题,分析问题或沟通解决
整理需求信息。
(2)编写测试需求分析说明书:功能分解,编写检查点和测试点。
(3)需求评审。
软件主要的功能、流程、开发环境(开发语言<含数据类型>、数据库,中间件)、运行
环境(硬件、软件、网络、软件架构)、用户群、测试范围、测试优先级。
编写需求分析并评审→编写测试计划并评审→设计测试用例并评审→搭建测试环境、执行测试用例、提交缺陷报告→进行评估和总结。
(1) 收集各类文档,仔细阅读文档,提出问题,分析问题或沟通解决
整理需求信息。
(2)编写测试需求分析说明书:功能分解,编写检查点和测试点。
(3)需求评审。
软件主要的功能、流程、开发环境(开发语言<含数据类型>、数据库、中间件)、运行环境(硬件、软件、网络、软件架构)、用户群、测试范围、测试优先级
测试执行发现缺陷时立即提交缺陷。
入口准则是进行一项测试工作前需要准备好的前提条件。出口准则是一项测试工作可以结束的前提条件。
项目经理、开发经理、测试经理、测试人员、开发人员、市场经理、客户等。
编写或设计需求评审检查单,比如可以检查有无错别字、病句,标点符号使用是否正确,格式是否一致,是否还有多余需求,是否有错误需求,是否有遗漏需求等。
人力资源、硬件资源、软件资源。
测试策略主要包括功能测试、性能测试、兼容性测试、可用性测试、易用性测试等。测试范围有时候等价于测试策略,有时候可以表示要进行测试的某个软件部位
也称冒烟测试、版本验证测试、小版本验证测试、版本构建测试。冒烟测试用例是一组想先运行以确定这个给出的小版本是否可以测试的测试用例。冒烟测试主要测试软件的基本功能,以判断整个软件值不值得进行大规模测试。通常由一个人进行1-2小时的测试,一般不测试次要功能和各种错误。
包含了产品概述、测试区域/测试策略/测试范围/测试目标(测试项、被测特征)、测试配置/测试资源、测试周期、进度安排(测试任务、人员安排)、测试方法/途径、测试交流、风险分析等内容。目的是指导测试过程,规定测试活动的范围、方法、资源和进度;明确正在测试的项目、要测试的特性、要执行的测试任务、每个任务的责任人以及与计划相关的风险。
(1)软件未达到产品说明书标明的功能;
(2)软件心现了产品说明书指明不会出现的错误;
(3)软件功能超出产品说明书指明范围;
(4)软件未达到产品说明书虽未指出但应达到的目标;
(5)软件测试员具体问题具体分析,认为软件难以理解、不易使用、运行速度缓慢,
或者最终用户认为不好。
需求频繁变更、沟通不良、不了解客户的需求、实现新功能或很酷的功能、追求新技术、项目期限的压力、需求分析或设计投入的时间和精力不够、产品的复杂度、开发人员疲劳、压力过大或受到干扰、缺乏足够的知识、技能和经验、缺乏动力等。
最主要的原因:需求方面的原因
根据缺陷的判断原则来甄别发现的问题是不是一个缺陷,发现缺陷后,
应该做好分离和再现(3次),然后才能提交。
分离缺陷、再现缺陷(3次),然后才能提交。
首先,应当对这样的缺陷进行详细的记录,并尽快提交给开发人员。
其次,对于寻找难以再现的缺陷要合理地安排时间,对一时难以再现的缺陷可以暂时搁置,以保证项目的正常进度。
最后,在测试过程中对未再现缺陷予以关注。
提交了一个缺陷库中存在或者开发人员已经知道的缺陷。
1、如果缺陷是跟同事提交的重复,任务分工解决,也可以在提交之前查询下库缺陷是否存在。
2、如果缺陷是与自己提交的缺陷重复,则需要提高发现缺陷的能力,通过提高开发能力来理解两个缺陷本质上是一个缺陷。
提交的缺陷不是真正的缺陷。
充分了解需求、提高自己识别缺陷的能力、提高缺陷写作能力
Correct(准确):每个组成部分的描述准确,不会引起误解;
Clear(清晰):每个组成部分的描述清晰,易于理解;
Concise (简洁):只包含必不可少的信息,不包括任何多余的内容;
Complete(完整):包含复现该缺陷的完整步骤和其他本质信息;
Consistent(一致):按照一致的格式书写全部缺陷报告。
缺陷标题(或者说缺陷摘要、缺陷概述、缺陷基本信息)、预处理、复现步骤、预期结果、实际结果、严重程度、优先级、测试环境、测试版本、测试执行人、注释。
缺陷标题(或者说缺陷摘要、缺陷概述、缺陷基本信息)
不要使用我、你、他等字眼,系要使用情绪化的语言和强调符号、不要使用“似乎”、看上去可能等不确定性内容、不要使用认为比较幽默的内容、不要使用不确定的测试问题(不确定是否是缺陷)、不要人身攻击。
软件测试人员提交缺陷报告;
测试负责人审核后将缺陷报告分配给相关的开发人员修改;
缺陷被修改后由测试人员根据缺陷报告中的修改记录进行返测返测通过的缺陷报告由负责人关闭;
返测未通过的缺陷报告直接返回开发人员重新修改,然后再由测试人员返测,直到测试和开发达成一致处理意见。
软件测试人员提交缺陷报告;
测试负责人审核后将缺陷报告分配给相关的开发人员修改;
缺陷被修改后由测试人员根据缺陷报告中的修改记录进行返测返测通过的缺陷报告由负责人关闭;
返测未通过的缺陷报告直接返回开发人员重新修改,然后再由测试人员返测,直到测试和开发达成一致处理意见。
提交缺陷→分配缺陷→是重复缺陷→置为无效缺陷。
致命缺陷、严重缺陷、一般缺陷、较小错误、意见建议等
缺陷必须立即解决;
缺陷需要正常排队等待修复或列入软件发布清单;缺陷可以在方便时被纠正;
下一个版本修复;
不修复。
新建/已提交打开
已拒绝已解决已关闭
单元测试、集成测试、系统测试、验收测试
单元测试、集成测试、系统测试、验收测试
针对一个软件单元的测试。开发人员或懂开发的测试人员
桩模块:被被测模块调用的模块。
驱动模块:调用被测模块的模块。
完成编译的测试对象,测试环境,开发工具,测试对象的规范说明书。
单元测试的技术:黑盒白盒技术,但是白盒居多,黑盒居少,一般先做黑盒再做白盒。
单元测试重点:功能性测试,健壮性(逆向测试:无效值),性能。
单元测试前提条件:完成编译的测试对象,测试环境,开发工具,测试对象的规范说明。
组件间的接口与交互的测试。
接口和系统内不同部分的相互作用(交互)。
测试条件是完成集成的被测系统,测试台,有关组件间交互的文档。
测试技术包括白盒技术、黑盒技术,白盒居多,黑盒居少,对比单元测试,白盒下降,一般先做黑盒再做白盒。
自顶向下集成
自底向上集成
对整个系统能不能满足用户需求的测试。
检查软件是否满足需求。
1、按测试对象进行分类
①白盒测试(这种测试的主题就是软件的底层代码,不会在意外在的界面是否ok,只要求底层功能实现、同时逻辑正确)
②黑盒测试(这种测试就是指测试软件外在主体功能是否可用)
③灰盒测试(介于两者之间【 接口测试 】)
上述三种方法当中的“盒”指的就是被测对象。
2、按测试对象是否执行分类
①静态测试(指的就是测试不执行,类似于界面形式,说明文档等)
②动态测试(将软件运行在真实的使用环境中进行测试)
3、按测试手段进行分类
①手工测试(由测试人员手动的对被测对象进行验证,优点就是可以灵活的改变测试操作及环境)
②自动化测试(所谓自动化主要有两种形式,一种是自己写测试脚本,另外一种就是通过第三方的工具对被测对象进行测试)优点就是可以高效率的去执行一些人工无法实现的操作
发现:非功能性缺陷、涉及整个系统的问题。
遗漏:对用户的需求的错误理解、没有实现或者没有完全实现用户的隐性需求。
一般由用户/客户进行的确认是否可以接受一个系统的验证性测试。
验收测试根据用户需求,业务流程进行的正式测试以确保系统符合所有验收的准则。
客户或用户,测试人员可以介入。
对系统或子系统建立信心、对系统非功能性的特性赢得信任。
Alpha测试:潜在的客户/用户在开发场地进行的测试。
Beta测试:由潜在客户/用户在自己的环境下测试软件系统。
软件正常使用后对软件的变更、更新进行测试
性能表现处理速度、响应时间、CPU使用、内存使用、硬盘使用等。
负载测试:通过不断增加负载来测试一个系统的性能。
压力测试:通过增加负载超过系统正常工作能力来考察系统能否在异常情况下正常工作
区别:压力测试和负载测试的区别/性能指标/专项测试/(tps/qps)
负载测试是从并发量维度出发,不断增加并发量发情况下,系统的性能指标
压力测试是从访问时间的维度出发,在并发量一定的情况下不断增加连续访问的时间情况下,系统的性能指标。
测试一个软件能做什么,是不是完成后了应该做的工作,没做不该做的工作。
白盒测试也称结构测试、逻辑驱动测试、基于程序本身的测试,是对程序结构进行的测试。
与变更相关的测试是本修改过的程序进行的测试。
确认测试(再测试)和回归测试。
静态测试:不执行程序的测试。针对文档和不需执行的代码。
动态测试:需要执行程序,方法一般采用黑盒测试方法和白盒测试方法。
不重叠的闭合环数+1
白盒测试主要使用逻辑覆盖测试方法,包括语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖、路径覆益等。
语句覆盖:程序中的每个可执行语句至少被执行一次。能发现语句错误,但不能发现逻辑错误。
判定覆盖:也称分支覆盖,程序中的每个判定的取真分支和取假分支至少执行一次。能发现逻辑错误,但不能发现组合判断中的条件错误。
条件覆盖:程序每个判定中每个条件的可能取值至少满足一次。能发现条件错误,但不能发现逻辑错误。
判定-条件覆盖:每个条件中的所有可能取值至少执行一次,同时,每个判定的可能结果至少执行一次。
条件组合覆盖:每个判定中的所有的条件取值组合至少执行一次。
路径覆盖:用例覆盖程序中的所有可能的执行路径。如果路径数很多,会变得不切实际。
不同配置环境下进行测试。
不仅包括测试文档校对,还有文档和软件不一致
用例编号,测试概述或用例标题、测试步骤,预期结果,输入数据,优先级,前置条件等
界面
图形界面
界面测试
冒烟测试
高
中
低
测试目标:功能测试、性能测试、界面测试、易用性测试、兼容性测试、安全性测试
测试策略:某类别测试的过程、方法以及方法如何应用,测试的注意事项等
测试环境:硬件环境、软件环境、网络环境
前置条件:进行某些测试工作需要做好的准备条件测试范围:软件需要测试的某个部位
检查单。一般由测试人员进行
测试负责人。测试人员(测试需求分析人员)。测试人员(测试设计工程师)。测试负责人
需要测试。维护测试(含升级测试)、数据迁移测试、备份恢复测试、灾难恢复测试等
第2个版本的服务包或补丁包
1. 首先,查找需求说明、网站设计等相关文档分析测试需求。
2. 制定测试计划,确定测试范围和测试策略,一般包括以卞几个部分:功能性测试、界面测试、性能测试、数据库测试、安全性测试、兼容性测试。
3. 设计测试用例:
(1)功能性测试可以包括,但不限于以下几个方面:
1、链接测试。链接是否正确跳转,是否存在空页面和无效页面,是否有不正确的出错信息返回。
2、提交功能的测试。
3、多媒体元素是否可以正确加载和显示。
4、多语言支持是否能够正确显示选择的语言等。
(2)界面测试可以包括但不限于一下几个方面:
1、页面是否风格统一,美观
2、页面布局是否合理,重点内容和热点内容是否突出
3、控件是否正常使用
4、对于必须但未安装的控件,是否提供自动下载并安装的功能
5、文字检查
(3)性能测试一般从以下两个方面考虑:压力测试、负载测试
(4)数据库测试要具体决定是否需要开展。
数据库一般需要考虑连结性,对数据的存取操作,数据内容的验证等方面。
(5)安全性测试:
1、基本的登录功能的检查
2、是否存在溢出错误,导致系统崩溃或者权限泄露
3、相关开发语言的常见安全性问题检查,例如 SQL注入等
(6)兼容性测试,根据需求说明的内容,确定支持的平台组合:
1、浏览器的兼容性;
2、操作系统的兼容性;
3、令软件平台的兼容性;
4、数据库的兼容性
4. 开展测试,并记录缺陷。
合理的安排调整测试进度,提前获取测试所需的资源,建立管理体系(例如,需求变更、风险、配置、测试文档、缺陷报告、人力资源等内容)。
5. 定期评审,对测试进行评估和总结,调整测试的内容。
1. 300个用户在一个客户端上
(1)会占用客户机更多的资源,而影响测试的结果。线程之间可能发生干扰,而产生
一些异常。
(2)需要更大的带宽。
(3)IP地址的问题,可能需要使用IP欺骗来绕过服务器对于单一IP地址最大连接
数的限制。
(4)不必考虑分布式管理的问题。
2. 用户分布在不同的客户端上
(1)需要考虑使用控制器来整休调配不同客户机上的用户。
(2)需要给予相应的权限配置和防火墙设置。
1. 软件安全性测试包括程序、数据库安全性测试。
2. 根据系统安全指标不同测试策略也不同。
3. 用户认证安全的测试要考虑的问题。
明确区分系统中不同用户权限、系统中会不会出现用户冲突、系统会不会因用户
的权限的改变造成混乱、用户登陆密码是否是可见、可复制、是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统)、用户退出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统
4. 系统网络安全的测试要考虑的问题
测试采取的防护措施是否正确装配好,有关系统的补丁是否打上、模拟非授权攻
5. 数据库安全考虑的问题
系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求)、系统数据的完整性、系统数据可管理性、系统数据的独立性、系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)
回文序列是指正序和反序都相同的字符串,如“A",“BAB”,“BFFB”。实现一个函数,判断输入的字符串是否为回文,并写出测试用例。如有可能请使用你最熟悉的编程语言实现这个函数。本道题视频解析点我
考点:
1、对性能测试理论的掌握程度
2、是否拥有实际性能测试的经验
参考答案:
需求分析-环境搭建-脚本编写-准备数据-执行测试-回归调优-测试报告
当脚本的上下文有联系,就用关联
TPS(TPS越高,性能越好)、平均响应时间、并发数、错误率
性能瓶颈分析参考准则:排除法,从上至下、从局部到整体!针对不同的瓶颈采用不同的分析方法,一般分为:
内存分析方法、处理器分析法、磁盘/O 分析方法、进程分析方法、网络分析方法等等。
a)调用业务接口构造数据,一般适用于数据逻辑比较复杂的惰况下。
b)直接写jdbc代码造数据,一般适用于数据量较大且数据逻辑较简单的情况。
c)存储过程造数据,一般适用于数据量巨大且数据逻辑较简单的惰况。
d)导入sql,一般适用于数据安全级别较低且数据量巨大的情况。
1、首先线下必须要有专门的性能测试环境
2、线下环境单台机器配置和线上不能相差很大,可以通过单台的机器性能推算出多台机器性能
3、如果线下机器配置很差,只能测试出程序有无性能问题,这样线下测试出来的数据对线上没有太大参考意义
4、如果想获取比较准确的线上性能情况,建议最好做线上的性能测试