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