发表于: 2020-01-08 23:35:42
2 864
一、今天完成的事情:
开始进行知识点扫盲
腾讯课堂:【松勤】软件测试从基础到高级全栈课程
第二节:软件测试学习路线梳理与工具剖析
第三节:软件测试快速入门
第四节:测试用例设计技术(本节课干货很多)
软件测试技术框架图--视频中展示的不全,后续有机会再完善
软件测试规范文档
第五节:软件缺陷要求详解(个人理解发现bug是测试的核心)
1.主题:心+法+器=发现高质量bug
1)正确理解Bug(思维)
2)Bug管理流程(方法)
3)Bug核心触发与管理(工具)
2.思维:软件缺陷(Bug)的定义
1)软件未实现产品规格说明书要求的功能
2)软件出现了产品规格说明书指明不应该出现的错误
3)软件实现了产品规格说明书未提到的功能(画蛇添足)
4)软件未实现产品规格说明书虽未明确提及但应该实现的目标(指隐性需求,如密码密文显示)
5)软件难以理解、不易使用、运行速度慢,或者软件测试员认为最终用户会认为不好
注意:尚未发现或未观察到的软件缺陷只能说是潜在缺陷。
3.下图:横坐标表示开发的不同阶段,纵坐标表示修复bug需要的费用。
1)软件开发通常包含需求、设计、开发、测试、发布维护阶段,都有可能引入软件缺陷。
2)随着时间推移,修复bug的成本越来越高,甚至bug大到无法修复,产品无法承受导致报废。
4.方法:如何发现软件缺陷
除了根据软件需求说明书来发现软件缺陷外,可以尝试如下方法:
1)查找时间依赖和竞争条件的问题(时间依赖有:千年虫问题、同时访问、24小时运行、改操作系统时间、改数据库时间、时间单位、跨年跨月跨日、会员到期等。竞争条件有:秒杀等。要明白时间空间对测试的影响,这个时间的问题在其他时间可能不会出现,在这个客户在可以在那个客户不行空间变了。再比如淘宝,在这个时代就不可能做到现在这个样子。看事情看行为而不是看时间、空间。看到别人成功,要看成功背后是什么,是具备了哪些条件。)
2)查找边界条件软件缺陷、内存泄露和数据溢出缺陷(边界值法、内存泄漏是长时间运行软件申请的资源但是不释放资源(打个比方:一个瓶子中间有个孔,漏了几滴水。所以内存泄漏一点点问题不大,关键的是持续泄漏系统无法承载)、内存溢出(同样一瓶水:已经满了,再往里倒水。回到系统:打开这个软件会到导致别的软件宕机))
3)查找状态转换时出现的缺陷(从一个页面切换到另外一个页面)
4)查找资源依赖性:内存、网络、硬件等方面的缺陷(内存不够、网络慢)
5) 查找和硬件相关方面的缺陷,比如硬件兼容性方面的缺陷
5.方法:缺陷处理流程(就是bug的生命周期,图片有点乱整理如下:)
1)New(测试人员发现bug,还没有提交)
2)Open(测试人员提交bug,由测试人员将状态改为open)
3)a.Rejected(开发人员拒绝修复)
b.Deferred(开发人员延期解决)
c.Duplicate(bug被重复提交)
4)a.Updated(开发人员修复bug,但是还没有提交给测试人员,由开发改为updated)
b.Fixed(开发人员修复并通过自测后,提交给测试人员,由开发改为fixed)
5)close(由测试验证确实修改正确后,将状态改为Close)
6)Reopen(由测试验证仍然没有修复,则将状态改为Reopen,重新提交给开发,让其修复)
6.bug管理工具
第六节:软件测试职业规划与面试真题讲解(等后面准备面试的时候再看一遍)
1.软件测试人员职业规划
业务路线:产品经理/业务经理
技术路线:测试专家(全栈测试人才),大公司的测试岗位成长路线为:测试员工(Level 1)-->TD(测试组长,Level2)-->Test Manager-->Super Manager(部门经理)-->CTO(技术总监)
Level1:基层测试工程师,对业务和技术要求高。
Level2:团队管理经验
Level3:部门管理经验
管理路线:各级别主管
2.面试题--软件测试框架(主要讲了自我介绍)
1)自我介绍?
参考:A:表达能力 B:抓到点 C:为后面会被问的问题打下基础
例子:转行的如何自我介绍?(从开发转测试,毕业后的几年做了什么)--淡化背景
2)所做项目的情况,主要做什么类型的测试?
参考:业务、项目环境
比如:松勤网是一个以在线直播、视频录播为主要业务的综合性网站,分为管理员、教师、学生三个模块。支持web和app端。
是搭建在Linux服务器上,使用mysql数据库,采用PHP后端语言。
3)软件测试的流程?
需求分析--制定测试计划--编写测试用例--搭建测试环境--执行测试--提交测试缺陷--测试总结报告
4)软件测试用例设计/测试用例的内容/管理工具?
参考:以场景为驱动的测试设计,并且针对测试数据的选择,通常结合等价划分、边界值、因果图、错误推测等
包含:标题、测试环境、测试输入数据、测试步骤、测试结果、测试时间、测试人员等
工具:Testlink、禅道
5)软件缺陷的内容/管理流程/管理工具?
6)缺陷等级的划分?
7)是否编写过软件测试计划/包含哪些内容?
8)是否编写过软件测试报告/包含哪些内容?
第七节:Jmeter工具环境搭建与实战
1.为什么使用Jmeter?
项目需要:接口测试、接口性能测试、负载测试、压力或稳定性测试
求职需要:Jmeter和fiddler都是加分的
圈内需要:测试圈内的同行交流
2.Jmeter工具是什么?
1)多线程框架、支持多并发操作
2)用于服务器模拟负载
3)支持web、数据库、FTP服务器系统的性能测试
4)开源、纯JAVA,可二次定制化开发
3.Jmeter如何使用?
第一步:下载安装JDK
第二步:下载Jmeter(建议选择4.0版本,新版本可能存在一些小问题)
第三步:运行Jmeter。一台windows系统电脑时点击bin目录下Jmeter.bat,一台Linux系统电脑时点击bin目录下Jmeter.sh。测试很多用户用到分布式Jmeter测试时,点击bin目录下Jmeter-server.bat。
4.Jmeter常用元件
1)测试计划:名称、注释、独立运行每个线程组(在一个线程组运行结束后启动下一个)
2)线程组:名称、注释、线程数(用户数量)、Ramp-up Period(in seconds)(做并发时输入0或1)、循环次数(是对整个线程的循环,如果要对部分线程循环使用循环控制器)、永远(线程一直循环执行)、调度器(使用时如果循环次数有值,会以循环次数为主,此时需要勾上永远)、启动间隔(多久启动一次)
第八节:Jmeter接口测试实战
1.接口是什么?
1)概念:
一种是内部接口,方法之间交互和模块之间交互
一种是调用对外包装的接口
2)分类:
web接口
应用程序接口
数据库接口
2.为什么做接口测试?
1)项目需求
2)市场需求
3.怎么做接口测试?
1)需要有接口文档,如果没有自己抓包然后编写,包括接口地址,返回格式,请求方式,请求参数,请求头,返回数据示例
2)Jmeter操作
第九节:Jmeter接口性能测试实战
主要是讲得获取token、正则提取器、同步定时器等插件的使用
第十节:一节课入门接口测试自动化
需要根据接口文档,对被测系统输入信息,检查输出是否正确
需要python第三方库requests
第十一节:软件测试问题定位分析--案例实战讲解
1.软件问题分析的两个方向
业务方向:用户需求(显性+隐性):使用用户场景
技术方向:软件架构(系统设计+环境部署):运用IT技术
2.问题:通过windows上的浏览器,访问部署在Linux系统上的web服务,发现网站无法访问?
分析:从多个角度分析可能造成问题的原因
1)能不能Ping通服务器--cmd下输入Ping ip地址
2)防火墙(服务器)(Linux下输入service iptables start可以开启防火墙,输入service iptables stop可以关闭防火墙。注意关闭防火墙会有安全隐患,所以不能关闭防火墙。正确的做法是输入iptables -I INPUT -p tcp --dport 80 -j ACCEPT来允许服务器接收80端口的数据)
3)是否设置代理(浏览器)
4)错误代码
5)端口号检查(linux下输入命令tcpdump -v port 80进行抓包,分析看大于小于号就行。>表示请求,<表示响应,只有大于号没有小于号说明丢包)
6)查看DNS解析是否正确
7)网络
8)数据库
9)服务器日志信息
10)web文件是否存在
11)服务器本机能不能打开
12)网址是否正确,有没有url重定向、换其他浏览器
二、明天计划的事情:
1.将腾讯松勤目前所学内容整理成思维导图
2.学习拉勾上的测试课程
三、遇到的问题:
第二节:
1.测试覆盖率是什么?
测试覆盖率:测试到的功能点/总共需要测试的功能点X100%,测试覆盖率越高越好。比如有10个功能点要测,测了1个覆盖率是10%。
2.因为项目关系,来不及测试所有的功能点怎么办?
根据优先级测试。
3.如何分测试用例优先级?
站在用户角度,根据用户对功能的需求判断。如用户最关注的是什么?用户最不关注的是什么?比如安装和卸载比,安装高于卸载
4.自动化测试如何学?
首先缩小问题,明白自己学自动化是为了什么?比如,是为了简化web的操作,可以学selenium webdriver。然后就发现需要学习编程语言,页面元素定位等。学习目标一定要落地,如学习如何爬虫或者如何将本地文件传到远程等细化的任务。以小点来撬动目标,而不是定大目标导致无法完成目标。
5.JMeter学习技巧是什么?
JJmeter是模拟协议发包的工具,如Http、soap、restful、tcp协议等。Jmeter的难点一是对用到的协议的分析,二是Jmeter是插件类型的,要如何通过插件实现循环、监听、断言、断点等功能。技巧是以事件为驱动,Jmeter的插件很多,挑有用的研究。
6.一个项目分模块,所有模块工程师完成各个模块的测试,发布前还有什么事情要做?
1)大公司的做法时选取几个大的用例(5-10个),把其他用例关联起来,把整个流程跑通
2)验收(用户或者公司内部)
7.app兼容测试怎么做?
推荐云测,如testin,把app扔进去可以选择几十款手机。分两种:一是机器人在真机上测试,二是高级服务,会有资深工程师去测试。测完会出详细报告给客户。
第三节:
1.软件测试是什么?
对象:软件(程序/文档/数据)、系统、产品、项目;
分类:APP/WEB/服务器测试/窗口测试
目的:尽快、尽早地发现软件的缺陷,提高产品质量,提升用户满意度
2.如何选择公司?
分为做产品和做项目的公司。
1)产品如QQ、微信等,由产品经理主导,要选择有前景的产品。
2)项目周期短,由项目经理主导,要频繁的切换项目缺乏沉淀。
3.软件测试如何开展?
需求分析-->测试计划(什么时候测试?测哪些点?哪些人测试?测试时间?)-->编写测试用例-->搭建测试环境-->发现bug-->开发修复bug-->测试验证bug-->总结报告
4.小功能如何测试?
如松勤的留言功能测试,为了减少测试用例,只写三条测试用例(正常的一个、异常的一个、特殊情况的一个)即可。
5.测试报告写什么?
功能测试主要包含
1)被测对象缺陷的数量
2)缺陷状态
3)缺陷分布
4)是否通过
很多团队把手工功能测试、自动化测试、性能测试的测试报告分开总结。
6.什么情况下才算测试完成?--https://blog.csdn.net/meet1992/article/details/49469867
1)全部测试用例回归测试都执行完成
2)未修改的bug都被确认或置为应有状态。暂缓修改的问题都有详尽解释。
3)测试报告编写完成
4)测试收尾工作结束
5)测试总结完成
6)项目处于试运行或上线阶段。继续关注产品试运行出现的问题,并及时录入bug管理系统。
第四节:
1.测试用例是什么?
测试用例就是设计一种情况,软件在这种情况下能够正常运行并达到期望的执行结果。如果程序在这种情况下不能正常运行,而且这种问题会重复发生,那可能就是一个软件缺陷。
2.测试用例从哪里来?
需求。
3.测试用例的作用是什么?--http://www.jnshu.com/daily/107444?total=42&page=42&uid=39427&sort=0&orderBy=3
1)检验软件是否满足用户的需求
2)体现一个测试人员的工作量
3)展现测试用例设计时的思路
4.测试用例包含哪些内容?
模块编号、所属模块、模块描述、用例编号、用例名称、测试点描述、测试背景、前置条件、优先级、重要级、测试环境、测试类型、测试阶段、测试数据、测试步骤、预期结果、实际结果、编写人、执行人、开发者、备注
5.如何设计测试用例?
测试用例设计三部曲:
要测试什么?--业务(支付、游戏、视频、即时通讯等)
怎么样测试?--测试环境搭建
如何判断正确与否?--需求
6.自动化测试的如何划分层次?
1)用自动化工具代替手工测试
2)自己编写代码驱动工具
3)自己编写整个自动化架构,达到自动部署,执行,匹配结果,生成报告
7.自动化框架的原理如何理解?
以功能测试作为核心,编写软件实现用户将测试点、数据、步骤、期望结果放进去点击软件,软件自动执行、匹配结果、生成报告,执行结束发送邮件给用户,用户查看邮件报告可以知道测试点执行情况(成功还是失败,失败原因是什么,失败率多少等)
1)需求(提取出需求点)
2)数据(为这些需求点选择合适的数据)
3)步骤(编写步骤将数据融汇进去)
4)发消息(将消息发送到系统中去)
5)匹配期望结果
6)生成报告
8.测试环境如何搭建?
分为三种
1)搭建测试软件所需要的环境,如安装测试app、web等的环境,可能需要JMeter等
2)测试管理环境搭建,如测试用例、bug、文档等放到哪里管理,可以使用禅道、TestLink、SVN、GIT等管理工具
3)项目本身,可能需要Tomcat,Apache
第五节:
1.学习bug的误区是什么?
很多人学习bug的时候注意力放在如何找到bug,而不是先理解透彻bug是什么
2.为什么要提交高质量的bug?
提交高质量的bug体现测试工程师的存在价值(在用户使用之前发现bug)和能力(发现别人不能发现的bug)。
3.千年虫问题是什么?--https://baike.baidu.com/item/%E5%8D%83%E5%B9%B4%E8%99%AB/2954
计算机2000年问题,又叫做“千年虫”。缩写为“Y2K”。是指在某些使用了计算机程序的智能系统(包括计算机系统、自动控制芯片等)中,由于其中的年份只使用两位十进制数来表示,因此当系统进行(或涉及到)跨世纪的日期处理运算时(如多个日期之间的计算或比较等),就会出现错误的结果,进而引发各种各样的系统功能紊乱甚至崩溃。因此千年虫是一种程序处理日期上的bug(计算机程序故障),而非病毒。
第六节:
1.Level1(基层员工)如何快速发展自己?
关键点是技术和业务能力。刚刚入行时,
1)安装公司的产品和项目来使用而不是先看文档。
2)看别人写的测试用例。
3)看别人的bug。
4)前三步可以快速成为公司的熟练工,之后要有欲得其位,必先谋其政的理念,走出舒适区,想得到更高的地位去做这个岗位的事。
第八节:
1.做接口测试没有文档是怎么办?
自己抓包去编写文档
2.常见的端口号?
http:80
https:443
Mysql:3306
fiddler:8888
postman:5555
Tomcat:8080
四、收获:
1.了解软件测试的学习路线,从计算机技术、软件测试技术、软件测试工具、项目经验、交流沟通这五方面学习。其中新知识需要着重学习。
2.了解软件测试是什么,如何开展软件测试。
3.了解测试用例是什么,作用和包含内容是什么,三部曲。
4.松勤公众号回复面试,硅谷等去看公开课视频
5.松勤测试交流群:797041070
6.了解自动化框架原理
7.提交高质量bug是测试的核心内容
8.了解缺陷的定义、如何发现缺陷、缺陷的流程、缺陷管理工具
9.找公司要找重视测试的公司
10.功能测试是测试软件的从0-1,性能测试是测试软件的从1-N。性能测试的问题都可以追溯到功能测试。功能测试很重要一定要深刻理解。
11.面试相关的内容
12.思维导图是辅助学习的利器
13.做web测试之前,注意清除浏览器缓存
评论