【成为一个优秀的软件测试工程师】

学习内容:

1.专业知识点

1.1 软件功能测试技术

一、掌握:软件需求规格说明书的评审,测试计划,测试用例设计技术,环境搭建,测试执行(缺陷提交、回归测试)、测试报告等。

1.测试用例设计技术(重点)

1) 测试用例八要素:用例编号,测试项目,测试标题,重要级别,预置条件,测试输入,操作步骤,预期输出
2) 关注需求是否发生变更,是否需要修改用例,或者新增测试用例
3)会参考需求文档进行设计
4)概要设计(0、1级用例)、详细设计

2.缺陷提交(重点)
1) Bug标题,Bug时间点,Bug描述,Bug出现步骤,附件(图片,视频),Bug严重程度(致命,严重,一般,提示),优先级(高,中,低)
例子:【RedmiXXX】【MIUI 12.0.6】【黑屏】【严重】【15:00附近】连续按三次音量下键,手机黑屏,后续使用熄屏键可以恢复

3.回归测试
1)问题单流程:
问题提交人提交-----测试经理组审核----开发人员实施修改-----审核人员审核修改----归档-----测试经理组织测试------测试人员回归测试
2)回归测试(Regression testing):指在发生修改之后重新测试,先前的测试以保证修改的正确性。软件产生新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现。
3)实际操作:将开发人员实施修改好的bug,按照测试经理的测试策略,进行测试
4)回归测试分两种情况:回归测试和多轮回归测试
回归测试:开发人员实施修改后,回归测试通过,问题关闭
多轮回归测试:开发人员实施修改后,回归测试通过,问题在下几个版本继续测试。具体几轮,看测试经理的测试意见。
5)小概率回归和重新定级,都需要和测试经理商量

4.软件需求规格说明书的评审
1)项目,项目经理,产品(需求)经理,测试人员,开发人员
2)需求文档的目的为了消除歧义,完善需求细节,最后达成共识
3)开发人员会根据需求文档编写概要设计文档,测试人员会根据需求文档编写测试计划测试用例
4)如何评审需求文档,需要做到六点:
一,正确性,对照用户原始需求,检查产品人员是否偏离需求
二,明确性,检测文档中是否用语清晰,明确,不存在歧义
三,完整性,检查是否覆盖了所有需求,是否存在遗漏
四,限制性,是否清楚描述,这个软件能做什么,不能做什么
五,优先级,需求文档中,哪些功能优先级高,是否做了标识和编号
六,一致性,检查需求文档中内容是否前后一致,不冲突,不矛盾

5)测试人员需要参与需求文档的评审,正确理解其意思后,才能开始测试软件是否达到需求文档中的规格

5.测试计划
1)人员安排、任务安排,进度安排
2)编写测试策略。策略中包含:测试需求点分析,测试模块划分,测试整体的方向,风险的评估与规避措施,测试通过的准备等等

3)测试计划的模板:一、文档标识 二、测试目的 三、测试范围 四、测试环境 五、测试策略 六、测试管理

6.环境搭建
1)测试环境的搭建:在测试环境部署待测软件系统的过程
2)软件环境,例如windows 10操作系统和IE11浏览器
硬件环境,例如计算机配置为酷睿i7的CPU、三星8GB的内存
3)B/S(browser/server)(浏览器/服务器)(重点)
B/S:使用浏览器访问服务器的模式。首先通过浏览器发送请求,服务器接收请求后,响应请求。
前台(用户计算机):呈现给用户的视觉和基本的操作。
后台(Web服务器,数据库服务器):用户浏览网页时,我们看不见的后台数据跑动。后台包括前端,后端。
前端:对应我们写的html 、javascript 等网页语言作用在前端网页。
后端:对应jsp、javaBean 、dao层、action层和service层的业务逻辑代码。(包括数据库)
为什么jsp是后端呢?
主要是:jsp的运行原理----在tomcat服务器运行的。
4)C/S(Client/server)(客户端/服务器)
C/S:在访问服务器之前,通过在计算机上建立一个客户端软件,来进行访问。

7.测试执行
1)查看邮件,群消息等等。分析是否存在,与自己测试模块相关风险问题。
2)按照测试用例进行测试(按用例等级(0,1,2,3),按用例的模块,按测试的模块(界面功能,性能,安全性,易用性,兼容性))
))

冒烟测试:0,1级用例
门槛测试:2级及以上的用例

8.测试报告
1)测试报告中包含:人员,版本,范围,测试方法,需求的变更,测试风险,测试结论等等。
2)测试报告是一份描述测试过程,测试范围,测试环境,测试结果的文档。用来分析总结系统存在的风险以及测试结论。
3)测试过程,测试过程,测试范围,测试环境,测试结果,附件清单

二、掌握: 软件测试的方法

1)从是否关注内部结构:
1、黑盒测试:又称功能测试,是通过测试来检测每个功能是否都能正常使用。所测试的软件像是一个黑盒子,看不见内部结构。测试点是“软件界面”和”软件功能“。
2、白盒测试:又称结构测试、基于代码的测试。与黑盒测试相反,所测试的软件像是一个白盒子,可以看内部结构,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能

2)测试设计方法:
等价类划分法(将测试的范围划分成几个互不相交的子集)
边界值分析法(选出的测试用例,应选取正好等于、刚刚大于、刚刚小于边界的值)
错误推测法(在测试程序时,人们可以根据经验或直觉推测程序中可能存在的各种错误)
判定表法(适合于逻辑判断复杂的场景,通过穷举条件获得结果,对结果再进行优化合并,会得到一个判断清晰的策略)
正交实验法(在各因素互相独立的情况下,设计出一种特殊的表格,找出能以少数替代全面的测试用例)
状态迁移法(主要关注在测试状态转移的正确性上面)
场景法(业务流把各个孤立的功能点串起来,建立整体业务感)
思维导视图(使用思维导图的方式,更直观)

3)按阶段分为:
1、单元测试(Unit Testing):
单元测试是最微小规模的测试,测试的是某个功能或代码块。由程序员而非测试员来做,因为它需要知道内部程序设计和编码的细节知识。
2、集成测试(Integration Testing):
集成测试是指一个应用系统的各个部件的联合测试,以决定他们能否在一起共同工作并没有冲突。部件可以是代码块、独立的应用、网络上的客户端或服务器端程序。这种类型的测试尤其与客户服务器和分布式系统有关。一般集成测试以前,单元测试需要完成。它在单元测试以后和在系统测试之前。
3、系统测试(System Testing): (全面测试)(黑盒测试)
系统测试是将整个软件系统看做一个整体进行测试,包括对功能、性能,以及软件所运行的软硬件环境进行测试。测试人员开始介入。

全面测试:6个测试方面,功能,性能,安全性,易用性,兼容性。
性能测试:测试软件在不同环境和压力下,能否正常使用,性能指标(响应时间,吞吐量,资源占用率)是否达到用户需求的标准。
安全测试:是在软件产品开发基本完成时,验证产品是否符合安全需求定义产品质量标准的过程。验证安装在系统内的保护机制能否在实际应用中对系统进行保护,使之不被非法入侵。提升IT产品的安全质量;度量安全。尽量在发布前找到安全问题予以修补降低成本;

4、验收测试(Accept Testing):
验收测试是基于最终用户的规格书的最终测试,或基于用户一段时间的使用后,看软件是否满足客户要求。一般从功能、性能、用户界面、业务关联性进行测试。由用户执行。

4)从测试所处的环境看
(1)阿尔法测试:是公司内部的其他部门员工在模拟实际操作环境下进行的测试

(2)贝塔测试:是公司组织的beta用户在日常工作中实际使用贝塔版本进行的测试,并要求用户报告

三、测试知识
功能测试:根据功能测试用例,逐项测试,必须覆盖所有的功能模块,检查产品是否达到用户要求的功能
性能测试:就是通过特定的方式对被测试系统按照一定测试策略施加压力,获取该系统的响应时间、TPS、吞吐量、资源利用率等性能指标,来检测系统上线后能否满足用户需求的过程。
安全测试:是在软件产品开发基本完成时,验证产品是否符合安全需求定义和产品质量标准的过程。提升IT产品的安全质量;度量安全。尽量在发布前找到安全问题予以修补降低成本;
自动化测试:让程序代替人为去验证程序功能的过程。(1.代替人工,节约人力资源 2.提升回归测试的效率 3.能更好地利用无人值守时间 4.复用性强)
弱网测试:模拟⼀个弱⽹环境,验证在弱网情况下系统的表现是否能保证用户体验。

功能测试:如何进行功能测试?功能测试点?
如何进行功能测试?
1.界面(UI)测试,功能,性能,安全,易用,兼容,五个方面

功能测试点?
功能:软件功能是否正确有效,功能逻辑清楚,每项功能符合实际要求,满足了产品规格说明书的要求
性能:系统反应速度
安全性:保护用户隐私和信息
易用性:使用的软件功能逻辑清楚,是否有相应的提示框、适当的错误提示,使用方便操作简单
兼容性:使用第三方产品进行测试
数据一致性:软件升级后,能继续支持旧版本的数据

性能测试:如何进行功能测试?
1.用工具去做性能测试 2.性能测试的场景布置 3.性能监控 4.性能分析与调优

性能测试中需要关注的数据有:请求数,平均响应时间,Min,Max响应时间,错误率,吞吐量beyt/s,bit/s,单位时间传递的数据。
自动化测试:如何进行自动化测试?
自动化测试是要在手工测试之后进行的,也就是回归测试阶段,并且经过前期功能测试,已经具备完善的功能测试用例,系统版本也已经比较稳定啦,这就具备了自动化测试的必要条件,下面需要完成几个小任务:

如何进行自动化测试?
1)确认其可行性,是否可以实行测试自动化。满足:1.软件需求变动不频繁 2.项目周期足够长 3.自动化测试脚本可重复使用。
2)测试用例设计,筛选功能测试用例将其转化为自动化用例模板补充、修改不适于自动化的用例,持续维护和优化自动化用例
1.考虑到脚本开发的成本,不要选择流程太复杂的用例 2.选择的用例最好可以构建成场景3.选取的用例可以是主体流程,这部分适用于冒烟测试 (注意:1.一个用例为一个完整的场景,从用户登录系统到最终退出并关闭浏览器 2.一个用例只验证一个功能点,不要试图在用户登录后把所有的功能都验证一遍 3.一条用例完成测试之后需要对测试场景进行还原,以免影响其它用例的执行)
3)测试脚本开发,为了更好地团队合作进行自动化测试,我们需要对项目进行分层管理,可以根据需要划分公共模块部分、测试用例、测试数据、测试报告、测试日志等,并提供执行主模块。
4)测试执行阶段,测试执行结束后,需要对测试结果进行比较、分析以及结果验证,得出测试报告
5)测试总结阶段,对测试结果文件中报告错误的记录进行分析,如果确实是由于被测系统的缺陷导致,则提交缺陷报告。对自动化测试的结果进行总结,分析系统存在的问题,并提交《测试报告》。

如何进行接口测试?

弱网测试:如何进行弱网测试?弱网测试点?
如何进行弱网测试?
1.搭建弱网环境
模拟⼀个弱⽹环境即可。可以通过软硬件⽅式两种。
软件⽅式利⽤模拟⽹络参数来配置弱⽹环境,就可以达到⽬的。 fiddler
硬件方式,屏蔽仪,走到会议室,电梯,减弱网络

2.根据功能测试用例在弱网环境下进行一轮测试,相同模块下的功能可以分多个网络条件进行测试
1)页面图片在弱网环境下加载不出来 (图片加载逻辑需优化)、
2)页面板式结构混乱 (模板文件在弱网环境的加载需优化)、
3)页面响应时间较长没有任何显示 (页面显示逻辑优化、重试机制加入)

3.对照规格说明书,看是否能过保证用户体验

弱网测试点?
1.弱网环境下,功能是否能正常使用,高延时、高丢包
2.不同网络下,2G,3G,4G,wifi,响应时间
3.无网状态测试:断网功能测试、本地数据存储
4.用户体验关注:响应时间、页面呈现&超时文案&超时重连、安全及大流量风险

两个性能指标:丢包和延时
丢包:TCP协议中,需要不停的发送请求,来确认连接状态,一旦发生丢包,就需要重传。
延时:由于网络太差,产生了网络波动,导致数据包在传输的时候出现抖动。

上行是:延迟发送每上传300毫秒,也就是客户端发送请求到服务器
下行是:下载每KB延迟150毫秒,服务器下载速度
你打游戏和服务器的交互分为两种,第一种是你向服务器同步你的信息,第二种是服务器给你同步其他玩家的信息。
第一种为上行,第二种为下行。

1.2 Web自动化测试的初级应用能力

一、熟悉HTML基础

二、Xpath元素定位技术
1、八大元素定位(优先使用级):
1.id,name 2.link_text,partall_link_text(部分超链接本文) 3.css,xpath 基本不用. class_name,tag_name(难以保证唯一)
2、Xpath元素定位技术
相对路径+部分属性值定位
1.开头 // start-with a.find_element(By.XPATH,“//[starts-with(@autocomplete,‘of’)]“).send_keys(“123”)
2.结尾 // substring a.find_element(By.XPATH,”//
[substring(@autocomplete,2)=‘ff’]”).send_keys(“123”)
3.包含 // contains a.find_element(By.XPATH,“//*[contains(@autocomplete,‘ff’)]”).send_keys(“123”)

三、熟悉python面向对象的思想
1、类,对象。类指一类事物,对象指一类事物中的一个具体例子。例如:人(类),女人(对象)
2、类的调用,函数的调用

3、导入模块
1)import:需要使用模块名称

2)form…import:可以不使用模块名称

四、selenium webdriver命令
1)修改浏览器窗口大小
driver.set_window_size(600, 800) #设置浏览器宽高为:600x800
maximize_window() #浏览器最大化

driver.back() #浏览器后退
driver.forward() #浏览器前进

driver.get(‘https://blog.csdn.net/’) # 进入浏览器

driver.refresh() #浏览器刷新

send_keys() #模拟输入指定内容
clear() #清除文本内容

2)鼠标控制(ActionChains类)
click() #单击左键
context_click() #单击右键
double_click() #双击
drag_and_drop() #拖动
move_to_element() #鼠标悬停

source:鼠标拖动的元素
target:鼠标拖至并释放的目标元素
source = driver.find_element_by_xpath(‘xxx’)# 定位要拖动的元素
target = driver.find_element_by_xpath(‘xxx’)# 定位目标元素
ActionChains(driver).drag_and_drop(source, target).perform()# 执行拖动动作

3)键盘控制(Keys 类)
driver.find_element_by_id(‘xxx’).send_keys(‘Dream丶killer’)# 定位输入框并输入文本
driver.find_element_by_id(‘xxx’).send_keys(Keys.ENTER)# 模拟回车键进行跳转(输入内容后)
driver.find_element_by_id(‘xxx’).send_keys(Keys.BACK_SPACE)# 使用 Backspace 来删除一个字符
driver.find_element_by_id(‘xxx’).send_keys(Keys.CONTROL, ‘a’) # Ctrl + A 全选输入框中内容
driver.find_element_by_id(‘xxx’).send_keys(Keys.CONTROL, ‘c’) # Ctrl + C 复制输入框中内容
driver.find_element_by_id(‘xxx’).send_keys(Keys.CONTROL, ‘v’) # Ctrl + V 粘贴输入框中内容

1.3 接口测试的初级应用能力

1、接口测试的流程
1)拿到接口文档,分析接口文档
2)设计测试用例
3)执行测试用例:(测试步骤:请求接口,然后取到返回值,判断实际结果与预期结果是否一致)
4)提交Bug单

2、接口测试工具:postman,jmeter,filldder(抓包)
1)postman:模拟各种HTTP requests,get(查),post(增),delete(删),put(改)
接口自动化,1)新建集合 2)新建接口 3)填写断言(自动化测试脚本) 4)录入所有接口 5)执行自动化测试
常用的五种断言:
1.断言状态码:Status code: code is 200
2.断言状态消息:Status code:code name has string
3.断言返回数据中是否存在某个元素:Response body contains string
4.断言响应时间:Response time is less than 200ms
5.接口返回的数据进行断言:Response body json value check
2)jmeter:基于java语言的压力测试工具,可以做接口测试,也可以做性能测试。一般用于负载测试和压力测试。
三大特色:
1.jmeter可以对静态资源(js,html)以及动态资源(php,jsp,ajax)进行性能测试
2.可以挖掘出系统最大能处理的并发用户数
3.提供了一系列各种形式的性能分析报告(图形结果,聚合报告)
3)fidder:是位于客户端和服务器之间的代理,强大的抓包工具。可以记录client和server之间所有请求。
四大作用:
1.分析请求数据。(http请求/响应数据)
2.设置断点。(调试线上错误)(可设置前/后断点)
3.设置挡板服务器,自动返回各种响应。
4.过滤会话,看自己想看的请求。

1.4 App自动化

1.ANDROID_HOME 环境 和 JAVA_HOME 环境
2.启动服务器 端口是 4723
3.启动会话,放大镜
4.编写运行时,把参数和值输入进去,可以使用可视化的界面输入,也可以使用json输入,
5.pycharm编写脚本,1)导包 2)初始化Android的参数 平台名字(Android/ios),版本 ,设备名,appPackage,appActivity,设置一些输入法的开发,noReset(重置app)
adb shell dumpsys activity recents | find “intent={”(adb命令,查询appPackage,appActivity路径)
6.每次运行,手机都需要安装uiautomator2 (UI优特美特)

2.非专业知识点

2.1 Linux操作系统

2.2 Oracle数据库

2.3 mysql数据库


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值