软件测试经验总结(xieboke.net)
2022-12-27 19:53:44 0 举报
AI智能生成
软件测试经验总结
作者其他创作
大纲/内容
测试基础
软件的定义
计算机程序、程序所用的数据以及有关的文档资料的集合
软件测试的定义
在规定的条件下对软件进行操作,以发现错误,对软件质量进行评估
测试的目的
提高软件质量,发现软件缺陷和错误,对软件质量进行评估
软件的质量特性
功能性
适应性、准确性、互操作性、安全性、功能性的依从性
易用性
易理解性、易学习性、易恢复性、吸引性、易用性的依从性
可靠性
成熟性、容错性、易恢复性、可靠性的依从性
效率性
时间特性、资源特性、效率性的依从性
可维护性
易分析性、易变更性、稳定性、易测试性、易用性的依从性
可移植性
适应性、易安装性、共存性、易替换性、可移植性的依从性
开发模型
瀑布模型
流程
计划、需求分析、设计、编码、测试、运行与维护
优点
上一阶段的变换结果是下一阶段变换的输入、相邻的两个阶段具有因果关系,紧密相连。可用于迭代
缺点
突出缺点是不适应用户的需求变化
V 模型
流程
规格说明书、需求分析、概要分析、详细分析、编码、单元测试、集成测试、系统测试、验收测试
优点
强调了在整个软件项目开发中需求经历的若干个测试级别,并与每一个开发级别对应
缺点
未明确指出对需求和设计的测试,前期的错误要在验收阶段才能发现
W 模型
流程
需求分析、概要设计、详细设计、编码实现、模块集成、系统构建、系统安装
优点
有利于尽早发现问题
缺点
不支持迭代
敏捷开发
定义
一种以人为核心、迭代、循序渐进的开发方法。
在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。
简言之,就是把一个大项目分为多个项目联系、但也可以独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态
在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。
简言之,就是把一个大项目分为多个项目联系、但也可以独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态
优点
精确要求、精确成果(敏捷开发似接力比赛,每一段的赛道都不长,并且还能把握好每次交接棒的时机,遵循计划更响应变化,这使成果变得十分精准)
质量有保障(敏捷方法对每一次迭代周期的质量都有严格要求)
客户合作胜过合同谈判(好的团队会更在乎与客户合作的这个过程)
投资回报率高(在敏捷开发过程中,最具有价值的功能总是被优先开发,这样能给客户带来最大的投资回报率)
较高的开发速度(敏捷团队只专注于开发项目中当前最需要的,最具有价值的部分。这样能很快的投入开发。另外,较短的迭代周期使团队成员能迅速进入开发状态)
适用范围
项目团队的人数不能太多,但可以分割成很多小项目
项目经常发生变更
高风险的项目实施
开发人员可以参与决策
技术分类
XP 极限编程(Extreme Programming)
极限编程侧重于实践,并力求把实践做到极限。这一实践可以是测试先行,也可以是结对编程等,关键要看具体的应用场景
SCRUM 框架
一种开发流畅框架,也可以说是一种套路
SCRUM 框架中包含 3 个角色,3 个工作,4 个会议,5 个价值,听起来很复杂,其目的是为了有效地完成每一次迭代周期的工作
3 个角色
产品负责人(Product Owner)
Scrum Master
开发团队
3 个工作
产品 backlog(Product Backlog)
4 个会议
Sprint(Sprint 本身是一个时间,包含下面 4 个事件)
Sprint 计划会议(Sprint Planning Meeting)
每日站会(Daily Scrum Meeting)
Sprint 评审会议(Sprint Review Meeting)
Sprint 回顾会议(Sprint Retrospective Meeting)
5 个价值
承诺
愿意对目标做出承诺
专注
把你的心思和能力都用到你承诺的工作上去
开放
Scrum 把项目中的一切开放给每个人看
尊重
每个人都有他独特的背景和经验
勇气
有勇气做出承诺,履行承诺,接受别人的尊重
软件的生命中周期
需求、设计、编码、测试、维护、升级、废弃
软件测试流程
需求分析、测试计划、测试方案、编写和评审测试用例、执行和修整测试用例、测试报告
测试开始条件
软件测试在项目启动、需求分析的开始的时候随之开始
测试结束条件
需求覆盖率达标、用例执行率达标、缺陷遗留率达标、软件质量目标达标
测试类型
按阶段划分
单元测试
对软件中的最小可测试单元进行检查和验证。对象是代码,程序员自测
集成测试
所有模块按照设计要求组装成子系统或者系统进行测试。对象是模块,程序员或者测试人员测试。
确认测试
目的是向未来的用户表明系统能够像预定要求那样工作
系统测试
目的是验证系统是否满足了需求规格的定义
范围是:功能、安全、兼容、性能、界面、安装卸载升级、易用
验收测试
非正式验证
α 测试
软件开发公司组织内部人员模拟各类用户行为对即将上线的产品进行测试
β 测试
软甲能开发公司组织各方面典型用户在日常生活工作中实际使用,并要求用户报告异常情况、提出改进意见,然后公司再进行完善
正式验收
有正规的测试过程,需求制定测试计划、定义测试方案、选择测试用例,进行测试,结果提交
按是否运行程序
静态测试
桌面检查、代码审查、检查代码、界面、文档
动态测试
实际运行被测试的软件、输入响应的测试数据、检查实际的输出结果是否和预期结果一致的过程
按是否看代码
黑盒测试
也称 功能测试。不管内部逻辑和内部特性,只依据规格说明书检查程序的功能是否符合功能说明
白盒测试
也称 结构测试。着重于程序内部结构和算法,不关心功能和性能指标
灰盒测试
介于黑盒和白盒测试之间,基于程序运行时刻的外部表现同时又结合程序内部逻辑结构来设计用例,
执行程序并采集程序路径执行信息和外部用户接口结果的测试技术
执行程序并采集程序路径执行信息和外部用户接口结果的测试技术
其他类型
回归测试
对软件的新版测试时,重复执行上一个版本测试时使用的测试用例
冒烟测试
也称 BVT 测试,对象是每一个新编译需要正式测试的版本,目的是确认软件的功能功能正常,可以进行后续的正式测试工作
随机测试
也称 猴子测试
敏捷测试
高度迭代,有周期性,并且能够及时、持续地响应客户频繁的反馈。
自动化测试
UI 自动测试
API 自动化测试
性能测试
压力测试
在强负载(大数量,大并发用户)下的测试
负载测试
模拟实际软件系统所承受的负载天剑的系统负荷,通过不断加载(如:逐渐增加模拟用户的数量)或者
其他加载方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(如:CPU、内存)等,
以检验系统的行为和特性,以发现系统可能存在的性能瓶颈、内存泄露、不能实时同步等问题
其他加载方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(如:CPU、内存)等,
以检验系统的行为和特性,以发现系统可能存在的性能瓶颈、内存泄露、不能实时同步等问题
安全性测试
业务安全
账号体系
业务场景
注册
恶意注册
虚拟机注册
手机墙操作
短信接口
短信轰炸
登录
扫号
撞库
盗号
密码找回
洗号
短信接口
短信轰炸
风控措施
注册
手机号反欺骗查询
注册频次异常阻断
登录
扫号&撞库
IP、UA 等多维度黑名单机制
频次异常阻断
验证码机制(图形、语音、滑动等)
盗号
异地登录二次验证
异常设备登录二次验证
密码找回
前端提示不要透露过多信息
内容安全
业务场景
文字内容
信息防爬
敏感过滤(黄色、反动、暴力、政治等)
图片内容
信息防爬
信息防盗(添加水印)
敏感过滤(黄色、反动、暴力、政治等)
视频内容
音频内容
风控措施
流程安全
业务场景
风控措施
活动安全
业务场景
风控措施
支付安全
业务场景
风控措施
数据安全
数据库安全
缓存数据安全
传输数据安全
代码安全
代码管理
代码加固
代码混淆
需求分析
定义
开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性具体要求,将用户非形式的需求表述转化为完整的需求定义
特征
测试需求项必须是可核实的
指明满足需求的正常的前置条件,同时也要指明不满足需求时的出错条件
测试需求不涉及具体的数据
评审
评审人员
软件项目组所有成员
评审标准
完整性
每项需求都必须将所要实现的功能描述清楚
正确性
每项需求都必须准确地陈述其要开发的功能
可行性
每项需求都能通过设计测试用例进行测试
必要性
每项需求的制定都是必要且能追溯的
为什么有这个需求
优先级
无二义性
对所有的需求说明都只能有一个明确统一的解释
可验证性
可跟踪性
测试计划
测试计划提出“做什么”
是描述所有需要完成测试的工作,包括被测试的项目的背景、目标、范围、方式、资源、进度安排、测试组织、测试开始和结束条件,
本次测试计划的审批与变更方式,以及测试有关的测试风险等方面
本次测试计划的审批与变更方式,以及测试有关的测试风险等方面
测试方案
测试方案明确“怎么做”
是描述所测软件的测试特性、方式方法、测试用例设计、测试代码设计、测试环境规划以及测试工具设计、选择的一种策略与方法
测试用例
构成要素
核心要素
用例名称、重要级别、操作步骤、期望结果、实际结果
用例设计方法
等价类划分法
邮箱注册账号类型
边界值分析法
年份范围
场景法
因果图法
错误推断法
正交实验法
用例评审
评审人员
部门人员
测试人员
公司评审
产品人员
开发人员
项目经理
架构师
测试人员
客户评审
客户方
产品人员
开发人员
测试人员
我放(公司评审)
产品人员
开发人员、
项目经理
架构师
测试人员
评审标准
用例设计的结构安排是否清晰、合理,是否利于高效对需求进行覆盖
优先级安排是否合理
是否覆盖测试需求上的所有功能点
用例是否具有很好的可执行性
用例的前提条件、执行步骤、输入数据、期望结果是否清晰、正确
期望结果是否有明显的验证方法
是否也已经删除了冗余的用例
是否包含充分的负面测试用例
如果在这里使用2&8法则,那就是 4 倍于正面用例的数量,毕竟一个健壮的软件,
其中 80% 的代码都是在 保护 20% 的功能实现
其中 80% 的代码都是在 保护 20% 的功能实现
是否从用户层面来设计用户使用场景和使用流程的测试用例
是否简洁、复用性强
可将重复度高的步骤和过程抽取出来定义为一些可复用的标准步骤
评审原则
用语简洁清晰、但不能过于简单
用语无歧义、尽量少用过长的句子
用例的各要素要齐全,不能有缺失
用例的步骤应该详细、操作应该明确
容易被其他工程师读懂,并顺利执行
缺陷(BUG)
核心要素
缺陷编号
缺陷描述
言简意赅、错误日志、图文并茂
严重级别
致命
重要功能未实现;造成系统奔溃、死机,并且不能通过其他方法实现功能;
常规操作造成程序非法退出、死循环、通讯终端或异常,数据破坏丢失或者数据库异常、
且不能通过其他方法实现功能的问题。
常规操作造成程序非法退出、死循环、通讯终端或异常,数据破坏丢失或者数据库异常、
且不能通过其他方法实现功能的问题。
严重
使系统不稳定、不安全、或者破坏数据、或产生错误结果,
而且是常规操作中经常发生或者非常规操作中不可避免的问题
而且是常规操作中经常发生或者非常规操作中不可避免的问题
一般
程序的功能运行基本正常,但是存在一些需求、设计或者实现上的缺陷;
次要功能运行不正常
次要功能运行不正常
轻微
程序在一些显示上不美观,不符合用户习惯,或者一些文字性的错误
建议
可以提高产品质量的建议,包括 新需求和需求的改进,使产品更好的服务于用户
预置条件
复现步骤
实际结果
期望结果
生命周期
发现、提交、判断、分配、处理、验证、修改完成、关闭
BUG 状态
new 新建、open 打开
Dev Fixed 已修复、 invalid 无效、 wontfix 承认不修复、duplicate 重复、work for me 待解决
reject 拒绝
Tester reopen 重新打开、closed 关闭
测试报告
数据统计
人力投入情况
测试用例覆盖情况
问题分类统计
遗留 bug 情况
数量
具体缺陷
遗留原因
测试风险
进度风险
质量风险
人员风险
成本风险
需求变更风险
测试对象评估
代码审核
合理性分心
测试结论
测试通过
测试不通过
测试建议
测试技能
测试工具
代理工具
Fiddler
windows 下推荐使用,免费的
弱网测试、数据校验、数据篡改、数据mock、发送请求、编写脚本
Charles
花瓶,Mac 下推荐使用,收费的
Proxyman
Mac 下使用,部分免费
whistle
全平台代理工具,nodejs 写的
接口测试
UI 类
Postman
apifox
soapUI
jmeter
代码类
httprunner
requests
pytest
unittest
自动化测试
APP UI 自动化
appium
airtest
macaca
WEB UI 自动化
selenium(webdriver)
find_element(s)_by_id
find_element(s)_by_xpath
find_element(s)_by_link_text
find_element(s)_by_partial_link_text
find_element(s)_by_name
find_element(s)_by_tag_name
find_element(s)_by_class_name
find_element(s)_by_css_selector
robot Framework
数据驱动型
API 自动化
httprunner
jmeter
soapUI
apifox
性能工具
APP 性能
perfdog
FPS
CPU
内存
耗电量
jank(卡顿次数)
流量消耗
H5 性能
Chrome dev(F12)
https://pagespeed.web.dev/
API 性能
jmeter
常用
Locust
python 语言
LoadRunner
收费
编程语言
python
https://www.runoob.com/python3/python3-tutorial.html
java
https://www.runoob.com/java/java-tutorial.html
go
https://www.runoob.com/go/go-tutorial.html
前端基础
html 标签
https://www.runoob.com/html/html-tutorial.html
css 样式
https://www.runoob.com/css/css-tutorial.html
js 入门
https://www.runoob.com/js/js-tutorial.html
Linux
常用命令
cd
切换目录
mv
移动、剪切
cp
复制
ps
查看进程
ps -ef | grep python3
ps aux | grep python3
top
查看 CPU 使用情况
free
查看 内存使用情况
free -h
df
查看 硬盘使用情况
df -h
nestat
查看端口状态
netstat -nlpt
find
在指定目录下查找文件
vi/vim
文本编辑器
tail
查看文件内容,-f 循环读取
tail -200f xx.logs
|
管道符
命令格式:命令A|命令B,即命令A的正确输出作为命令B的操作对象
三剑客
grep
用于查找文件里符合条件的字符串
awk
一种处理文本文件的语言,是一个强大的文本分析工具
sed
利用脚本来处理文本文件
shell 脚本
UI 连接工具
xshell
SecureCRT
Termius
Android SDK
adb
路径:sdk_r24.4.1\platform-tools
CMD 终端
安装
adb install 包的路径
卸载
adb uninstall 包名
上传
adb push
下载
adb pull
查看日志
adb logcat
-v -v -v
adb shell
adb shell monkey
adb shell monkey -p 包名 -s 50 --ignore-crashes --ignore-timeouts --monitor-native-crashes --throttle 50 -v -v -v 100000 > E:\monkey_log.txt
adb shell dumpsys
cpuinfo
meminfo
batteryinfo
netstats
adb shell /systme/bin/screencap -p /sdcard/screenshot.png
adb shell am
adb shell pm
aapt
路径:sdk_r24.4.1\build-tools\27.0.1
CMD 终端:aapt dump badging 包的路径
作用:导出 apk 包的信息
uiautomatorviewer
路径:sdk_r24.4.1\tools\bin
作用:用来扫描和分析 Android 应用程序的 UI 控件的工具
monkeyrunner
路径:sdk_r24.4.1\tools\bin
CMD 终端:monkeyruner
MonkeyRunner
MonkeyDevice
MonkeyImage
脚本语言:Python2.x./3.x
AVD Manager
作用:安卓模拟器创建和管理
SDK Manager
作用:Android SDK 管理
DDMS
作用:日志查看等
Android Device Monitor 已在 Android Studio 3.1 中弃用,并已从 Android Studio 3.2 中移除。
iOS
基本命令
libimobiledevice
iOS 命令行调试工具
http://www.libimobiledevice.org
ios-deploy
一个终端安装和调试 iPhone 应用的第三方开源库
FBSimulatorContorl
模拟器多开
数据库
增
INSERT INTO 表名(列名1, 列名2,...) VALUES(值1, 值2, ...);
字段名不用加引号
删
DELETE FROM 表名 WHERE 条件;
删除的数据可部分恢复,删除速度比较慢
TRUNCATE TABLE 表名;
一次性删除,不可恢复,删除速度较快
改
UPDATE 表名 SET 列名=值, 列名2=值2,... WHERE 条件;
查
SELECT *|列名|表达式 FROM 表名 WHERE 条件 ORDER BY 列名;
子查询
左连接
右连接
排序
order by 字段名 desc、asc
分组
group by 字段名
限制条数
limit
数据统计
count
UI 管理工具
navicat
sqlyog
DBeaver
缓存
redis
增删改查
UI 管理工具
RedisDesktopManger
Another Redis Desktop Manager
平台开发
专项测试平台
质量监管平台
设备批量管理平台
代码分析平台
持续交付平台(DevOps)
测试素养
责任感
要对所测试的对象质量负责,要能保证测试的覆盖到每一个需求点,同时要能保证功能都可以正确实现等或者达到测试通过的标准
信心耐心
有一定的耐心来保证不在枯燥的重复劳动中放过哪些细小的缺陷
自我学习
无论哪个行业,都不能停止不前,自我提高是必须的
主动积极
自己的工作不要设边界,不要只局限在领导安排的任务内
积极主动帮助其他同事和主动承担测试任务
积极思考和行动
可以思考产品设计问题并找产品积极沟通
可以思考产品结构设计问题,经常和架构师沟通
好奇心
一定要抱有怀疑一切的态度,从多个方面考虑,认为产品每个功能都有可能出现问题
沟通交流
在提交问题的时候,要做到条理清晰,必要时配上图片和错误日志以便于别人理解
还需要和项目人员、产品人员了解最新的客户需求,要和开发人员沟通以便解决缺陷
0 条评论
下一页