软件测试指南1.0
测试知识点学习+归纳+总结
学习永远都不会晚!送给阅读此文的所有读者,欢迎多多交流指导。2021-04-01
接受-改变-离开!
一、软件测试的兴起和发展
-
软件测试的前景发展?
软件行业的兴起,软件测试。国外千年虫事件,谷歌公司作为IT行业中的技术标杆。目前国内软件测试现状:互联网行业的星期,近10年发展趋势,软件测试从业人员数量逐年递增,初中级已经趋于饱和,单纯的点点点测试已经无法满足市场企业的需求,企业对测试的要求在逐步提高,单纯的手工测试已经无法慢,基本的软件测试理论,计算机基础和编程语言,已经是最低的要求,未来市场企业的走向也是测试开发的,及早的满足市场的需求,跟着市场的方向,才能获取对应的薪资。基本的接口,以及代码最基本的要求。分层自动化体系成熟,测试左移、测试右移、静态代码分析、单元测试、接口测试、UI测试,testops、devops等。软件测试相对其他行业来说,还是不错的职业选择。
-
软件测试的职业发展之路?
技术方向:软件测试工程师-初-中-高级
自动化测试-测试开发-性能测试-安全测试
资深业务方向-比如金融业务测试
管理方向:测试组长-测试主管-测试经理-测试总监
转岗方向:转产品经理、项目经理、开发岗、
其他:外卖员,快递员、开滴滴。任何行业皆有可能。
如何选择自己的职业方向:
正确的方向,努力奋斗1w小时,职业发展首先的确认自己的方向,多个方向技术-方向测试开发,代码能力偏弱,学习效率低,如何快速的学习。收拾,有一定的了解,前端知识,接口知识,数据库、一门语言、脚本能力、自动化知识,环境部署等,转岗:产品经理-项目经理-逻辑思维等。
目标:自动测试-测试开发()
-
软件测试选择自学还是培训?
了解软件测试是干啥的?保证发现bug,保证软件质量.对于软件质量来说,任何影响用户体验的功能或者视觉都可以算是软件缺陷。测试入行简单,但是把测试做好确实不简单的事。做完软件测试的工作,枯燥,乏味,重复性高等
分两类人群:
-
对于自律性强,自学能力强,可以选择自学
-
对于自律性差,自学能力较差,已经参加工作或工作多年的,没有时间。
相对花钱买时间,短期周期较短可以系统框架的学习,解决工作需求。
任何职业,通过三个月培训,转岗测试,都以为测试入行很简单,工资高,对从业者的要求逐步提高,单纯的点点点点会逐渐被淘汰,测试最基本的要求,必备的代码能力。普通从业者,找到一份工作也越来越难了。云平台突起,各种测试工具,测试框架突起,培训机构泛滥,很多人都想通过培训赚一波,企业招聘要求逐步提高。
简历要不要包装?
人靠衣裳,马靠鞍,简历肯定是需要保证,但是不能过度包装,比如工作时间衔接点,有的些公司入职会要求背景跳槽,或提供离职证明,工资流水等证明。
选择自研公司还是外包?
-
自研公司和外包公司的对比,自研公司不管薪资待遇福利,身份环境,工作权限等都是平等,技术方面成长较快,外包则会存在一定的差距,薪资可以,福利公积金,技术方面成长缓慢,涉及工作都是非核心技术琐碎重复的工作,对于刚入行的技术,外包可以快速的获取项目经验,快速成长。对于学历不是完美的部分群体,外包是非常不错的选择top公司的外包,和优秀的人在一起工作处事,多多少少都会学习到对自己有益的东西。不管在外包还是自研公司,记住第一件事是工作,多学多看多问和不同的人相处获取经验技能才是最关键的。
-
外包公司参考目前是市场,中软国际,软通动力、法本、博彦科技、文思海辉、拓保科技等等
-
软件测试的进阶之路呢?
软件测试是对开发工作的检查,可以起到一定的推动和监督效果,所有会一门语言是非常有最基础的要求,只有清楚知道被测软件所有的语言,框架,系统等,比如python/java,c++ c,go 等 。学习永远是自己的事,任何时候学习都不晚,系统学习+框架思维+思维导图。
5、软件测试员必须具体的技能:软技能+硬技术+通用技能
硬技术:
软件工程(常见的软件开发模型,瀑布模型,敏捷,迭代、螺旋、v、w’),
软件研发全流程(生命周期,流程,环节,角色)
计算机基础 如操作系统(windows,linux、unix)
测试理论,入门书籍软件测试,谷歌软件测试的艺术
测试类型代码级别,单元,静态代码 人工,
自动(sonar,pmd,cheekstyle,findbug),接口 ,UI )
测试过程(环境,数据,报告,配置)
bug生命周期,怎么写bug,bug生命周期如何不漏测,有哪些bug管理工具)
网络基础、http、
linux、常用linux命令符
脚本python、java shell、
数据库 增删改查,导入导出、安装、数据库类型&差异、常用客户端工具
版本管理工具:git 分支feature/develop、release/master 、svn
持续集成/部署、发布。jenkins
web服务,apache,nginx,iis
常用测试工具:项目管理zentao/tapd 、用例testlink/tapd/zentao/xmind/excel
bug jira mantis bugzilla
自动化工具:jmeter appium soapui postman curl selenium rf python/unittest、pytest
性能测试工具:jmeter wrk lr
抓包工具:fiddler charles wireshak
辅助工具:navicat xshell wiki F12
虚拟机&容器:VM docker
架构知识:集群(数据库,应用服务,缓存)
CDN 反向代理、 分布式、soa 微服务、
其他(高性能,高可用、可伸缩。可扩展)
软技能:测试思维、沟通能力、写邮件能力、文档能力、自我学习能力、产品思维、用户角度、开发角度、团队管理、项目管理、简历、面试、业务知识(金融、电商、供应链、大数据、人工智能、tob、ERP/OA等等)
通用技能:自律,自我驱动、总结归纳、时间管理、职场常识、执行力、提问、资料检索能力(90%的问题都可以通过检索得到答案,baidu、geogle、站内全局、微信检索、视频检索学习)
6、新人入职如何快速熟悉进入工作状态?
进入一个新的环境,人难免会有些不适应。快速的融入一个公司,才能心情愉悦的工作,不仅是情感的需求,如何快速的熟悉公司业务和项目架构,人员组织机构,本职工作的职责范围等。今天就大致讲解下,
关于公司业务熟悉,
第一可以对比同行的资料,可以参考价值不大
第二有老人带新人,找个看公司和个人的交际处理
第三公司由内部新人指引文档,可以快速熟悉公司的基本业务和使用工具
测试熟悉业务做好的-看公共的测试用例库,当然用的公司是没有测试用例库的,个人认为是了解业务最好的方式。
第四多看、多问、多想、多学。
软件测试人员每天的工作内容?
了解需求,参加需求评审,需求分析、测试分析,测试计划、测试用例编写,测试用例评审、测试环境搭建、冒烟测试(主要功能无阻塞能跑通)、系统测试、回归测试,测试用例执行、测试数据构建、发现缺陷,提交缺陷单,验证回归缺陷、关闭缺陷,缺陷单提交,测试报告撰写,测试文档沉淀,线上风险预估等。维护自动化测试用例,开发测试工具。接口测试,抓包工具,mock数据
和产品沟通需求,明确需求,拆分需求 对测试人力评估安排
和开发沟通,缺陷的产生,验证、关闭。
为什么要参加需求评审?
了解需求背景,明确需求概要,确认需求哪些需求是合理,哪些需求功能是不合理的,拆分需求及需求优先级等划分,可以更好的了解需求,
从宏观的角度取看需求文档,阅读需求文档,对项目或者功能有个宏观的认识,方向性指导,明确需求的合理性和优先级,进行有效的评审,站在用户的角去看,是否解决了用户的痛点,开发的角度去评估,技术代码实现的效率,效果怎么样。
从细节的角度去看需求文档,根据负责的项目模块化,或者抽象化,确定功能的影响范围再细化,得出明确得预期结果。结构化项目流程,以内容为例,功能类需求,质量类需求都是解决用户反馈得需求,增删改查等。
需求得测试成本和质量风险,值得讨论和深思,测试和开发得成本比较高,难以匹配当前得产品进度,当前得已有测试手段不能有效保证功能得质量。对于这种问题,尝试变更测试方案和测试策略,并在每种方案后标准测试成本和风险,一起讨论方案选择大家可以接受的方案进行调整。
测试计划为什么要写?怎么写?
凡事预则立,不预则废。一个项目需求那么多,涉及的范围太广,而计划安排就非常有必要,按照计划一步一步实现,才能有效评估时间,人力、风险等。测试的工作繁重而浓密,测试计划就能有限对已有的人力资源、任务划分、时间把控、测试风险,进行一个合理而有效的安排,一旦发现计划和落地执行有偏差能及时的纠正方向。
测试环境,测试数据、测试对象、测试人员、测试模块、测试风险、测试工具、测试策略、测试方案等。
如何编写测试用例?怎么把testcase写的尽量完美?覆盖全面而尽量避免漏测发现?
测试用例考研的一个测试人员的基本功力,同一个项目需求不同的人去写,写的测试用例就完全不同,不同的人去执行结果又不相同。测试用例常用的方法,等价类划分,边界值,错误推荐法,场景法,正交设计实验法。前端的页面的测试用例,接口测试用例,自动化测试用例,根据需求文档,视觉稿件,结构化按逻辑书写测试用例
测试用例序号,测试用例名称、测试用例步骤、测试预期结果、优先结果 ,验证结果、备注说明。测试用例多写多修改,多了解需求,测试用例评审。
如何有效执行测试用例,避免漏测情况发生?
在测试用例覆盖,以及测试用例颗粒度问题,根据项目时间安排来编写设计等。进行用例评审,在执行测试用例是,严格执行并及时补充测试用例情况
如何提有效的bug,定位bug 提供定位bug 方式等?
测试最重要的工作便是找bug,测试有事找bug,没事找开发。bug是最能证明测试能力的环境,如何发现bug ,bug的生命周期,提交bug单 标题,模块、数据、截图、视频等
测试环境,配置系统,必现的bug 偶现的bug ,bug标题表述是否清晰一目了然,bug所属的模块,bug提交给对应的开发,bug的回归验证等。统计bug清单,分析bug产生原因,
功能测试和非功能测试怎么去测?
功能测试 页面测试,UI测试 app 测试 H5测试,公众号测试,小程序测试
黑盒测试,白盒测试,单元测试,兼容性测试 性能测试,冒烟测试 系统测试、回归测试,自动化测试,灰度测试,白名单测试,a测试 b测试 ,探索性测试,随机测试,monkey测试,
功能测试是基础,任何测试首先要确认功能是好的,所以软件测试工程师必须精通功能测试后,才有非功能性测试。
接口测试怎么做?
接口测试+数据库数据交互比对
接口测试的工具jmeter/post ,开发提供完整的接口文档,根据接口文档和需求文档,设计接口测试用例,首先保证接口的正常性通过,接口能跑通,接口的必输参数,非必输参数,接口返回的字段、
接口的功能测试性 ,接口的性能测试。对于接口之间的关联,接口的断言、接口测试后,比对数据库,根据字段查询数据库是否落库,
接口的URL ,接口测试的同步接口,异步接口,接口的传参数,接口的数据类型json
xml ,text
利用工具jmeter做接口测试,接口报错处理根据数据字段查询报错原因,查询日志报错
日志该怎么查?
工具xshell 利用优先字段 查询数据日志的目前 通过linux命令查询日志,截图开发分析报错原因等。
数据库使用的多吗?
主要是数据库基本的怎删改查的使用,各种数据工具 navicat 关系型数据和非关系型数据
自动化测试的日常都干些什么呢?
接口自动化,UI自动化selenium appium自动化
了解为什么要做自动化测试?维护自动化测试用例’
测试开发的工作内容?
开发测试工具,提高测试效率,
测试工作经常加班要无法学习新的知识怎么办?
学习的驱动力足够,任何事情都不是接口。当一个做成一件事的时候,他就会排出万难达成目标。
二、软件测试之入门基础篇
初级测试工程师
-
计算机基础知识、计算机网络基础知识、网络原理
计算机网络基础知识:什么是软件?什么是硬件?计算机发展简介
计算机组成原理:1G=1024Mb
软件就是看不见
硬件就是看的见实物
操作系统:windows、linuxs、
计算机组成原理,学习的关键是搞懂原理,掌握本质,解决问题。通过指令计算,CPU 存储系统和I/O,掌握整个计算机运作过程中的核心知识点,
详解浏览器中输入URL的过程 协议DNS解析,一个URL是如何渲染的
URL如何渲染至前端
URL组成结构
http/https协议websever
http:HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。
http工作原理:HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
HTTP协议是无状态协议
端口:80
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法
HTTP 响应头信息
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
HTTP状态码的英文为HTTP Status Code。
下面是常见的HTTP状态码:
-
200 - 请求成功
-
301 - 资源(网页等)被永久转移到其它URL
-
404 - 请求的资源(网页等)不存在
-
500 - 内部服务器错误
Content-Type 标头告诉客户端实际返回的内容的内容类型。
text/html : HTML格式, text/xml : XML格式,application/json: JSON数据格式multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式
htpp1.1/1.2 http2
https协议
HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。
http/https协议之间的区别
http请求 get post delete put 等
get方式和post的区别
Http的请求和响应
请求头 空行、请求体
响应头 响应体 空行
协议的状态:
100
200返回成功
301重定向 302
4XX客户端
5XX服务端
TCP/IP 教程网络原理(iso七层原理)
网际互联及OSI七层模型:
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
物理层
作用:定义一些电器,机械,过程和规范,如集线器;
PDU(协议数据单元):bit/比特
设备:集线器HUB;
注意:没有寻址的概念;
==========================================
数据链路层
作用:定义如何格式化数据,支持错误检测;
典型协议:以太网,帧中继(古董级VPN)
PDU:frame(帧)设备:以太网交换机;
备注:交换机通过MAC地址转发数据,逻辑链路控制;
===========================================
网络层
作用:定义一个逻辑的寻址,选择最佳路径传输,路由数据包;
典型协议:IP,IPX,ICMP,ARP(IP->MAC),IARP;
PDU:packet/数据包;
设备:路由器
备注:实现寻址
============================================
传输层:
作用:提供可靠和尽力而为的传输;
典型协议:TCP,UDP,SPX,port(65535个端口),EIGRP,OSPF,
PDU:fragment 段;
无典型设备;
备注:负责网络传输和会话建立;
=============================================
会话层:
作用:控制会话,建立管理终止应用程序会话;
典型协议:NFS, SQL, ASP, PHP, JSP, RSVP(资源源预留协议), windows,
备注:负责会话建立;
==============================================
表示层:
作用:格式化数据;
典型协议:ASCII, JPEG. PNG, MP3. WAV, AVI,
备注:可以提供加密服务;
===============================================
应用层:
作用:控制应用程序;
典型协议:telnet, ssh, http, ftp, smtp, rip, BGP, (未完待续)
备注:为应用程序提供网络服务;
================================================
Q:什么时候有PDU?
A:当需要跟别人通信时候才有。
TCP/IP协议 三次握手和四次挥手,
客户端输入URL回车,DNS解析域名得到服务器的IP地址,服务器在80端口监听客户端请求,端口通过TCP/IP协议(可以通过Socket实现)建立连接。HTTP属于TCP/IP模型中的运用层协议,所以通信的过程其实是对应数据的入栈和出栈。
报文从运用层传送到运输层,运输层通过TCP三次握手和服务器建立连接,四次挥手释放连接。
为什么需要三次握手呢?为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。
比如:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段,但是server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求,于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了,由于client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据,但server却以为新的运输连接已经建立,并一直等待client发来数据。所以没有采用“三次握手”,这种情况下server的很多资源就白白浪费掉了。
————————————————
版权声明:本文为CSDN博主「会飞的狗~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xiaoming100001/article/details/81109617
为什么需要四次挥手呢?TCP是全双工模式,当client发出FIN报文段时,只是表示client已经没有数据要发送了,client告诉server,它的数据已经全部发送完毕了;但是,这个时候client还是可以接受来server的数据;当server返回ACK报文段时,表示它已经知道client没有数据发送了,但是server还是可以发送数据到client的;当server也发送了FIN报文段时,这个时候就表示server也没有数据要发送了,就会告诉client,我也没有数据要发送了,如果收到client确认报文段,之后彼此就会愉快的中断这次TCP连接。
————————————————
版权声明:本文为CSDN博主「会飞的狗~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xiaoming100001/article/details/81109617
cookie和session 、token三者区别
cookie/session/Token
输入一个URL之后到页面加载的整个过程分析?
总的来说分为以下几个过程:
1、DNS解析
2、建立TCP连接
3、发送HTTP请求
4、接收处理请求,服务器进行处理并返回HTTP报文
5、浏览器解析并渲染页面
6、关闭连接
1. 从浏览器接收url到开启网络请求线程(这一部分可以展开浏览器的机制以及进程与线程之间的关系)
2. 开启网络线程到发出一个完整的http请求(这一部分涉及到dns查询,tcp/ip请求,五层因特网协议栈等知识)
3. 从服务器接收到请求到对应后台接收到请求(这一部分可能涉及到负载均衡,安全拦截以及后台内部的处理等等)
4. 后台和前台的http交互(这一部分包括http头部、响应码、报文结构、cookie等知识,可以提下静态资源的cookie优化,以及编码解码,如gzip压缩等)
5. 单独拎出来的缓存问题,http的缓存(这部分包括http缓存头部,etag,catch-control等)
6. 浏览器接收到http数据包后的解析流程(解析html-词法分析然后解析成dom树、解析css生成css规则树、合并成render树,然后layout、painting渲染、复合图层的合成、GPU绘制、外链资源的处理、loaded和domcontentloaded等)
7. CSS的可视化格式模型(元素的渲染规则,如包含块,控制框,BFC,IFC等概念)
8. JS引擎解析过程(JS的解释阶段,预处理阶段,执行阶段生成执行上下文,VO,作用域链、回收机制等等)
9. 其它(可以拓展不同的知识模块,如跨域,web安全,hybrid模式等等内容)
链接:https://www.cnblogs.com/xiaohuochai/p/9193083.html
-
认识linux系统-搭建测试环境
-
有哪些操作系统、linux系统、linux常用的操作命令
linux unix windows moc系统
2、常用的linux命令操作符:
cd 打开目录
ll查询当前目录
mkdir
move
cp
top
vmstat
free
history
tail
cat
less
more
grep
pwd
chomd
rm
2、搭建测试环境:虚拟机+安装jdk +tomcat+mysql
-
负载均衡nginx 正向代理和方向代理
-
软件测试基础理论知识
-
测试基础
Chapter 1 软件测试概念以及目的(掌握)
软件测试经典定义:在规定的条件下对程序进行操作,以发现错误,对软件质量进行评估。
软件测试目的:发现bug,提高软件质量,降低成本。
软件测试本职是对开发代码质量的监督,把控、避免不必要的风险产品同时规避一些风险和问题,尽可能造的发现问题。
Chapter 2 软件测试质量(了解)
软件测试质量,如何保证软件测试的质量?
软件测试:“评估软件与明确的隐含的需求相一致的程度”
明确需求:软件符合明确叙述的功能和性能需求,文档中明确描述的开发标准
隐含需求:所有专业开发的软件都应该应具有的隐含特征的程度
Chapter 3 软件测试原则(掌握)
-
所有的软件测试都应该追溯到用户的需求(从需求根本出发考虑)
-
应当把“软尽早地和不断地进行软件测试”作为软件测试者的座右铭
-
完全测试是不可能的,测试需要终止(测试方法)
-
测试无法显示软件潜在的缺陷
-
充分注意测试中的群集现象
-
测试共工程师应避免执行自己写的测试用例
7、尽量避免测试的随意性
Chapter 4 软件测试对象(掌握)
根据软件测试的定义:软件包含程序,数据,文档,所有软件测试并不仅仅是程序测试,软件测试贯穿于整个软件生命周期中。
由于在整个软件生命周期中,各阶段有不同的测试对象,形成了不同开发阶段的不同类型的测试。需求分析、概要设计、详细设计以及程序编码等各阶段产生的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应作为“软件测试”的对象。
单元测试 动态测试、静态测试、接口测试、功能测试、黑盒测试等
Chapter 5 软件测试分类(掌握)
按阶段划分:单元测试、集成测试、系统测试、验收测试、
按是否运行程序划分:静态测试,动态测试
按是否查看代码划分:黑盒测试,白盒测试,灰盒测试
其他划分:回归测试、冒烟测试、随机测试(猴子测试)
单元测试:模块测试unit testing,是针对代码中函数或者方法的测试。(开发自测能看懂代码)
集成测试:模块与模块之间的耦合,接口测试是对程序接口的一种测试,测试人员再测;
一次性集成测试,增量式集成测试(自顶向下,
系统测试:什么是系统测试(System Testing)
将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试.
系统测试是针对整个产品系统进行的测试,目的是检查系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。
对象不仅仅包括需测试的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。
系统测试范围
功能、性能、界面(UI)、兼容性、配置、安装、卸载、数据库等
验收测试:是指客户确认系统是否符合设计规格或契约之需求内容的测试。
验收形式:
Alpha(α):在开发公司内,由开发和测试联合进行,环境是模拟环境。
Beta(β):在开发公司外,由经过专门挑选的真正用户群进行,环境是真实环境
在测试工程中,用户要记录遇到的所有问题,并且定期向开发人员通报情况。
实际过程中:
初验 ( α 和β都属于初验)
终验
静态测试:不运行被测试的程序,而只是检查代码、界面或者文档
动态测试:运行被测试的程序,输入相应的测试数据,检查世界的输出结果是否和预期结果相一致的过程。
黑盒测试: 把 软件看成一个黑盒子,不管内部逻辑和内部特性,只依据规格说明书检查程序的功能是否符合功能说明。
白盒测试: 把 软件看成一个黑盒子,不管内部逻辑和内部特性,只依据规格说明书检查程序的功能是否符合功能说明
灰盒测试: 介于白盒和黑盒测试之间,基于程序运行时刻的外部表现同时又结合程序内部逻辑结构来设计用例,执行程序并采集程序路径执行信息和外部用户接口结果的测试技术。
回归测试
对软件的新版本测试时,重复执行上一个版本测试时使用的测试用例(有效用例)。防止出现“以前没有问题的地方现在出问题了” 。
冒烟测试(BVT测试(Build Verification Test ))
冒烟测试的对象是每一个新编译需要正式测试的版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。
随机测试(又名猴子测试)
测试数据是随机产生的,在测试用例之外。只能作为一个测试的补充。
敏捷测试(敏捷开发引发)
首先敏捷测试(Agile testing)是测试的一种,原有测试定义中通过执行被测系统发现问题,通过测试这种活动能够提供对被测系统提供度量等概念还是适用的。
TDD(测试驱动开发)
测试驱动开发的基本思想就是在开发功能代码之前,先编写测试代码。也就是说在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。然后循环进行添加其他功能,直到完全部功能的开发。
Chapter 6 软件测试风险(掌握)
测试时间、人员离职、软件测试中的软件风险分析是根据预测软件将出现的风险,制定软件测试计划并排列优先等级,风险分析是对软件中潜在的问题进行识别、估计和评价的过程。
风险也包括进度风险、质量风险、人员风险、变更风险、成本风险等
Chapter 7 软件测试工程师(了解)
软件测试工程师的基本要求:计算机基础知识、网络基础知识、测试基础理论知识、
软件测试工程师-初中高级-自动测试-测试开发-性能测试-安全测试
具备的技能:
计算机相关知识,能够熟练使用常用的管理工具
开发语言:C/C++,Java,Shell。
数据库:Oracle,MySQL等数据库知识
操作系统:UNIX,Linux等
测试工具,能够熟练使用至少一种自动化/性能测试
网络基本知识,能够独立完成测试环境的搭建。
软件基础知识:软件工程,软件生命周期,测试理论和测试方式有较深的理解。
软件测试技术,方法,流程,测试文档编写,能独立设计和执行测试用例,提交完整的bug, 编写测试报告。
质量管理知识,如CMMI以及ISO 9001等。
测试工程师的职责:
依据需求文档及设计文档,编写测试用例;
完成产品的系统测试;
依据测试用例执行手工/自动化/性能/兼容性等测试,反馈跟踪产品BUG;
测试工具/系统的研究和应用;
更新测试用例内容
验证修正的缺陷
编写测试报告
完成测试相关的其它任务(1写联机帮助2培训客户3编写测试总结)
2.测试流程
Chapter1软件产品
软件:数据+文档+程序
软件的基本概念:软件的定义广义:软件是计算机程序,方法,规则,相关的文档,以及在计算机上运行时所必须的数据的总和。
狭义:软件=程序+数据+文档
Chapter2软件工程
软件根据工程设计“软件工程师应用计算机科学,数学及管理科学等原理开发软件的工程,它借鉴传统工程的原则,方法,以提高质量,降低成本为目的的。
工程化的方法就是要系统化、规范化、可度量的方法。说直白一点就是要有理论支持、有规则约束、有数据度量,避免盲目性、随意性、不可控性。
Chapter3软件生命周期
需求-设计-开发-测试-
生命周期(Life Cycle) 是生理学概念,指生物的出生、成长、衰老、生病和死亡的过程。
生命周期概念应用广泛,软件行业也借鉴了过来,产生了软件生命周期的概念。
Chapter4软件开发流程
软件产品从最初构思到公开发行的过程,称为软件开发过程。
开发过程有各种不同的方法,没有所谓最好的模式。
软件开发过程模型的目的:
保证最终产品满足用户需求
提高产品质量,降低产品开发成本
保证项目可管理,进度可控制
作为测试人员的职责,是在所处项目的开发模式中,尽量运用自身的知识和技能,创造出尽量完善的软件。
Chapter5软件研发流程
研发流程
chapter6软件测试流程
需求评审-测试计划-用例设计-用例评审-搭建测试环境-测试执行-缺陷跟踪-
chapter7软件项目成员
项目经理、产品经理、后台开发(前中后)、前端开发、测试、视觉设计、运维
3.测试策略
-
功能测试
功能测试:确认各个功能是否实现完善,是否和需求相符。比如水杯的功能是喝水。
非功能测试:比如性能测试、安全性测试、兼容性测试、可靠性测试、易用性测试、安装卸载测试等。
-
性能测试
性能测试:确认系统的性能级别和承受压力的能力。
压力测试:大用户测试针对B/S而言,系统能承受的最大压力瓶颈。
负载测试:
容量测试:大量数据测试
并发测试:多个用户在同一时间对同一条数据的删除或者修改等处理。最大并发(tps)
峰值测试:最大负载(成功率100%)
稳定性测试:系统在长时间运行的情况。
恢复测试:突然断电(系统触发正常启动)数据包要在断电的地方继续进行处理。
配置测试:为了获取最佳配置,最低配置等,而进行的测试。
-
安全性测试
应用程序级别的安全性:包括对数据或业务功能的访问;在于其的安全情况下,主要只能访问特定的功能或用例,或者只能访问有限的数据。
系统级别的安全性:包括对系统的登录或远程访问;只有具备系统访问权限的用户才能访问应用程序,而且只能通过相应的网关来访问。
4.兼容性测试
兼容性测试:确认软件在不同系统环境下可运营,或网页不同流浪器,不同分辨率的环境下是否运行正常。浏览器:谷歌、火狐、IE、360;不同浏览器的不同版本。
主要针对不同浏览器和不同手机机型,系统版本 分别率等;浏览器统计:谷歌 火狐,IE\EDGE 360浏览器,QQ,猎豹、搜狗。
Google Chrome(谷歌浏览器)兼容性,使用率
Microsft Edge 浏览器、Internet Explorer (IE浏览器)、Firefox(火狐浏览器)、Apple Safari(苹果Safari浏览器)、Opera浏览器、Mozilla项目、Netscape浏览器
不同操作系统平台:linux windows mac
Win7 Win10Win8AndroidiOS
Mac OSWindows XPLinux800x600
不同机型系统:ios苹果iOS * 安卓andriond Android(安卓) 其他
不同机型:苹果、小米、华为、oppo vivo、一加
不同分辨率:720 1080 2k 4K
1920x1080 1366x7681280x10241280x8001024x768
不同机型系统:苹果ios 13.0 14.0
-
易用性测试
易用性测试:用户使用软件是否感觉方便。易用性usability 是交互的实用性,功能性和有效性的集中体验。就是用户使用是否方便,顺手符合用户习惯
6.可靠性测试
可靠性测试:软件可靠性是软件系统在规定的时间以及规定的环境条件下,完成规定功能的能力。一般情况下,只能通过对软件系统进行测试来衡量其可靠性。
7.安装卸载测试
主要针对C/S架构的系统,客户端的安装和卸载。确认软件的安装和卸载过程。
说明:测试策略:5W1H法则,What Why who when where How
对于测试策略和测试计划区分;
4.测试设计
1、黑盒测试的概念
主要不关注内部结构,只关注输入和输出的数据
2、黑盒测试的实施过程
功能测试的测试步骤等,
3、测试用例设计规范
测试用例的格式:测试用例是反馈测试人员功力的最基本的体现,优秀的测试用例是能传承下去,简洁明了让人一眼都能看明白的。
4、黑盒用例设计技术
黑盒测试的用例设计方法:等价类划分,边界值,错误推测法,场景法
等价类划分:
边界值:
错误推测法:
场景法:
正交设计实验法:
5、测试方法选择的综合策略
根据项目需求,选择不同的测试方法设计测试用例
6、测试设计思维
测试设计,怎么设计,方法等。测试设计的方法,结构化逻辑性体现,功能模块,用例标题,用例步骤、用例期望结果,实际执行结果。1、对于被测系统的熟悉程度,业务的熟悉,根据业务和需求去拆分需求点,模块化以及对对于用例测试的颗粒度,多写多总结,多看别人的测试用例提炼精华。测试用例的覆盖程度,异常场景的考虑、测试数据是否全面覆盖,对于需求的把握程度,测试设计可以参考行业竞品的产品,
5.测试执行
1、测试执行
测试用例的执行,涉及用例的执行程度
2、测试缺陷
测试缺陷的提单过程,如何定级bug缺陷级别和状态,
有一些小散测试团队,没有BUG单等级划分表,如果没有错误等级划分,项目经理或测试经理并不好确认BUG单的优先级,故此合理的对BUG单划分等级是测试提交BUG的前提。
以下是我整理的BUG单等级划分表,仅供参考。
错误等级:Urgent
导致整个软件不能使用的错误。
-
操作系统崩溃:启动或操作本软件致操作系统崩溃,无法进入操作系统。
-
导致操作系统重启或死机:因操作某项功能而导致操作系统自动重启或操作系统死机。
-
导致整个软件不能使用:因操作某个功能,导致整个软件不能使用或重启。
错误等级 High
导致整个模块不能使用或导致业务流不正确的错误,或较大的需求没有满足等。
-
导致整个模块不能使用:因操作某个功能,导致某个模块不能使用。
-
业务流错误:
a. 业务流程没达到设计要求;
b. 因业务流程中的某个功能没有实现而导致整个业务流程不能完整的实现。
-
功能没达到客户需求:大功能或主要功能没有达到客户的需求。
-
数据存储问题:
a. 数据没有正常被存储;
b. 没有同步更新数据造成数据不一致。
-
操作不能正确执行:执行某操作时出错或没有响应或不是预期结果。
-
信息丢失:由于编码错误造成用户数据丢失(非用户操作失误)。
错误等级 Medium
导致某个步骤不能正常执行或期望结果不正确,但不引起严重后果的错误,或数据刷新、操作不便等不影响用户正常功能使用的错误。
-
功能没有达到客户需求:小且影响较轻的功能没有达到客户需求。
-
数据加载显示问题:从数据库取A字段值时误取为B字段值,造成给用户提供错误的数据。
-
不稳定:
a. 执行程序或IE经常性重启;
b. 有时出现一个错误提示后软件被关掉;
c. 短时间内超时退出;
d. 操作某个功能有时无反应;
e. 不可重现的死机或其它无法预期的错误;
f. Session丢失错误。
备注:以上情况不一定可以重现,只要出现机率较大且影响较为严重即可归为此类。
-
数据计算错误:数据计算错误或未达到设计的精确需求。
-
链接错误:链接的页面或内容指向错误。
-
安全性问题:
a. 同一帐号可以在不同机器同时登录(没有进行在线用户的检查)—根据客户需求而定;
b. 在IE中输入具体地址,可以跳过用户登录界面而直接进入系统;
c. 执行有风险的操作时,没有“确认”、“取消”等提示;
d. 用户无密码验证、修改密码时无旧密码验证、修改密码时无新密码确认。
-
版本提交问题:
a. 提交的版本文档缺少或错误;
b. 提交的文档内容缺少或错误。
-
数据长度定义不一致:
a. 数据舍入不一致,引起相应的错误;
b. 表与表或表与存储过程的字段长度定义不一致,造成错误或数据被截断。
-
无信息合法性检查:
a. 没有对输入的数据类型进行检验(如日期型文本框中输入字符型数据时没有弹出提示信息);
b. 输入框不允许为空,而用户输入为空时没有相应的提示信息;
c. 输入非法字符、输入的字符长度超出允许的长度范围时出错;
d. 输入超大、超小值溢出错误(数值型、日期型字段)。
-
兼容性问题:
a. 导致其它常用软件不能使用;
b. 导致在不同浏览器的不同版本下不能使用(如果软件需要特定IE版本支持,需在帮助、手册及其他相关文档中特别说明,否则归为此类错误);
c. 导致在不同容器下不能正常使用;
d. 导致在不同操作系统下不能正常使用。
-
软件使用不便:
a. 输入或选择无法正常得到焦点;
b. 进行某项操作后,显示出的光标所在焦点与实际所在的焦点不一致;
c. 没有使用数据调用而导致用户重复输入量过多;
d. 进行某操作后返回,无法回到原来所在的位置;
e. 新增记录没有排在首行;
f. 没有记忆功能,如用户非法操作后不能保留已输入的数据;
g. 不符合用户的操作习惯(如Windows操作习惯,没使用常用的默认键、快捷键、TAB顺序与使用顺序不一致等)。
-
数据不能立即更新:
a. 界面中的统计数据没有及时更新(如页数);
b. 用户添加/修改/删除的数据没及时更新;
c. 按钮或选项状态(有效/无效)没有及时变更;
d. 界面数据刷新不正确。
-
响应时间慢:
a. 随着数据的增多操作响应时间变慢;
b. 随着在线人员的增多操作响应时间变慢;
c. 随着操作时间的变长操作响应时间变慢。
备注:根据客户需求而定,如没有要求的话,一般以8~10s定。
错误等级 Low
界面显示或提示信息错误,建议类问题。
-
界面缺少说明或帮助、界面不规范:
a. 界面上的数据约束没有进行说明,如必填项标识,导入格式说明等;
b. 界面风格、操作方式不统一(控件、文字、颜色等);
c. 标题不规范或各处信息描述不一致;
d. 有链接及无链接的文字没有明显区别;
e. 页面链接颜色、字体不一致。
-
界面显示错误:
a. 不同分辨率下界面显示不正常;
b. 排版格式不正常;
c. 如有打印功能,打印的版式不正确;
d. 如有导出功能,导出的文件名、格式不正确。
-
文字错误(包括界面或提示):
a. 错别字或文字拼写错误;
b. 语法错误;
c. 标点符号错误或全、半角混杂等。
-
信息提示不清:
a. 信息提示不易理解、有歧义或不统一;
b. 提供给用户过多无用或过少的信息;
c. 当鼠标移到图片或按钮上时,无浮动的提示语;
d. 提示信息先后无序(针对嵌套提示框)。
-
建议性问题:
a. 功能性建议;
b. 界面/操作性建议。
3、测试报告
测试报告内容格式,怎么写测试报告。测试报告的范围,测试报告的格式,测试对象,测试环境,测试内容、测试版本、遗留bug风险,测试是否达到上线的标注。
6、数据库基础知识
mysql是一个开源的关系型数据库管理系统,在日常工作中,多多少少都会涉及到对数据库语句的增删改查,如何快速熟悉数据库知识,DB每个公司的数据是最重要的资源,了解数据库表的结构,也是快速熟悉公司业务的方式。数据库的类型,目前市场使用的数据库有哪些,数据库的库表结构,字段类型,常用的数据库增删改查等。数据库的主键外键,索引,DDL,sql恶意注入等。
-
数据库基础知识
1、认识数据库:
常用的数据库:MySQL、SQL Server、Access、Oracle、Sybase、DB2 等等。redis缓存 如何使用 SQL 在数据库中执行查询、获取数据、插入新的记录、删除记录以及更新记录。我们已经学习了如何通过 SQL 创建数据库、表、索引,以及如何撤销它们。我们已经学习了 SQL 中最重要的 Aggregate 函数。
数据库安全方面:如何防止sql恶意注入,select 。
查看mysql服务进程,ps-ef |grep mysql
库表,数据库database(db)数据表table,字段列 colum 行row
操作语句分类:
DDL数据定义语言
DML数据操作语言
DQL数据查询语言
DCL数据控制语言
直接创建数据库db1:create database db1;
查看当前在哪个库里边 select database();
进入库的操作:use库名
linux如何连接数据库表命令等
2、常用的数据类型:
整数型 tinyint 1个字节 smallint 2个字节 int 四个字节、
浮点型 float 4个字节 double8个字节
定点型 decimal
字符串类型:
char 0-255字节,定长字符串
varchar 0-65535字节 变长字符串
tinyext 0-255 短文本字符串
text 0-5535 长文本数据
mediumtext 0-16777215 中等长度文本数据
longtext 0-4294967295 极大文本数据
char的优点:存取速度比varchar更高,但是比varchar更占用空间 固定占内存
varcha人的优缺点:比char省空间,但存取速度没有char快 可变占内存
时间型:date 3字节 time 3字节 year 1字节 datetime8个字节 timestamp 4个字节 datetime
2、sql查询语句执行顺序
创建库表,增删改查,多表查查 redis缓存,主键索引
增加一条数据:insert into
第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:
insert into table name valuse (values1,value2,value3)
第二种形式需要指定列名及被插入的值:
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
INSERT INTO "access_log" (`aid`, `site_id`, `count`, `date`) VALUES ('10', '6', '111', '2016-03-09');
删除一条数据:delete from
delete from table name where some_column=some _values;
DELETE * FROM table_name
drop trun to
修改一条数据:update
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
查询一条数据:
查询:SELECT column_name,column_name
FROM table_name;
SELECT * FROM table_name;
去重:
SELECT DISTINCT column_name,column_name
FROM table_name;
过滤:提取那些满足指定条件的记录。
SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;
Where 子句
搜索 empno 等于 7900 的数据:
Select * from emp where empno=7900;Where +条件(筛选行)
条件:列,比较运算符,值
比较运算符包涵:= > < >= ,<=, !=,<> 表示(不等于)
Select * from emp where ename='SMITH';例子中的 SMITH 用单引号引起来,表示是字符串,字符串要区分大小写。
逻辑运算
And:与 同时满足两个条件的值。
Select * from emp where sal > 2000 and sal < 3000;查询 EMP 表中 SAL 列中大于 2000 小于 3000 的值。
Or:或 满足其中一个条件的值
Select * from emp where sal > 2000 or comm > 500;查询 emp 表中 SAL 大于 2000 或 COMM 大于500的值。
Not:非 满足不包含该条件的值。
select * from emp where not sal > 1500;查询EMP表中 sal 小于等于 1500 的值。
逻辑运算的优先级:
() not and or特殊条件
1.空值判断: is null
Select * from emp where comm is null;查询 emp 表中 comm 列中的空值。
2.between and (在 之间的值)
Select * from emp where sal between 1500 and 3000;查询 emp 表中 SAL 列中大于 1500 的小于 3000 的值。
注意:大于等于 1500 且小于等于 3000, 1500 为下限,3000 为上限,下限在前,上限在后,查询的范围包涵有上下限的值。
3.In
Select * from emp where sal in (5000,3000,1500);查询 EMP 表 SAL 列中等于 5000,3000,1500 的值。
4.like
Like模糊查询
Select * from emp where ename like 'M%';查询 EMP 表中 Ename 列中有 M 的值,M 为要查询内容中的模糊信息。
-
% 表示多个字值,_ 下划线表示一个字符;
-
M% : 为能配符,正则表达式,表示的意思为模糊查询信息为 M 开头的。
-
%M% : 表示查询包含M的所有内容。
-
%M_ : 表示查询以M在倒数第二位的所有内容。
sql:and 和or 运算符
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
SELECT * FROM Websites WHERE country='CN' AND alexa > 50;
SELECT * FROM Websites WHERE country='USA' OR country='CN';
排序:
ORDER BY 关键字用于对结果集进行排序。 desc降序 默认升序asc
SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;
SELECT * FROM Websites ORDER BY alexa DESC;
-
ORDER BY 多列的时候,先按照第一个column name排序,在按照第二个column name排序;如上述教程最后一个例子:
-
1)、先将country值这一列排序,同为CN的排前面,同属USA的排后面;
-
2)、然后在同属CN的这些多行数据中,再根据alexa值的大小排列。
-
3)、ORDER BY 排列时,不写明ASC DESC的时候,默认是ASC。
2.ORDER BY 多列的时候,eg:
order by A,B 这个时候都是默认按升序排列
order by A desc,B 这个时候 A 降序,B 升序排列
order by A ,B desc 这个时候 A 升序,B 降序排列
即 desc 或者 asc 只对它紧跟着的第一个列名有效,其他不受影响,仍然是默认的升序。
3、高级查询进阶:
SQL SELECT TOP, LIMIT, ROWNUM 子句
并非所有的数据库系统都支持 SELECT TOP 语句。 MySQL 支持 LIMIT 语句来选取指定的条数数据, Oracle 可以使用 ROWNUM 来选取。
mysql:
ELECT column_name(s)
FROM table_name
LIMIT number;
SELECT * FROM Websites LIMIT 2;
Oracle
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number;
SELECT * FROM Websites LIMIT 2;
Microsoft SQL Server 中
SELECT TOP 50 PERCENT * FROM Websites;
--前5行 select top 5 * from table --后5行 select top 5 * from table order by id desc --desc 表示降序排列 asc 表示升序
模糊查询:
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;
SELECT * FROM Websites
WHERE name LIKE 'G%';
"%" 符号用于在模式的前后定义通配符(默认字母)
SELECT * FROM Websites
WHERE name LIKE '%k';
SELECT * FROM Websites
WHERE name LIKE '%oo%';
通过使用 NOT 关键字,您可以选取不匹配模式的记录。
SELECT * FROM Websites
WHERE name NOT LIKE '%oo%';
通配符查询:
通配符可用于替代字符串中的任何其他字符。在 SQL 中,通配符与 SQL LIKE 操作符一起使用。
SELECT * FROM Websites
WHERE url LIKE 'https%';
SELECT * FROM Websites
WHERE url LIKE '%oo%';
SELECT * FROM Websites
WHERE name LIKE '_oogle';
SELECT * FROM Websites
WHERE name LIKE 'G_o_le';
MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。
下面的 SQL 语句选取 name 以 "G"、"F" 或 "s" 开始的所有网站:
SELECT * FROM Websites
WHERE name REGEXP '^[GFs]';
下面的 SQL 语句选取 name 以 A 到 H 字母开头的网站:
SELECT * FROM Websites
WHERE name REGEXP '^[A-H]';
下面的 SQL 语句选取 name 不以 A 到 H 字母开头的网站:
SELECT * FROM Websites
WHERE name REGEXP '^[^A-H]';
in操作符:
IN 操作符允许您在 WHERE 子句中规定多个值。
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);
下面的 SQL 语句选取 name 为 "Google" 或 "菜鸟教程" 的所有网站:
SELECT * FROM Websites
WHERE name IN ('Google','菜鸟教程');
between操作符:
BETWEEN 操作符用于选取介于两个值之间的数据范围内的值。
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
下面的 SQL 语句选取 alexa 介于 1 和 20 之间的所有网站:
SELECT * FROM Websites
WHERE alexa BETWEEN 1 AND 20;
如需显示不在上面实例范围内的网站,请使用 NOT BETWEEN:
SELECT * FROM Websites
WHERE alexa NOT BETWEEN 1 AND 20;
下面的 SQL 语句选取 alexa 介于 1 和 20 之间但 country 不为 USA 和 IND 的所有网站:
SELECT * FROM Websites
WHERE (alexa BETWEEN 1 AND 20)
AND country NOT IN ('USA', 'IND');
下面的 SQL 语句选取 name 以介于 'A' 和 'H' 之间字母开始的所有网站:
SELECT * FROM Websites
WHERE name BETWEEN 'A' AND 'H';
下面的 SQL 语句选取 name 不介于 'A' 和 'H' 之间字母开始的所有网站:
SELECT * FROM Websites
WHERE name NOT BETWEEN 'A' AND 'H';
下面的 SQL 语句选取 date 介于 '2016-05-10' 和 '2016-05-14' 之间的所有访问记录:
SELECT * FROM access_log
WHERE date BETWEEN '2016-05-10' AND '2016-05-14';
改名别名:
通过使用 SQL,可以为表名称或列名称指定别名。
SELECT column_name AS alias_name
FROM table_name;
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。提示:如果列名称包含空格,要求使用双引号或方括号:
SELECT name AS n, country AS c
FROM Websites;
在下面的 SQL 语句中,我们把三个列(url、alexa 和 country)结合在一起,并创建一个名为 "site_info" 的别名:
SELECT name, CONCAT(url, ', ', alexa, ', ', country) AS site_info
FROM Websites;
SELECT column_name(s)
FROM table_name AS alias_name;
下面的 SQL 语句选取 "菜鸟教程" 的所有访问记录。我们使用 "Websites" 和 "access_log" 表,并分别为它们指定表别名 "w" 和 "a"(通过使用别名让 SQL 更简短):
SELECT w.name, w.url, a.count, a.date
FROM Websites AS w, access_log AS a
WHERE a.site_id=w.id and w.name="菜鸟教程";
SELECT Websites.name, Websites.url, access_log.count, access_log.date
FROM Websites, access_log
WHERE Websites.id=access_log.site_id and Websites.name="菜鸟教程";
链接join
SQL join 用于把来自两个或多个表的行结合起来。
下图展示了 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法。
SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。
最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)。 SQL INNER JOIN 从多个表中返回满足 JOIN 条件的所有行。
SELECT Websites.id, Websites.name, access_log.count, access_log.date
FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id;
在我们继续讲解实例之前,我们先列出您可以使用的不同的 SQL JOIN 类型:
-
INNER JOIN:如果表中有至少一个匹配,则返回行
-
LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
-
RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
-
FULL JOIN:只要其中一个表中存在匹配,则返回行
inner join 关键字
INNER JOIN 关键字在表中存在至少一个匹配时返回行
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;
下面的 SQL 语句将返回所有网站的访问记录:
SELECT Websites.name, access_log.count, access_log.date
FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id
ORDER BY access_log.count;
在使用 join 时,on 和 where 条件的区别如下:
-
1、 on 条件是在生成临时表时使用的条件,它不管 on 中的条件是否为真,都会返回左边表中的记录。
-
2、where 条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有 left join 的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。
详细内容可以查看:SQL JOIN 中 on 与 where 的区别
左连接
LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;
下面的 SQL 语句将返回所有网站及他们的访问量(如果有的话)。
以下实例中我们把 Websites 作为左表,access_log 作为右表:
SELECT Websites.name, access_log.count, access_log.date
FROM Websites
LEFT JOIN access_log
ON Websites.id=access_log.site_id
ORDER BY access_log.count DESC;
LEFT JOIN 关键字从左表(Websites)返回所有的行,即使右表(access_log)中没有匹配。
右连接
RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;
或:
SELECT column_name(s)
FROM table1
RIGHT OUTER JOIN table2
ON table1.column_name=table2.column_name;
下面的 SQL 语句将返回网站的访问记录。
以下实例中我们把 Websites 作为左表,access_log 作为右表:
SELECT websites.name, access_log.count, access_log.date FROM websites RIGHT JOIN access_log ON access_log.site_id=websites.id ORDER BY access_log.count DESC;
注释:RIGHT JOIN 关键字从右表(Websites)返回所有的行,即使左表(access_log)中没有匹配。
FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.
FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;
下面的 SQL 语句选取所有网站访问记录。
MySQL中不支持 FULL OUTER JOIN,你可以在 SQL Server 测试以下实例。
SELECT Websites.name, access_log.count, access_log.date
FROM Websites
FULL OUTER JOIN access_log
ON Websites.id=access_log.site_id
ORDER BY access_log.count DESC;
注释:FULL OUTER JOIN 关键字返回左表(Websites)和右表(access_log)中所有的行。如果 "Websites" 表中的行在 "access_log" 中没有匹配或者 "access_log" 表中的行在 "Websites" 表中没有匹配,也会列出这些行。
A inner join B 取交集。
A left join B 取 A 全部,B 没有对应的值为 null。
A right join B 取 B 全部 A 没有对应的值为 null。
A full outer join B 取并集,彼此没有对应的值为 null。
对应条件在 on 后面填写。
4、盲区普及:
SQL UNION 操作符合并两个或多个 SELECT 语句的结果。
通过 SQL,您可以从一个表复制信息到另一个表。
SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。
通过 SQL,您可以从一个表复制信息到另一个表。
INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。
CREATE DATABASE 语句用于创建数据库。
CREATE TABLE 语句用于创建数据库中的表。
SQL 约束(Constraints)
SQL 约束用于规定表中的数据规则。
如果存在违反约束的数据行为,行为会被约束终止。
约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。
在 SQL 中,我们有如下约束:
-
NOT NULL - 指示某列不能存储 NULL 值。
-
UNIQUE - 保证某列的每行必须有唯一的值。
-
PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
-
FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
-
CHECK - 保证列中的值符合指定的条件。
-
DEFAULT - 规定没有给列赋值时的默认值。
在默认的情况下,表的列接受 NULL 值。
UNIQUE 约束唯一标识数据库表中的每条记录。
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 约束拥有自动定义的 UNIQUE 约束。
请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
PRIMARY KEY 约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。
一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键)。
CHECK 约束用于限制列中的值的范围。
如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
如果对一个表定义 CHECK 约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制。
DEFAULT 约束用于向列中插入默认值。
如果没有规定其他的值,那么会将默认值添加到所有的新记录。
CREATE INDEX 语句用于在表中创建索引。
在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。
通过使用 DROP 语句,可以轻松地删除索引、表和数据库。
ALTER TABLE table_name DROP INDEX index_name
DROP TABLE table_name
DROP DATABASE database_name
TRUNCATE TABLE table_name
ALTER TABLE 语句用于在已有的表中添加、删除或修改列。
如需在表中添加列,请使用下面的语法:
ALTER TABLE table_name
ADD column_name datatype
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
ALTER TABLE table_name
DROP COLUMN column_name
要改变表中列的数据类型,请使用下面的语法:
SQL Server / MS Access:
ALTER TABLE table_name
ALTER COLUMN column_name datatype
My SQL / Oracle:
ALTER TABLE table_name
MODIFY COLUMN column_name datatype
Auto-increment 会在新记录插入表中时生成一个唯一的数字。
视图是可视化的表。views
sql日期
NULL 值代表遗漏的未知数据。
默认地,表的列可以存放 NULL 值。
我们如何仅仅选取在 "Address" 列中带有 NULL 值的记录呢?
我们必须使用 IS NULL 操作符:
SELECT LastName,FirstName,Address FROM Persons
WHERE Address IS NULL
我们如何仅仅选取在 "Address" 列中不带有 NULL 值的记录呢?
我们必须使用 IS NOT NULL 操作符:
SELECT LastName,FirstName,Address FROM Persons
WHERE Address IS NOT NULL
数据库建表的时候默认是
NULL
,但在工作中一般建表的时候都会禁止使用
NULL
的!
NULL
表示的是什么都没有,它与空字符串、0 这些是不等价的,是不能用于比较的! 如:
<expr> = NULL
、
NULL = ''
得到的结果为
false
,判断
NULL
必须使用
IS NULL
-
或
-
IS NOT NULL
进行判断。
为什么工作中不使用 NULL?
不利于代码的可读性和可维护性,特别是强类型语言,查询
INT
值,结果得到一个
NULL
,程序可能会奔溃...如果要兼容这些情况程序往往需要多做很多操作来兜底
若所在列存在
NULL
值,会影响
count()
、
<col> != <value>
、
NULL + 1
等查询、统计、运算情景的结果
sql数据类型:
通用的数据类型:数据类型定义列中存放的值的种类。
在 MySQL 中,有三种主要的类型:Text(文本)、Number(数字)和 Date/Time(日期/时间)类型。
函数:
SQL 拥有很多可用于计数和计算的内建函数
QL Aggregate 函数计算从列中取得的值,返回一个单一的值。
有用的 Aggregate 函数:
-
AVG() - 返回平均值
-
COUNT() - 返回行数
-
FIRST() - 返回第一个记录的值
-
LAST() - 返回最后一个记录的值
-
MAX() - 返回最大值
-
MIN() - 返回最小值
-
SUM() - 返回总和
SQL Scalar 函数基于输入值,返回一个单一的值。
有用的 Scalar 函数:
-
UCASE() - 将某个字段转换为大写
-
LCASE() - 将某个字段转换为小写
-
MID() - 从某个文本字段提取字符,MySql 中使用
-
SubString(字段,1,end) - 从某个文本字段提取字符
-
LEN() - 返回某个文本字段的长度
-
ROUND() - 对某个数值字段进行指定小数位数的四舍五入
-
NOW() - 返回当前的系统日期和时间
-
FORMAT() - 格式化某个字段的显示方式
AVG() 函数返回数值列的平均值。
ELECT AVG(column_name) FROM table_name
下面的 SQL 语句从 "access_log" 表的 "count" 列获取平均值:
SELECT AVG(count) AS CountAverage FROM access_log;
下面的 SQL 语句选择访问量高于平均访问量的 "site_id" 和 "count":
SELECT site_id, count FROM access_log
WHERE count > (SELECT AVG(count) FROM access_log);
COUNT() 函数返回匹配指定条件的行数。
COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):
SQL COUNT(column_name) 实例
SELECT COUNT(column_name) FROM table_name;
下面的 SQL 语句计算 "access_log" 表中 "site_id"=3 的总访问量:
SELECT COUNT(count) AS nums FROM access_log
WHERE site_id=3;
SQL COUNT(*) 语法
COUNT(*) 函数返回表中的记录数:
SELECT COUNT(*) FROM table_name;
下面的 SQL 语句计算 "access_log" 表中总记录数:
SELECT COUNT(*) AS nums FROM access_log;
SQL COUNT(DISTINCT column_name) 语法
COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:
SELECT COUNT(DISTINCT column_name) FROM table_name;
下面的 SQL 语句计算 "access_log" 表中不同 site_id 的记录数:
SELECT COUNT(DISTINCT site_id) AS nums FROM access_log;
查询所有记录的条数 select count(*) from access_log; -- 查询websites 表中 alexa列中不为空的记录的条数 select count(alexa) from websites; -- 查询websites表中 country列中不重复的记录条数 select count(distinct country) from websites;
count (表达式)--分组里非空记录数 count (表达式)--分组里非空记录数 count(*)--所有记录 count(1)--所有记录 count(case job = 'CLERK' then 2 end )--CLERK 人数 count(comm)--有奖金的人数 count(distinct job)--distinct(去重),共有多少种工作
select deptno, count(1) 总人数, count(case when job ='SALESMAN' then '1' end) 销售人数, count(case when job ='MANAGER' then '1' end) 主管人数 from emp group by deptno;--如果不group,会认为所有数据是一组,返回一个数据
FIRST() 函数返回指定的列中第一个记录的值。
SELECT column_name FROM table_name
ORDER BY column_name ASC
LIMIT 1;
SELECT name FROM Websites
ORDER BY id ASC
LIMIT 1;
下面的 SQL 语句选取 "Websites" 表的 "name" 列中第一个记录的值:
SELECT name AS FirstSite FROM Websites LIMIT 1;
LAST() 函数返回指定的列中最后一个记录的值。
SELECT column_name FROM table_name
ORDER BY column_name DESC
LIMIT 1;
SELECT name FROM Websites
ORDER BY id DESC
LIMIT 1;
下面的 SQL 语句选取 "Websites" 表的 "name" 列中最后一个记录的值:
SELECT name FROM Websites
ORDER BY id DESC
LIMIT 1;
MAX() 函数返回指定列的最大值。
SELECT MAX(column_name) FROM table_name;
下面的 SQL 语句从 "Websites" 表的 "alexa" 列获取最大值:
实例
SELECT MAX(alexa) AS max_alexa FROM Websites;
MIN() 函数返回指定列的最小值。
SELECT MIN(column_name) FROM table_name;
下面的 SQL 语句从 "Websites" 表的 "alexa" 列获取最小值:
实例
SELECT MIN(alexa) AS min_alexa FROM Websites;
SUM() 函数返回数值列的总数。
SELECT SUM(column_name) FROM table_name;
下面的 SQL 语句查找 "access_log" 表的 "count" 字段的总数:
实例
SELECT SUM(count) AS nums FROM access_log;
GROUP BY 语句可结合一些聚合函数来使用
GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
统计 access_log 各个 site_id 的访问量:
实例
SELECT site_id, SUM(access_log.count) AS nums
FROM access_log GROUP BY site_id;
下面的 SQL 语句统计有记录的网站的记录数量:
实例
SELECT Websites.name,COUNT(access_log.aid) AS nums FROM access_log
LEFT JOIN Websites
ON access_log.site_id=Websites.id
GROUP BY Websites.name;
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。
HAVING 子句可以让我们筛选分组后的各组数据。
QL HAVING 语法
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value;
现在我们想要查找总访问量大于 200 的网站。
我们使用下面的 SQL 语句:
实例
SELECT Websites.name, Websites.url, SUM(access_log.count) AS nums FROM (access_log INNER JOIN Websites ON access_log.site_id=Websites.id) GROUP BY Websites.name HAVING SUM(access_log.count) > 200;
现在我们想要查找总访问量大于 200 的网站,并且 alexa 排名小于 200。
我们在 SQL 语句中增加一个普通的 WHERE 子句:
实例
SELECT Websites.name, SUM(access_log.count) AS nums FROM Websites INNER JOIN access_log ON Websites.id=access_log.site_id WHERE Websites.alexa < 200 GROUP BY Websites.name HAVING SUM(access_log.count) > 200;
EXISTS 运算符用于判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回 False。
SQL EXISTS 语法
SELECT column_name(s) FROM table_name WHERE EXISTS (SELECT column_name FROM table_name WHERE condition);
现在我们想要查找总访问量(count 字段)大于 200 的网站是否存在。
我们使用下面的 SQL 语句:
实例
SELECT Websites.name, Websites.url FROM Websites WHERE EXISTS (SELECT count FROM access_log WHERE Websites.id = access_log.site_id AND count > 200);
EXISTS 可以与 NOT 一同使用,查找出不符合查询语句的记录:
实例
SELECT Websites.name, Websites.url FROM Websites WHERE NOT EXISTS (SELECT count FROM access_log WHERE Websites.id = access_log.site_id AND count > 200);
执行以上 SQL 输出结果如下:
UCASE() 函数把字段的值转换为大写。
LCASE() 函数把字段的值转换为小写。
MID() 函数用于从文本字段中提取字符。
LEN() 函数返回文本字段中值的长度。
ROUND() 函数用于把数值字段舍入为指定的小数位数。
NOW() 函数返回当前系统的日期和时间。
FORMAT() 函数用于对字段的显示进行格式化。
5、数据库表常见的问题答疑:
三、软件测试之中级学习篇
中级测试工程师
1、接口测试(数据传递)+接口自动化
前言:
认识接口,接口是系统和系统之间的联系。接口有外部接口和内部接口,接口interface
接口自动化大致三个步骤:a-发送请求;b-解析结果;c-验证结果,接口的入参和接口返回,已经对那个的数据库表查询字段是否一致。数据交互为主。
为什么要做接口测试,接口测试的好处?
接口测试的意义何在,提前发现问题,减少成本?
要做接口测试首先先明白什么是接口?
还有网络协议原理,比如从你打开网页输入网址,到你收到内容时整个过程各个协议是怎么运作的。
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
1,什么是接口?
接口,Application Programming Interface(API)
通俗的讲 就是HTTP请求
2,什么是接口测试?
接口测试测试组件间接口的一种测试。
主要用于检测外部系统与系统之间,系统内部各子系统的交互点。
很多前端和后端都是分离的,单独只从前端验证,远远不够,绕过前端太容易了,还需要从接口层面进行验证。
3,接口测试的策略?
接口测试也属于功能测试,功能测试就是测试的业务逻辑,依据接口文档编写测试用例,执行测试,查看不同的参数请求,服务器能不能返回预期的结果。
1、接口测试、认识接口
-
什么是接口
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
HTTP的URL是怎么组成为一个接口的
接口测试文章详解:https://www.cnblogs.com/yyhh/p/6083159.html
https://www.cnblogs.com/puresoul/p/5388586.html
https://blog.csdn.net/xiadanying/article/details/91573125
2、接口组成
请求(request)、响应(response)
服务器(host)、路径(path)、参数(query)
状态码(code)、请求类型(method)、请求时间(start)、响应时长(duration)、响应大小(size)、状态(status)
-
什么是接口测试
接口的由来连接前端后端及移动端
接口测试好处节约时间,缩短项目时间
提高工作效率
高系统的健壮性
什么是接口:接口种类,分类外部接口和内部接口
内部接口:上层服务和下层服务,同层服务
接口分类:http ,get,post delete,put
delete和put不常用
post:请求的数据是放在WebForm里面的,以表单的形式提交
get:请求的数据拼接在URL后面,在地址栏里提交(长度受地址栏限制)
get、post
get就是从服务器获取数据
post就是往服务器传参
不同接口类型的差异参数提交方式不同
请求数据大小不同
安全性
接口测试流程:
为什么要设计测试用例
理清思路,避免漏测
提高测试效率
跟进测试进度
告诉领导你做了这个测试点
跟进重复性工作
接口用例设计
功能
功能是否正常
功能是否按照接口文档实现
业务逻辑
是否依赖业务
异常
参数异常
关键字参数(语言中的关键字)
参数为空
多、少参数
错误参数
数据异常
关键字数据
数据为空
长度不一致(超出数据库字段长度)
错误数据
安全
cookie
header
特别是移动端使用
是服务器以HTTP协议传HTML资料到浏览器前所送出的字串,在标头与HTML文件之间尚需空一行分隔
唯一识别码
客户端常用
————————————————
版权声明:本文为CSDN博主「夏丹莹」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xiadanying/article/details/91573125
2、http协议 和状态码
参考文章:https://blog.csdn.net/u014044812/article/details/91423184
https://blog.csdn.net/weixin_38087538/article/details/82838762
http协议组成; 请求头 请求体
hTTP(HyperText Transfer Protocol 超文本传输协议)是互联网上应用最为广泛的一种网络协议,它是由万维网协会(World Wide Web Consortium)制定发布。
一个url如何请求-至页渲染页面的。
http
tcp/IP协议
TCP的三次握手和四次挥手
http的请求报文结构:请求行、请求头、空行、请求体
服务器相应:响应行、响应头、空行、响应体
http状态码:
参考文章:https://www.cnblogs.com/xflonga/p/9368993.html
状态码:由3位数字组成,第一个数字定义了响应的类别
1xx:指示信息,表示请求已接收,继续处理
2xx:成功,表示请求已被成功接受,处理。
200 OK:客户端请求成功
204 No Content:无内容。服务器成功处理,但未返回内容。一般用在只是客户端向服务器发送信息,而服务器不用向客户端返回什么信息的情况。不会刷新页面。
206 Partial Content:服务器已经完成了部分GET请求(客户端进行了范围请求)。响应报文中包含Content-Range指定范围的实体内容
3xx:重定向
301 Moved Permanently:永久重定向,表示请求的资源已经永久的搬到了其他位置。
302 Found:临时重定向,表示请求的资源临时搬到了其他位置
303 See Other:临时重定向,应使用GET定向获取请求资源。303功能与302一样,区别只是303明确客户端应该使用GET访问
307 Temporary Redirect:临时重定向,和302有着相同含义。POST不会变成GET
304 Not Modified:表示客户端发送附带条件的请求(GET方法请求报文中的IF…)时,条件不满足。返回304时,不包含任何响应主体。虽然304被划分在3XX,但和重定向一毛钱关系都没有
4xx:客户端错误
400 Bad Request:客户端请求有语法错误,服务器无法理解。
401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
403 Forbidden:服务器收到请求,但是拒绝提供服务
404 Not Found:请求资源不存在。比如,输入了错误的url
415 Unsupported media type:不支持的媒体类型
5xx:服务器端错误,服务器未能实现合法的请求。
500 Internal Server Error:服务器发生不可预期的错误。
503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,
3、抓包与测试 (网络基础 )
HTTP抓包工具:Fiddler、Charles、Firebug、开发者工具等等
抓包原理?为什么要抓包?什么需要抓包?如何选择抓包工具提高工作效率等?
4、接口测试工具(jemter postman)
如何选择接口测试工具
测试时间
简易程度
业务复杂度
测试员能力
接口测试工具分类
抓取接口的工具
httpwatch(ie、火狐的插件)
缺点只能在ie、火狐用,其他浏览器不支持
看数据比较麻烦
wireshark
功能比较齐全
经过电脑的所有请求都会抓取
看数据比较麻烦
fiddler
轻量级
功能比较齐全
抓包工具
可进行接口测试
使用比较多
测试接口的工具
loadrunner
可进行性能测试,因为在这个软件里所有的性能测试都是基于HTTP请求的
fiddler
soapui
比较强大的接口测试工具,可以做自动化测试
Jmeter
可以做性能测试,同loadrunner
postman
最常用的
以前是集成在谷歌浏览器的
接口测试工具三剑客
fiddler
postman
Python自己开发
fiddler
优点
独立的可以直接抓http请求
小巧,功能完善
快捷,启动就行
代理方便
什么是fiddler
是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间http通讯,设置断点,查看所有的‘进出’fiddler的数据。
工作原理
原文链接:https://blog.csdn.net/xiadanying/article/details/91573125
接口测试工具:jmeter /postman lr
已jmeter 为例 建立一个线程组
进程和线程区别,
怎么断言 响应断言和模糊断言
如何关联 正则表达式 和json
如何判断一个请求是否成功,问题分析等
JMETER如何做接口测试:建立线程组-建立请求+查看结果
断言模糊,json断言-关联正则表达提取器,json格式-测试用例-跑测试用例-信息管理头-前后置处理器。
如何查看结果树
jmeter做性能测试:
5、接口自动化+代码实现
一个简单的面向对象脚本语言,语法简洁清晰,易学、易懂,并且拥有强大的第三方扩展库。
编写python接口
定义接口地址
定义请求数据
整理请求数据
发送数据并获取结果
python中定义请求的两个包:urllib和urllib2:python3中无urllib2包
python-get接口实战
原文链接:https://blog.csdn.net/xiadanying/article/details/91573125
python学习,框架
6、接口测试思考维度、
接口测试主要关注点,保证正常的功能没有问题,再进行接口的非功性测试,比如性能测试,高并发,同步接口,异步接口等 接口的幂等性等待等
7、接口测试用例设计及常见问题
接口用例设计和功能测试用例一致逻辑,常用的用例设计方法:等价类划分、边界值、错误推荐法、场景法、正交设计实验法、
-
首先保证接口的正常性通过验证
-
接口的测试流程
-
8、数据库mysql基础知识(见上)
9、接口测试代码脚本Python
本章学习:以python为例,后续进阶了解java
-
python和pycharm安装
注意安装路径,相对路径和绝对路径配置环境变量等 第三方库安装pip install
-
基础篇
打印 hello world
换行打印\n
连接符+
格式化输出%s%d
input 用户输入
注释 #单行注释,注释快捷键ctrl+/ 取消注释也是,多行注释‘’‘’‘’,,,
缩进 缩进是四个空格 tab键,取消缩进:shif+tab
注意:编程的世界里非0为真,0位假 %运算符是取余,缩进严格按照四个空格
-
python基础
-
接口自动化-request/pytest
-
函数、类和方法
-
类与封装
-
unittest
unittest框架的引用,特性怎么区分
-
python接口自动化-json
-
数据驱动ddt
-
git使用
selenium
1、基础篇
2、元素定位
四、软件测试之高级进阶篇
高级测试工程师 (代码篇)
1、性能测试-基础压测
1.性能测试概念
2.性能测试模型
3.利用jmeter(1000)做性能测试 配置环境变量、
4.阶梯式压测
5.性能测试预估指标
6.linux上压测/windows压测对比
7.生产html测试报告
8.性能测试怎么做
9.性能测试常见问题
10.性能测试结果分析
接口自动化代码实现+python/java实现
Python安装方法+pycharm安装方法
Python基础语法使用 python基础、接口自动化-request 、函数、类和方法、u
类与封装、unittest python接口自动化+json
数据驱动ddt git/SVN使用
Selenium 基础篇+元素定位
APP测试
1.app-monkeys测试
monkey测试简介和使用 压测 anr、carsh
2.App专项测试
1.启动时间测试
2.弱网测试
3.内存测试
4.流量测试
3.app测试点分析
app测试找bug
App测试点总结
7、测试开发-白盒测试
至少会一门编程语言python/java/c++ 对性能调优,数据库,搭建环境等
测试环境部署、测试左移、测试右移、测试工具平台开发、持续交付、集成交付等
基础的功能测试、性能测试、接口测试(必备的技能)、基本的脚本能力shell
自动化测试的基本能力
开发语言:java 脚本型语言python
8、前端基础知识hmtl+ccs+javascript
开发语言:java、python 、c\c++、shell、go、
数据库相关基础知识,无代码基础建议从python开始,有代码基础java,不同的编程语言对于不同场景的使用的区分。
五、软件测试之终级怪兽篇
9、性能测试+安全测试
可以了解,不建议投入太多时间
1.专职性能测试要求太高水太深+不建议走这条路。
-
全测试要求更高水更深,非天赋者请勿尝试哈。
10、研究效能、效能度量、敏捷实践、持续交付
研究效能 -
敏捷开发、CI/CD、 持续集成、集成交付、docker、环境搭建、devops
六、软件测试之辅助提升篇
-
工具篇
思维导图/流程图:xmind 、freemind 、word
文本编辑:notepad+ viscode pycharm
远程连接工具:xftp
测试用例管理工具:excel 、禅道 jira、
公共测试用例库:
缺陷管理工具:禅道、
抓包工具:fiddler charse wistle F12
chromeF12工具详解:https://www.cnblogs.com/xiaowenshu/p/10450848.html
微信开发者具;
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/web_development_style_library.html
https://developers.weixin.qq.com/miniprogram/dev/devtools/devtools.html
接口工具:Jmeter postman lr
数据库连接工具:navicat sqlyog
格式:xml json yaml html form-data
格式转换json:
MD5加密:
版本管理:svn git
-
学习篇+检索能力
-
学习网站
慕课网 51课堂 腾讯课堂 菜鸟教程
前端基础知识html+css+javascript
后台开发:pyhton/java/c++
-
行业分析篇
金融行业 :银行、理财、股票、基金、证券 web+app测试
互联网行业:app测试 大数据测试,人工智能测试,无人驾驶测试
电商行业:
物流行业
传统行业
-
面试篇
简历,怎么写简历?怎么投简历
面试准备 面试方式(电话面试+视频面试+现场面试+二面)
自己介绍 怎么自己介绍 时间把握(控制在3-4分分钟
项目介绍 :自己最熟悉的一个项目,项目背景 项目框架 项目开发语言 、项目成员构成、自己负责的测试模块、遇到哪些问题,如何解决的,使用了哪些工具和技术等 测试用例
缺陷统计,总结得到了什么?
技术问题:100问
测试流程介绍:
linux系统:常用的命令符 搭建测试环境(jdk+tomcat+mysql)
测试基础理论:
测试流程介绍+ 测试计划怎么编写(包括哪些内容)
测试用例包含哪些,
测试用例常用的方法
缺陷的生命周期
测试报告(怎么写,包括哪些内容)
数据库:用过哪些数据库,数据库常用的语句,多表子查询、数据库主键、锁表、缓存、数据交互,插入百万数据、如何防止数据库恶意注入sql 数据库事务
功能测试:抓包工具,如何判断前后端缺陷
接口测试:接口测试 协议,状态码 响应码 TCP/IP 三次握手,四次挥手 网络七层 cookie seesion token
区别 同步接口 异步接口 接口高并发 如何关联 断言 数据参数化 等
自动化测试: python/java自动化测试
闲聊+还有什么想了解的?
个人情况(为什么选择测试行业,兴趣爱好,居住地址、婚恋情况、职业规划、是否接受加班)
咨询公司项目背景,研发人员构成、用到哪些技术、职业发展方向)
如何谈薪资
手里没有offer
手里有offer
-
实际工作遇到的问题分析及解决方案?
-
测试流程熟悉
-
需求频繁改动,中途插入新需求,测试时间不够,怎么办?
-
需求内容不明确,没有拆分需求点?
-
需求变更怎么办?在实际工作中如果遇到需求变更,或测试过程中需求再次变更影响测试进度,首先要和产品再次确认需求,拆分需求并优先级标明,并对测试时间和人力再次重新评估,是否有存在测试风险等因素,及时明确责任划分等等。
-
测试用例怎么写?根据需求提炼出测试点,对需求的理解要明确,拆分需求,做测试分析,功能模块,提炼出测试点,或者思维脑图梳理,再进行用例的设计,用例设计的常用方法,等价类类划分,边界值,场景法,错误推测法,正交设计实验法,要思考结合项目的需求和预估的测试实际,去设计测试用例,尽量去覆盖所有的点,避免漏测的点,用例设计包括测试预置条件,测试环境,测试工具,测试步骤,测试预期结果,用例等级,用例常用的颗粒度等,根据实际的项目需求和实际测试时间接结合,先等价类划分,确定测试的分类,再进行边界值,取值,再场景法,正常流,备选流、异常流、再根据已有的经验使用错误推测法去判断等,如果测试时间充分的话,可以进行交叉测试,探索性测试等等,测试的思维要拓展,多站在用户的角度去思考用户会怎么操作,用户的场景等。确认功能基础ok 再考虑非功能性测试,比如兼容性测试
-
功能测试-前端页面测试UI测试,根据交互稿件 图片切换跳转之间的关系,视觉稿是静态页面等,项目需求和交互稿件判断逻辑,
-
如何分配工作任务,根据个人能力和性格,以及对对业务得熟悉程度。
-
如何推进测试流程-测试进度等
-
需求太多,测试时间不够怎么办?
-
测试计划怎么写?
-
测试环境怎么搭建?
-
测试用例怎么写?
-
测试用例的颗粒度如何把握?
-
测试缺陷怎么跟进
-
测试报告如何写?
-
测试流程怎么推进?
-
如何区分前后端bug
-
如何发送邮件?
-
如何和不同性格的同事沟通,推进工作进度?
-
工作日报和工作总结,以及测试文档怎么写?
-
功能测试,页面测试、接口测试、自动化测试、测试开发怎么选?
-
测试的职业规划2年(2021-2022)巩固测试基础理论+计算机基础知识;自动化化测试技术+思想;测试开发。
-
测试如何保证测试质量和进度?从哪些方面进行控制呢?测试体系框架?
-
项目测试时间不够,整体流程不规范?如何保证上线测试?
管理篇:如何快速成为一位合格的管理?
-
前端测试UI+功能测试,页面测试-功能测试以及非功能测试,关注点更多是在于功能逻辑,前端基础的技术认识,html+ccs+javascript,首先确认功能是正常的,再确认各个页面之间的跳转逻辑,其次就是UI页面的展示,字体、颜色、背景图。
-
是否能独立负责一个项目的能力,保证一个系统的测试质量。协同不同资源和人员之间的配合,对于测试环境的部署和维护,后台提供的测试数据的准确性。
bug缺陷分类:前端和后端缺陷区分下
-
如何把工作做到极致,先完成再考虑把事情做到完美,再到极致?永远是为你自己工作,不为任何人工作。
-
向上管理+先沟通确认再问题问题产生呢?
-
测试1.05-6.25工作1年经验,总结反思复盘几个问题。为什么测试还会出现线上问题呢?测试用例的覆盖程度,漏测的情况、测试思维局限,测试方法的结合使用根据需求快速的使用不同的测试方法把测试用例近可能的覆盖,正常场景和异常场景。对于mock数据构造的场景,需要真是的数据去跑一次。
-
思维僵局,在测试工作要保持怀疑的态度。对于开发的工作要保持高度审视态度,尽可能及早的发现问题,和开发保持良好的沟通。
-
如何有逻辑的表达,结构化表达(结构-理由-事实)组织好语言注意语言和沟通的技巧,避免个人情绪的产生。工作就是工作,要认真负责的态度。
-
对于技术的提升要学习,业务的了解的同时要保持对技术的敏感程度,保持学习的态度,理论-实践-总结复盘-再实践形成一个良好的闭关过程。
-
测试设计,测试策略、测试执行、测试缺陷跟进、测试风险、测试报告。
-
测试三轮-冒烟测试-功能测试-系统测试-回归测试,对于测试缺陷的重视程度,确定这个是不是问题,问题的产生复现,和解决问题的方案。区分前后端bug提给对应的负责人,mock数据的构造。
-
写测试文档-才能发现自己的问题-输出内容。
-
已有的需求,对于目前线上的需求是否有影响,涉及哪些关联系统,需要依赖的系统。确定回归测试的范围,精确化测试(确定测试的对象,测试的环境、测试的产品,测试的人员、测试的风险、测试文档输出(测试用例、缺陷单、测试报告)测试总结等等。测试中需要涉及的技术,数据问题等等。
-
软件测试的方向是主动技术还是重点在业务,个人认为业务是重点,技术是辅助工具提升工作效率
-
在保证功能测试的基础下,涉及回归测试,兼容性测试应该考虑的点
-
测试的系统性思考,熟悉你测试的系统,对于你测试系统的思考,局部与整体的关系,更多的全局的考虑
-
需求文档不明确,研发开发进度缓慢,测试如何去推动项目流程,
-
对于线上的问题,测试要第一时间主动承担责任,分析问题,分析问题产生的原因,定位问题,复盘总结问题避免情况的发生
-
如何要求开发自测后, 根据提测的质量更好的进行测试时,需求影响的部分要及时回顾覆盖。
-
主动积极推动项目进程,向上管理。严格要求自己的,对于自己测试问题的发现。
-
测试的价值,发现bug,提交bug,可以从一个方面反馈这个测试人员的基本功力,需求评审时,对于需求不理解的提出质疑,涉及测试员对业务的熟悉程度,测试用例设计提现测试人员的测试思考,测试覆盖程度,语言功能好的测试用例是人人都可以看的懂,如何写测试用例,逻辑性思考
-
代码评审,测试有必要参加吗?
-
黑盒测试、白盒测试(内部逻辑判断),关于对测试方法的讨论
-
测试如何保证测试质量
-
关于缺陷产品的原因,接口定义出现不一致,数据库db数据未完全释放,数据缓存原因,需求设计漏洞,开发代码实现问题,测试漏测现象
49、1.项目成员明确测试需求,需求按优先级排序,评审之后少做变更
2.制定合理的的测试计划,明确各项测试点的时间进度和负责人
3.保证测试设计和测试用例的质量,避免漏测情况发生
4.提供测试介入的标准(必须冒烟测通过)代码质量codereview
5.迭代测试
6.每天开站会,沟通项目进度,解决问题
测试计划,需求拆分,风险评估:项目的每个阶段都存在风险;缺陷预防:沟通能力:时间管理:优先级 避免漏测情况
-
软件测试人员必须具备哪些技能?对于软件测试人员来说,强硬的技术能力,过硬的业务知识, 必备的测试思维测思想,良好的沟通能力和精准的语言表达能力,需要协调产品,研发、项目等不同岗位人员的关系处理。
-
软件测试人员的出路,对于35+的软件测试人员,如果没有做到一定的管理岗位,或者技术到达专家级别,继续软件测试之路,或者转岗项目经理,产品经理。在平时工作注意积累经验,看不同岗位的工作内容,需要的不同技能,如何去协调不用资源的分配和统筹管理能力的需求
-
技术,软件测试对技术的要求,代码能力的要求不低,这一个层面的技术必须的,不要舍本求木。平时工作之余注意提升自我学习。
-
关于软件测试-项目流程的推进和改善,不同公司大同小异差别不大。需要关注的测试作为软件质量最后的守门人,把控软件质量,必须要严格要求自己对软件测试质量的控制,测试的质量,如何去衡量是关键因素。对于需求的理解,对于研发功能的实现,产品人员的验收。
-
测试策略、测试分析、测试计划之间区分,when who where what when how 5W1H方法论,关于各种专业实际操作使用过程中的复盘和总结等,重要测试策略,通过不同的测试方法,在短时间内以快速的方法尽可能多,尽可能早的发现问题,以减少工作效率修复成本。
-
关于缺陷的定义和缺陷单的标准问题,
-
前后端缺陷,提给各自的开发人员。
-
python语言学习
-
测试专业名词
cookie登录
混沌测试是一种可试验的、基于系统的方法来处理大规模分布式系统中的混乱问题。通过不断试验,了解系统的实际能承受的韧性边界并建立信心,通过不同的试验方法和目的,观察分布式系统的行为和反应。一句话——以试验的方法尽早揭露系统弱点。
敏捷测试:
持续集成:
持续交付:
BDD(Behavior Driven Development),行为驱动开发是一种敏捷软件开发的技术,它鼓励软件项目中的开发者、QA和非技术人员或商业参与者之间的协作。
测试驱动开发:
六、软件测试之面试汇总
-
面试分析因素
面试到底在面试什么呢?为什么要面试那么多底层的东西。
简历准备,面试前的准备,可能会涉及的问题,你的优势,你的技术、你的目标、目前的差距,项目业务、领导人的风格、对技术的要求
未来可能接触的方向、个人的成长空间、测试周期版本的迭代、目前测试研发的比例、公司项目的项目流程、薪资福利待遇等问题。
每日思考:X月x日
一、你的工作目标是什么?
1、赚钱-足够多的钱,目标:薪资对标的技术能力和要求,接口测试-自动化测试23-25(2021-09-06)-测试开发(python),对技术的热情和钻研是否有,目前的能力是否对标对应的薪资(评估下),经验+年龄+学历考量,获取高薪酬-对标的能力是否具有。你的价值多大,能力大解决问题的能力。对自己的要求要高,严要求。勤思考+落实执行层面,目标liujian(水平),减少与工作无关的事,工作时间高效投放工作,以结果论证导向。再量化技能(接口测试+代码能力)怎么提升技术(市场对应的价值)自学+检索能力,目前工作实践中接触的接口经验较少,缺乏实际项目经验,可以看看。(不足:学历、工作履历、技术、软技能),站在管理的角度去考量问题,搭建部署测试环境,devlops 、CICD、持续集成、测试平台,测试工具开发,提升测试效率等,质量体系管理了解,测试左右移动,敏捷开发。
2、现实:理论知识如何结合实际工作经验去实践落实,-反馈-总结,接口测试(熟悉环境)、linux系统命令。学以致用,遇到问题解决问题以及解决方案等。目前工作能接触到的测试相关:日志linux,mysql查询,DB字段表,接口字段、mock挡板,测试业务知识,整体的测试流程x,前端数据埋点,自动化测试平台,代码层面无权限。测试计划,测试报告撰写,发送邮件,日常开发沟通推进。
3、提升:自己欠缺接口方面的知识和项目经验,http协议 数据查询,自动化框架,代码能力,基础要巩固对于一些基础的概念理解还是比较模糊。基础功能测试覆盖,接口测试、自动化测试、测试开发,环境部署规则。
4、目前自己能力和经验的自我评估,差距在哪里?测试基础理论实践巩固,测试计划、测试安排、测试风险评估,需求评估意见、测试报告撰写、测试流程评估、工具使用、测试逻辑思考关于系统性业务思考等。
二、你都要干啥?
工作流程:测试前-测试中-测试后。整个测试流程以及测试质量保证如何实现?
测试用例的精通,对测试设计,测试策略,测试方法、
测试前-产品思维、测试思维、开发思维
1、参加需求评审(抛出疑点)、熟悉需求、拆分需求、对需求理解不透透彻(比较大条,不够细化,严谨认知的态度),需求的理解不具体,要追求至细节这个是关键点,需求不评审就直接流转至测试环节,写文档输入记录。对于不合理的需求进行初审,对齐需求标准再到测试环节。站在用户和产品角度,产品需求和业务实现等进行宏观评审。对项目需求的背景,项目的实际落地,
2、测试分析,测试计划(5W1H),测试策略(方法)以及对测试风险的预估,搭建测试环境,相关配置系统,写用例用例、执行测试用例、测试计划安排,测试用例不能一次输入设计完整得改,用例的设计方法理解不够透彻。通过测试计划,去预估bug产生的风险等。如何保证测试质量,测试场景的覆盖用例尽可能覆盖,需求优先级等
测试中:测试思维、用户思维、开发逻辑实现
3、测试执行,bug规范程度,有利于开发快速理解问题,解决问题,提bug单,回归bug单、提bug,回归bug 保证线上没问题。测试环境bug缺陷确认问题,多方多次确认,提出优化的点和优化方案和产品及时主动狗沟通,反复推销需求未明确的地方
4、沟通方面-主动沟通,前端开发、后端开发,产品经理(需求不明确沟通),项目经理沟通项目进度、交互(图片逻辑判断)视觉(图片文案),寻找对应的项目负责人,项目管理方面的思维,推动项目进度及时反馈问题
测试后:
5、测试进度推进,自上而下的方式。小测试的反馈问题给领导,多总结测试报告,测试结果。测试报告,测试bug分析统计,测试中遇到的问题,已经测试流程的改进,推动测试进度。测试问题复盘总结,为什么会漏测,测试场景覆盖等问题
-
需求上线跟踪,线上bug处理,解决方案等。第一发现问题,定位分析问题,解决问题的方案,线上环境风险预估判断,跟踪,如遇问题及时发现并找到解决方案。预发布环境根据,生产环境体验更加及时反馈问题
-
熟悉被测试的系统,建立系统性思考关于业务系统
三、上司指出我的问题是什么?
1、测试质量问题,bug提单情况、用例漏测的情况会发生,工作细节不够,要细化工作,多形成书面文档形式的输入格式。
2、测试进度推进,沟通问题、找人协助,相关负责人(项目和产品),和前端开发沟通的效率还有待提高,
3、测试思路(写测试用例)、测试点,根据需求文档,交互稿件,步骤结构化
4、语言表达组织能力(想清楚再说,生活也是)沟通不积极(得主动沟通反馈进度和问题),主动沟通,及早发现问题,反馈问题并想到解决问题的方式,多去表达和同事沟通,学会分析和交流。礼貌用语注意人际关系的处理,工作中的同事保持一般的礼节。对问题的解决方案和深度不够需要联系,对整体测试进度的把控,CICD 质量管理学习,安排测试任务等
5、不积极主动沟通,责任心对于自己测试的功能很版本迭代,测试如何保证质量。关于测试的自我思考,价值在哪里建立自己的个人品牌。
四、怎么改进?
1、总结反思,思路构建和写文章。前端页面多变,涉及后台接口的调用,要确认。做事有反馈,闭环思维,有始有终。情绪管理(不要抱怨),工作严谨的态度,高效沟通。
2、测试思维方式培养,画测试思维导图。
3、和部门沟通的方式,要精准表达主要有效沟通方式,测试工作本身的细节把握,对问题的追根问底的精神,不怕犯错的思想。敢于承担责任,勇于提出自己的问题见解和想法,把问题抛出去。
4、表达能力和语言组织,情绪管理(严肃),不要插话,打断人家说话等。多在群里沟通发文,熟悉流程,提炼自己的语言和文字表述能力,实际工作中落实并执行。
5、测试细节,测试用例的颗粒度,测试覆盖度问题
五、如何学习?
1、向优秀的人学习,谦虚学习他人优点,观察他人的言行举行,沟通方式等。多看多学多问多自己思考,测试文档输出,测试思维如何训练,以及对问题的追根究底性探索,计划落实执行。
2、技术文档,接口要多熟悉。开始了解自动化,公司平台介入。
3、刻意练习,避免进入自动模式,逃离舒适区。原理-本质-解决问题能力,个人情绪管理能力,多用户角度考虑等。夯实基础点,反思总结review,对于不懂得问题要深究,理解事务的原理,本质,注重实践知行合一。最近学习劲头不够,需要继续保持学习热情
4、问题是怎么产生,如何解决问题,解决问题的方案,几个方案。如何有效的避免此类问题下次再次发生,总结经验,持续性学习。自我驱动力的培养
5、多倾听总结复盘,然后形成测试文档输入
6、带新人的体验,是对自己业务知识和技能的验证。
测试需要了解的部分:
高薪领域:AI测试、大数据测试、数据测试、区块链测试、物联网测试
测试基础和方法:测试基础、测试管理、白盒测试、接口测试、通用技术、性能常识、linux 、android开发基础、java/python、BDD
专题测试:前端测试、测试覆盖率、移动性能测试、品质管理、接口和协议组成、、游戏测试、音视频测试、VR/AR/MR 性能测试工具、安全测试、
测试技术和方案:selenium ios测试、其测试框架、自动化测试工具、持续集成、DOcker、devops、Junit/testNG\ airtest 、robotium Calsbash、appium
研发效能:敏捷实践、持续交付、研发效能、效能度量
WWRH
1、W为什么要做这件事?
升职加薪25-进自研公司
2、W需要做成什么样子?
测试开发要求:代码能力、平台开发能力、自动测试能力、测试思维训练
-
R应该有哪些具体产出?
学习代码知识python,java ,接口相关,搭建环境linux
4、H要达到上述效果,要用什么手段去做?
自学能力较差,需要报班学习()+7点半下班学习
一、做好时间管理
(1)用四象限原理规划时间
关键点:留出时间和精力,从容、淡定的做重要但不紧急的事情,拒绝做救火队长,重要的事情紧急做,总有一些事情会出现纰漏。
规划时间-四象限原理
紧急 不紧急
重要
不重要
|
紧急又重要事项I |
重要但不紧急事项II |
|
紧急但不重要事项III |
不重要也不紧急事项IV |
(2)用80/20法则分配时间
有价值、高产出的事情,只有20%,把这20%做好,才是真正的人生赢家,从而有更多的时间去休息、去思考。
紧急 不紧急
重要
不重要
|
20%-25% |
65%-80% |
|
15% |
<1% |
(3)用ABC控制法使用时间
二、目标管理
(1)用SMART法确定目标
目标要具体、量化、可执行、有时限,先赚它一个亿是别人的小目标,年终汇报获得老板的认可和大红包,才是我们自己的目标,踩着西瓜皮,滑到哪算哪,那是求生存不是生活。
关键优势S
擅长什么
拥有什么新技能
能做什么别人不能做的事
如何能够重复最近一次成功
什么使你与众不同
你的顾客为什么要来你这里。
(2)用目标多杈树法分解目标
将大目标拆分成一系列小目标,即时完成一个小目标,既可对自己形成鼓励,又对大目标更靠近了一步。
|
6断目标能否达成 |
|
5评估目标 |
|
4检查多叉树分解是否充分 |
|
3写出子目标所有必要及充分条(即时目标) |
|
2写出大目标所有必要及充分条件(子目标) |
|
1写出大目标 |
(3)用6W3H法分析细化目标
6W
WHY明确了解工作进行的目的及理由
what 明确要做的哪些事项
who 明确责任者及协助者,谁来做
when什么时候完成
where在什么地方完成
which确定工作的优先顺序,找到解决问题的重要对策
3h
how to 明确各项行动如何进行及进行的顺序步骤
how many 工作数量是多少
how much 预算费用是多少
三、计划管理
(1)PDCA工作循环
想减肥,那就管住嘴迈开腿,想要年底大红包,那就先做好当下的工作,并提前准备好一份让领导意想不到的年终汇报PPT,总之,有目标,需要有执行计划、有过程检查,切莫睡前雄心壮志,一觉醒来又把昨天的梦想给抛之脑后。
(2)标准化管理
(3)有效计划法
四、压力管理
(1)正确评估自己的压力水平
(2)压力管理曲线
五、思维创新
(1)因果图、鱼骨图分析,找出问题的本质和解决之道
(2)SWOT,正确定位自己的优势,并将自己的优势发挥到极致
(3)五个为什么分析法
(4)橄榄球定律
(5)六顶帽子
六、高效沟通
(1)反馈的JOHARI视窗
(2)沟通反思环
(3)如何避免沟通中出现的问题
七、职业规划
(1)用录洋葱法设定职业目标(★★★★)
(2)认真做好职业生涯规划(转)
本文来自博客园,作者:一路向北转南,转载请注明原文链接:https://www.cnblogs.com/test0615/articles/15587795.html

浙公网安备 33010602011771号