1.1为什么需要软件测试?
测试流程:(1)将所有的经理根据客户需求来编写需求文档
(2)开发根据需求文档来编写代码
测试需要根据需求文档编写测试计划
(3)开发人员实现代码
测试人员编写测试用例
(4)编码结束之后由开发人员将代码上传测试人员需要将代码下载并实现冒烟测试冒烟测试通过后 在实现全面测试(如果发现bug需要将bug提交给开发人员 开发解决问题之后测试人员需要进行回 归测试)
(5)测试人员需要将测试报告以及测试用例整理文档方便项目版本迭代的使用
1.2为啥选择测试
(1)测试需求越来越多
(2)开发人员是来创造世界,测试人员是将世界变得更美好
为什么不让开发人员自己做测试?
1、很多测试人员本身就是开发出身
(1)从专业角度去看.让专业的人员去做专事
(2)从思维定势:开发永远的真谛是我的代码没问题
(3)从测试力度:开发人员不会舍得
(4)从客户角度:用户会有千奇百怪的想法或者是超出想象的思维
1.3.2软件测试的作用?
(1)通过测试工作可以发现并修复软件中存在的缺陷,从而使软件的寿命增长客户使用信心增强
(2)测试可以记录软件在运行过程中产生的一些数据从而为决策提供数
(3)测试可以降低同类产品开发遇到的风险
1.4软件测试的原则:
(1)测试证明软件是存在缺陷的
(2)不能执行穷尽测试
(3)缺陷存在群集现象(2:8原则 20%核心功能 )
(4)测试应提早介入(从定义需求的时候就有了测试)
(5)某些测试需要依赖特殊环境(操作系统浏览器不同得到手机或者手机版本)
(6)杀虫剂现象
(7)不存在缺陷谬论(开发人员说自己的代码没问题的时候你怎么办?)
测试级别:
软件开发都由自己的开发模型(瀑布v vv h)
测试人员会根据对软件的操作步骤进行测试级别分类:
(1)单元测试(UT)
在软件测试中,单元就是组成软件的最小单位(类函数组件)
(2)集成测试(IT)
将多个不同的模块进行组合在一起进行验证(接口是否ok)
(3)系统测试(ST)
测试人员充当用户对软件进行测试
(4)验收测试
软件发布之后由客户实现买单
1.6系统测试分类:
1.功能测试验证当前软件的主体功能是否ok
2.兼容性测试验证当前软件在不同的环境下是否ok
3.安全测试验证软件是否只有授权用户提供功能是使用
4.性能测试验证软件是否消耗其他的资源
1.1测试用例的定义
为了特定目的而设计的一组输入测试,执行条件,预期结果为了验证该功能是否满足需求。
测试用例作用:
测什么怎么测
Eg: 手机
按开机键相当于一组输入测试
手机是否有电执行条件
能够正常显示预期结果
手动按开机键测试过程
1.2如何编写测试用例
1. 测试用例都是wps表来进行编写
测试用例中含有
(1)编号该用例的编号
日期
(2)测试人员
(3) 项目
(4) 分项目
(5)执行条件
(6)测试过程
(7) 预期结果
(8) 实际结果
在公司内测试人员需要大量的编写测试用例一天至少30-50条测试用例的编写
测试用例的模板公司都不一致
1.3 bug的优先级
1.致命缺陷
2.严重bug
3.一般bug
1.4测试用例的设计方法
等价类划分
使用场景:在有输入框使用等价类划分以及边界值法混合使用
按照需求将穷尽数据进行分类区分去有效的数据和无效的数据
有效数据成为有效等价类
无效数据成为无效等级类
边界值
使用场景:在有输入框使用等价类划分以及边界值法混合使用
有效边界值1-100
无效边界值-1 ---负数的无穷尽
101--整数的无穷尽
3.因果法
应用场景:
一个界面有多个操作,多个操作之间有一定的组合关系或者是限制关系
输入不同的操作会产生不同的效果
]4.场景法
应用场景:
在界面没有过多的填写项,所有的操作都是通过鼠标的单击双击
金融类游戏类硬件交互类
ATM取款机
取款失败的场景:
1.密码错误
2. 账号余额不足
3. Atm中没有钱
4.吞卡
5.超限
6. 无效的银行卡
7非银行卡
5. 判定表
6.正交
7. 随机法
使用场景:列表数据中实现随机数据
在无穷中的数据中随机选择进行测试
1.1测试强度
测试强度在有需求文档或者api的时候可以根据需求文档测试
在没有测试文档或者是api的时候,可以根据个人经验是否测试
考虑的因素:
1. 2个整数(正整数 负整数)
2. 2个输入框是否为空
3. 特殊符号
4. 中英文字母/汉字
5.提醒框/输入框是否重置
Bug是指在代码中存在的
1.2软件缺陷
定义:缺陷就是软件的问题,最终表现为没有客户的需求
1.3哪些属于软件缺陷
1. 软件没有达到规格说明书定义的功能
2. 软件出现了规格说明书上指明不能存在的错误
3.软件功能超出了说明书上的范围
4.软件测试人员或者用户觉得不友好的
5.软件未达到说明书上应该具有的功能
1.4软件缺陷的表现形式
1.功能上没有实现或者部分没有实现
2.设计不合理功能不明确的逻辑不清楚的或者是逻辑本身就是存在矛盾
3. 实际结果与预期结果不同
4. 没有达到规格要求说明书上的要求性能指标
5. 运行有错的崩溃中断页面混乱
6.数据不正确精度不够不完整或者是格式不统一
7.用户不能接受的问题。如果存取时间过长,页面不美观小广告太多
8.硬件或者软件存在的其他问题
1.5软件缺陷的状态(生命周期)
1. 提交--测试人员提交发现的缺陷给开发
2. 打开--将缺陷转一个待处理的状态
3.拒绝--开发者不认为这是一个缺陷
4. 修复--开发者将缺陷进行修改
5.关闭--测试人将进行回归测试之后认为该缺陷已经解决后
6. 推迟--将问题持续到下一个版本中在去解决 但是要记录详细的修复日期或者版本
测试人员新提交的缺陷为新建状态,在确认有效后将缺陷状态改为打开状态,
开发人员修改后已修复状态测试人员需要进行回归测试,如果验证问题已解决将状态改为修复状态如果经过回归测试验证缺陷依然存在将缺陷的状态改为打开状态让开发再次修复。如果开发人认为此缺陷需要延期修复将缺陷的状态改为延期(推迟状态)
延期的时候有项目负责人开发主管测试主管确认才可以延期否则还是打开状态
1.6软件缺陷的严重程度进行划分
1. low --表面性错误
2.Medium --影响到一个对立的功能,仅仅发生在特定条件下 与需求定义的不台一直 断断续续的出现的问题
3. High --功能点没有实现不符合客户的需求 导致丢失数据
4. Veryhigh --频繁死机 大部分功能不能使用
5.Critical --系统瘫痪 异常退出 死循环 严重计算失误
结局缺陷的优先级
1.low --时间和资源允许情况下进行修复
2.Medium --不会延迟发布
3. Highh --必须在发布之前解决
4. Veryhigh --必须解决
5. Critical --
1.7软件的缺陷的分类:
1.系统缺陷
2.数据缺陷
3.数据库缺陷
4.接口缺陷
5.功能缺陷
6.安全性缺陷
7.兼容行缺陷
8.性能缺陷
9.界面缺陷
17缺陷报告
1.7.1书写规范:
1.标题简洁 提供缺陷的本质信息即可
2.复现的步骤要详细 可以用数字编号(测试用例的编号)
3.实际结果要描述浮现后的结果
4.列出期望结果(在测试用例中存在期望结果可以不写)
5.提供条件(可以在测试用例)
6.提供严谨的测试报告给开发人员
缺陷报告的使用以及测试用例的案列https://blog.csdn.net/weixin_41948075/article/details/89287926
Mysql
1.1数据库的介绍:
数据库从小到大的分类:
大型数据库Oracle Db2
中型数据库sqlserver
小型数据库mysql
微型数据库sqlite
1.2数据库的安装
数据库分为服务端和客户端
客户端分为常用的可视化工具类:猫抓小海豚
安装的注意事项:
1.如果安装失败需要在注册表将数据完全删除(运行输入regedit使用ctrl+F 查找并删除)
2.安装的时候一定要更改编码utf-8
3. 允许多个人员多数据库的访问
4. Mysql的端口号 3306 mysql只有用户权限 root
5. 卸载mysql的服务端 同时将文件安装后的文件夹删除
1.3数据库的数据类型
整数类型int bigint
小数类型float double
字符串类型char(10)数据库会分配一个长度为10个空间 长度是不可以 发生改变
Varchar(10)数据库会分配一个长度为10个空间 长度是可以发生改变的
时间类型date time datatime timestamp(时间戳)
大数据类型blob clob
文本类型text
1.4 sql的分类
DDL数据库定义语言 create alter drop (对库和表的操作)
DCL数据库控制语言 grant revoke
DML数据库的操作语言 insert into update delete
DQL数据库的查询语言 select order by group by limit inner join left join right join
1.5 sql的注意事项
1. mysql不区分大小写
2.数据库的中注释以 # /**/ --
3.数据库的 “” ‘’没有区别
1.6sql表语句
1. 查看所有数据库
Show databases
2. 新建数据库
Create database数据库的库名
3.删除数据库
Drop database数据库的库名
4. 切换数据库
Use数据库库名
5.查看当前数据库的表
Show tables
1创建表
Create table表名(
字段名数据类型约束条件,
字段名1数据类型1,
字段名2数据类型2,
)
Sql约束条件:
自增auto_increment
主键primary key
非空not null
唯一unique
默认值default
外键foreign key(实现多表的联查)
Eg:
Crate table student(
Id int primary key auto_increment unique,
Stu_id int not null unique,
Stu_name varchar(20),
Stu_sex default sex(‘男’),
Stu_age int
)
1.6.2对表结构的操作
查看表结构
Desc表名 查看的是表的 字段名 数据类型 约束条件
查看建表语句
Show crate table表名
修改表名
Alter table旧表名 rename 新表名
修改字段
Alter table表名 change 字段名 新字段名 数据类型
添加字段
Alter table表名 add 字段名 数据类型
删除字段
Alter table表名 drop 字段名
删除表
Drop table表名
1.6.3对表的增 删 改
增:
[if !supportLists]1. [endif]单条数据的增加
Insert into表名(字段名) values (字段值)
[if !supportLists]2. [endif]多条数据的增加
Insert into表名 (字段名) values (字段值1),(字段值2),(字 段3).。。。。
删除:delete from表名 where 删除条件
[if !supportLists]1. [endif]物理删
将数据从数据库中删除
[if !supportLists]2. [endif]逻辑删
将数据的状态从1改为 0 (0 为不显示 1显示)
修改:
Update form表名 set 字段名=字段值 where 条件
跟新一行一列
Update表 set 字段名 = 字段值 where id = 1
更新一行多列
Update表 set 字段名 = 字段值 where name=‘张鹏’
更新多行一列
Update表名 set 字段名 = 字段值 where id>=3 and id <=5
跟新多行多列
Update表名 set 字段名 = 字段值 where id = 2 or id= 3
跟新多个字段
Update表名 set 字段名1= 字段值 1, 字段2 = 字段值2 where 条件
1.6.4对表的查询
1. 查询所有:(*代表的是通配符 代表所有数据 可以换成 具体的字段查询)
Select * from表名
2.条件查询
Select * from表名 where 条件
1. 区间查询
Select * from表名 where id >3 and id<5
Select * from表名 where id >3 or id<5
[if !supportLists]2. [endif]排序查询order by
升序asc(mysql中默认的就是asc)
降序desc
Select * from表名 order by stu_age asc/desc
1.分页查询limit初始值,记录行数(每页显示的行数)
Select * from stu limit 0,3
每页记录数pagesize
页码数pageNumber
Limit(pageNumber-1) * pagesize , pagesize
真分页将查询出来的所有数据直接分页
假分页将查询出来的所有数据在页面展示的时候在进行分页
2.去重查询distinct一般和聚合函数一起使用
3. 模糊查询like
%相当于任意字符
_相当于一个字符
Select * from表名 where 字段名 like ‘%张%’
Select * from表名 where 字段名 like ‘张_’
4. 分组查询group by
Select * from表名 group by sex =‘男’
5.having实现分组进行查询
1.7聚合函数
1.7.1求和
Sum(字段名)
Select sum (stu_age) from表名
1.7.2求平均
Avg(字段名)
Select avg(stu_age) from表名
1.7.3求最大值
Max(字段名)
Select max(stu_age) from表名
1.7.4求最小值
Select min(stu_age) from表名
1.7.5求总的行数
Select count(stu_id) from表名
1.8单表查询的公式
Select分组条件 或者 聚合函数
From表名
Where条件 1
Group by分组条件
Having分组后的条件
Order by排序条件
Limit起始位置,记录数
1.9多表联查
--实现使用笛卡尔积
--内连接 INNER JOIN
--外连接 左外链 LEFT JOIN
-- 右外联RIGHT JOIN
-- student和中间表 stu_subject 实现相连
select stu_name,sj.subjectname from student as stu
INNER JOIN stu_subject as stu_sub
ON stu.stu_id = stu_sub.stu_id
--中间表和 subject 表实现相连
INNER JOIN `subject` as sj
ON stu_sub.subjectnumber = sj.subjectnumber
1.2linux
在liunx中
/根目录
Etc安装软件后需要在etc进行修改配置文件
Home用户目录
Bin存放二进制文件
Ure是用来存放文件的类似于window的具体e盘符
Dev是用来挂外接设备
1.3linux的常用命令
Ls展示数据
Cd进入的目录下
Mkdir创建文件夹
Touch创建文件
Vi文件名
I:编辑
Esc退出编辑状态
:wq进行保存
Cat文件名 查看文件内容
Rm删除文件名
Rm -r删除文件夹
Mv是重命名的话 mv 旧文件名 新文件名
Mv是移动 mv 文件名 移动的目的地的路径
Cp复制 cp 源文件 复制到的路径名
ADB命令
1. 连接手机
2. 打开开发者模式
3. 打开usb调试
4. 在黑窗口中输入 获取设备列表: adb devices 终止adb进程: adb kill-server
5. adb install apk直接路径,这种安装必须是没有这个apk,如果手机上有这个apk是安装不成功的,如果有apk想安装必须使用 adb install -r apk直接路径,这样安装的apk以前的数据是不会消失的会在手机上实现安装
6. 卸载apk, adb uninstall 应用包名字: 在Android 注册文件里面有个package里面可以找到包名
注意1.将apk文件后缀名改为zip 实现解压
2.需要jar包 AXMLPrinter2.S.jar 并放在解压后的文件统一目录下
]3. 在路径上输入cmd
4. java -jar AXMLPrinter2.S.jar AndroidManifest.xml >> AndroidMainfest1.xml(自定义)
5.实现反编译在多出来的文件中文件名自定义的里面寻找包名package="com.codeest.geeknews"
6. 在黑窗口中输入adb uninstall 应用包名字实现卸载
卸载apk同时保留数据和缓存: adb shell pm uninstall -k 应用包名字
7. 获取当前手机所有的包名:adb shell pm list packages
8. 清除指定应用缓存:adb shell pm clear 包名
9. 获取应用路径: adb shell pm path包名:
10.从Android 设备下载文件到pc, adb pull <remote> <local>
Remote: Android 手机文件的直接路径
Local: 需要下载到的地方的直接路径
11.列出目录内容: adb shell ls
12: adb shell :进入手机里面的环境里面:
(1): cd 文件名字切换目录
(2): ls 展示所有文件
13: adb shell netstat: 网络统计:
14:打印日志文件: adb logcat:
Monkey命令
monkey在本地电脑必须配置Android_HOME环境和Path环境,
ANDROID_HOME=/Volumes/sd1/Android/sdk/(就是我们SDK的路径) PATH=${PATH}:/Volumes/sd1/Android/sdk/platform-tools/:/Volumes/sd1/Android/sdk/tools path 配置两部分, platform-tools 和sdk/tools 只有有了这两部分才能使用monkey进行稳定性测试。
1.查看设备的链接情况:adb devices
2.手机里面的软件随机点击:adb shell monkey 1000
负载测试
是应用在重负荷下的表现
是测试对象在不同的工作量的条件下的性能表现,以及持续正常的运行能力
目的确保系统在超出最大的预期工作量的情况下仍旧能够正常的运转
评估性能特征以及响应时间事务处理的速率以及其他与时间上有关的方面测试
强迫测试
在交替进行超负荷和性能测试的一种说法
也是用于测试对象在超出负荷中状态下进行的功能测试
对某一个测试点进行输入大量的重复输入或者是大量数据的输入针对数据库一个复杂查询
压力测试
对测试对象的任何测试点在少量的计算机或者是资源匮乏的情况下进行的测试
对cpu内存 服务器等硬件上的测试 一般做并发测试
安全测试
测试对象在授权的情况下进行的测试
1. 非法截取或者破译口令
2. 专门定义的测试脚本来破坏测试对象的保护
3. 故意导致系统失败或者非法进入系统
4. 试图使用浏览器的url地址进行拼接而达到
5. 使用使用sql语句注入的方式
Charles
1. 应用场景:
前后台在某个功能上的迭代,约定好接口的数据格式(json) 前段来通过软件的重定向功能来模拟服务器的响应得到不同的结果
手动实现复现一些服务器响应错误500 404 400 300 405
作业:熟悉服务器的不同的状态码
在弱网的环境下实现模拟
2. 目的:
合法截取到接口以及参数返回值图片文件。。
3. 工具的安装
1、直接傻瓜试安装exe文件
1、在https://www.zzzmode.com/mytools/charles/网站实现根据不同的版本下载不同破解压缩包
2、替换掉在lib文件下jar包
Charles抓包的具体实现步骤:
https://blog.csdn.net/liuwkk/article/details/81258522
在抓取移动端的https协议的时候安装证书路径
Charlspoxy.com/getssl
Jmeter
用来进行性能测试压力测试接口测试
Jmeter下载页面
http://jmeter.apache.org/download_jmeter.cgi
后缀名为.zip可以用在可视化系统 woindows mac
后缀名为.tgz 可以用在linux系统上
下载之后解压并配置环境变量
在环境变量中设置--系统环境变量中
Jmeter性能测试
面试题:http和https的区别
针对http请求
步骤:
1. 在测试计划中添加线程组
2. 在线程组中添加http请求
3.在http请求中进行添加元素
4. 添加响应断言
5. 添加查看结果树
6. 添加聚合报告
针对https请求
1. 在使用https协议的时候需要下载并安装证书下载需要在网址的url地址栏中点击锁
2. 一路下一步直至导出证书.cer文件
3. 将.cer文件编译成.store 需要使用jdk目录下的bin文件下的keytool.exe文件
在黑白窗口中使用命令
Keytool -import -alias "jiuyue.store" -file
"C:/Users/Administrator/Desktop/a.cer" -keystore
"C:/Users/Administrator/Desktop/jiuyue.store"
4. 在jmeter中添加线程组
5. 添加http请求
6. 添加断言
因为是向服务器发出请求得到的测试模式为抓包得到的json
7. 添加结果树
如果需要进行压力测试100个线程同时发布10个请求
8. 在聚合报告中可以查到结果
Jmeter的脚本录制
脚本录制方式有2种
1. 使用第三方的boadboy的软件
在url地址栏中输入一系列的业务需求 打开不同的页面以及参数
点击红点停止录制
在file菜单中选择 export jmeter 会生成.jmx文件
打开jmeter中选择文件中的打开
会自动生成一个线程组在线程组中的步骤是具体的每一个接口
任何一个http请求 都会自动生成 路径。方式。。。。。
在结合响应断言查看结果树。。
有可以对其使用弱网测试压力测试性能测试
使用badyboy录制的大多数都是web项目或者是后台开发
2. 使用jmeter的代理录制
使用android的项目可以使用jmeter的代理
需要在jmeter工具和手机端都要安装证书(jmeter的证书)
Pc端和手机处以同一网络下(手机设置手动代理)
在添加线程组-->httpcookie管理器
在工作台上添加http代理服务器
在代理服务器上添加端口号以及目标控制器分组
点击启动按钮后会弹出对话框安装证书
在选项中选择ssl管理器 给jmeter导入证书
在移动端进行安装证书将后缀名为crt的文件拖入到手机中或者是在文档根目录
1. 拖拽到移动端然后自动安装
2.在跟目录下使用证书安装程序的方式进行安装
3. 在设置中-->安全-->从sd卡中安装证书
模拟器一定要进行重启(可以录制app的使用场景)
Jmeter+ant+jendkins接口自动化
1.jmeter的安装以及环境变量的设置
在dos命令中执行jmeter
Jmeter_home
1.jmeter 默认生成的测试报告的后缀为.jtl格式 修改成mxl
在jmeter文件下bin\jmeter.properties中将
jmeter.save.saveservice.output_format=csv修改为xml并解开注释
2. ]将apacheAnt.rar 实现解压
3.实现将ant和jmeter实现关联
通过在jmeter文件夹下extras/ant-jmeter-1.1.1.jar取覆盖到ant下
lib文件夹
[if !supportLists]4. [endif]配置框架结构
自定义文件夹JTest
将能和jmeter关联的ant文件复制到
F:\JTest\apacheAnt(替换过jar包的ant)
F:\JTest\JmeterAutoTest\pc\resultlog\jtl(jmeter自动生成的测试报告但是看不懂)
F:\JTest\JmeterAutoTest\pc\resultlog\html (使用ant将jtl的测试报告转换html)
F:\JTest\JmeterAutoTest\pc\script (用来存放脚本 .jmx文件)
[if !supportLists]5. [endif]配置ant的环境变量
Ant_home F:\JTest\apacheAnt
Path F:\JTest\apacheAnt\bin
在dos命令行输入 ant -version 来验证ant配置成功
6. 将测试报告发送到邮箱
activation-1.1.jar
commons-email-1.1.jar
mail-1.4.jar
复制到ant下的lib文件夹下实现替换
7. Ant的执行时通过buid.xml来执行
将buid.xml 存放到
F:\Test\JmeterAutoTest\pc\build.xml(因为要执行的时pc的测试报告)
更改buid.xml文件的7个地方
8. 将.jmx文件放入到script文件夹下
9. 在buid.xml文件存放的的目录下 使用dos命令 ant即可生成测试报告并发送
0人点赞
作者:宝藏男孩_fc2b
链接:https://www.jianshu.com/p/f8bc2ae74f52
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
网友评论