测试计划包括测试目标、测试范围、测试环境、测试类型(功能、安全、性能、稳定性)、测试工具、模块划分(可以根据测试人员对业务熟悉程度以及能力分配)、测试负责人、测试轮次时间安排、相关文档、测试风险。
项目质量是整个团队一起努力的结果,在公司级别需要有一个规范的流程。
产品:保证迭代中产品的逻辑,兼容以及升级的预判,并有相对的方案。
设计:满足产品的表达,并保证设计的延续性。
开发:产品细节的保证,技术方案的选型,考虑兼容,性能。开发完要充分自测,遵守开发规范。
测试:验证产品的逻辑,站在用户角度对交互设计进行系统验证,尽可能的保证测试的质量。
要素包含:用例编号、用例优先级、测试目的、所属模块、前提条件、测试环境、输入数据、测试步骤、预期结果、测试脚本。
核心要素:用例优先级、测试目的、预期结果
将程序所有可能的输入数据,有效和无效的划分为若干个等价类。然后从每个部分中选取具有代表性的数据当作测试用例,进行合理的分类。测试用例由有效等价和无效等价的代表组成,保证测试用例的完整性和代表性。
边界值分析法是对输入和输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是对等价类分析法的补充,测试用例来自等价类的边界。
测试过程中,根据经验或直觉推测程序中可能存在的错误,从而针对的编写检查这些错误的测试用例。
该方法适合于多种输入条件组合的测试方法,根据输入条件的组合、约束关系和输出条件因果关系,分析输入条件的组合设计测试用例,检查各种组合情况。
将各种输入的组合和对应的输出值罗列出来形成表格,用来比对产品状态。
主要用于研究多因素多水平的设计方法,将因素中的全部水平组合中挑选出有代表性的进行试验,通过部分试验结果分析全面试验情况。
测试人员根据应用程序提供的信息自由发挥,不受限制,不受约束的探索程序的各种功能。
分析软件应用的场景,从用户的角度出发,从场景的角度设计测试用例。是一种面向用户的测试用例方法。关心用户做什么,而不是关心产品做什么。
都需要进行功能测试、性能测试、安全性测试。
架构不同
web端一般是b/s架构,基于浏览器的。
app是c/s架构的,有客户端和服务端。
更新机制不同
web一般只要更新服务器端,客户端就会同步更新。
app在修改服务器后,客户端需要重新测试,重新上线。
性能关注不同
web一般关注的响应时间
app关心流量、电量、cup等
兼容性不同
web基于浏览器(IE\Chrome\firefox)和电脑系统方向的兼容
app测试依赖于手机分辨率、尺寸、版本、设备系统。
1、抓包分析,通过对客户端进行抓包,分析服务器返回的数据是否符合预期,如果服务器返回数据合理,那就是客户端问题。如果数据不合理,那就是服务器问题。
2、日志分析,通过查看客户端、服务器端的日志,分析有没有异常日志信息,确定问题。
1、正常安装测试,是否能安装成功
2、App的版本覆盖安装。
3、回退版本测试,先安装2.0,再安装1.0看版本是否可以回退
4、内存不足时安装,是否有提示
5、安装过程中意外中断(断电、断网、来电话、去查看通知信息)
6、通过同步软件,检查安装时是否同步安装了一些文件
7、不同型号、系统、屏幕大小、分辨率的手机进行安装
8、安装时是否默认安装到sd卡中
9、安装后,能否正常启动
10、安装后,重启手机能否正常启动应用
11、安装后是否对其他软件造成影响
12、安装后,是否可以添加快捷方式
13、安装后,杀毒软件是否会当做病毒处理
14、多进程安装是否可以安装成功
15、安装过程中,提示信息是否有代码、符号、乱码等
16、安装后是否自动启动程序
17、安装中点击取消是否取消安装
18、安装中是否支持第三方安装
快速发现错误:每次集成一部分,快速发现错误,定位错误。
防止分支偏离主干过多:如果不经常集成,主干不断更新,会导致集成难度大,甚至难集成。
功能性:用来装水看漏不漏,水能不能喝到
安全性:杯子是否有毒或者细菌
可靠性:杯子从不同高度跌落损坏程度
可移植性:杯子在不同地方,温度等环境下是否可以正常使用
兼容性:杯子是否可以容纳果汁、白水、汽油等
易用性:杯子是否烫手,是否有防滑、是否方便引用
用户文档:是否杯子的方法、限制、使用条件的详细描述
疲劳测试:杯子盛水24小时监测泄漏情况
压力测试:用针等不断刺杯子,看多大压力会穿透
1、需求是否明确:如果是需求不明确。需要根产品去沟通,协商
2、开发认为情况不可能发生不需要改:进行沟通bug的依据,以及用户发现后出现的问题。如果不行可以提出来跟开发经理和测试经理确认。如果不需要修改那么需要在测试报告中记录下来,以便查阅。
首先,这样的bug需要提单的。需要描述清楚操作环境、步骤、数据、并提供必要日志。备注可能出现的原因。然后利用排除法找规律,也可以跟开发去分析讨论。如果仍未解决,可以大家权衡bug是否可以遗留。
1、检查身份证规则有效性,地址码、生日、校验码等
2、检验15位与18位身份证号是否都可用
3、检测末位是X的情况
4、不足15位,16、17位和大于18位的情况
5、如果必输入,检验不输入的时候是否有正确提示
6、如果不必须输入,校验不输入是否流程正常
7、检验输入非数字情况,是否有正确的提示
8、校验输入全角数字是否可以识别
回归测试:就是软件发生了改变有可能会使软件产生问题。所以当软件发生变化时,我们需要重新测试所有的功能,以便确定修改是否达到预期的目的,检查是否破坏了原有的正常功能。
如何做:
首先,缺陷跟踪单不是只给自己看的,也要给其他人看的,所以标题要简洁明了,步骤条理清晰。还要考虑缺陷的完备性。比如缺陷的登记、所属模块、版本、复现步骤、预期结果、实际结果、产生原因、日志截图等。
必要字段:请求参数的必填项、可选项
合法性:输入输出的合法、非法参数
边界:请求参数的边界值等
容错能力:大容量数据、频繁请求、重复请求、异常网络处理
响应数据校验:断言、数据提取传递到下一级接口
逻辑校验:两个接口有先后顺序,需要测试反过来的情况
性能:对接口模拟并发测试,逐步加压,分析瓶颈点
安全性:构造恶意字符请求,如敏感信息等
Priorty(优先级)和Severity(严重程度)是提交bug的重要属性。
一般Priorty和Severity挂钩,Severity越严重,那么优先级就越高。
Severity如下:
Blocker:系统无法执行、崩溃或严重资源不足、应用模块无法启动或异常,退出无法测试,造成的系统不稳定。
critical:影响系统功能或操作,主要功能存在严重缺陷,但是不影响系统的稳定性
Major:界面、性能缺陷、兼容性
Minor/Trival:易用性或建议性问题
Priority优先级:
Immediate:立刻
Urgent:紧要
High:高度重视
Normal:正常
Low:优先级低
关键在于熟悉需求,分为:
New:新发现的bug,未经评审决定是否指派给开发人员修改
Open:确认bug,并认为需要进行修改,指派给相应的开发人员
Fixed:开发人员修改后标识修改,需要测试进行回归测试验证
Regected:认为不是bug,拒绝修改
Delay:认为暂时不改,延后修改
Closed:修改bug后,测试回归验证通过,关闭bug
Reopen:验证bug仍然存在,重新打开bug交与开发重新修改。
name |
course |
score |
张三 |
语文 |
81 |
张三 |
数学 |
75 |
李四 |
语文 |
76 |
李四 |
数学 |
90 |
王武 |
语文 |
100 |
王武 |
数学 |
90 |
having 筛选,最低分大于80
select name, min(score) from scores group by name having min(score)>80
student表
id |
studentname |
1 |
张三 |
2 |
李四 |
Student_score表
id |
coursename |
score |
1 |
语文 |
78 |
1 |
数学 |
50 |
2 |
语文 |
56 |
2 |
数学 |
58 |
3 |
语文 |
78 |
3 |
数学 |
47 |
select student.id,student.studentname,AVG(student_score.score) from student.student score where student.id=student_score.id and student_score.score<60 group by student_score.id having count(*)>1;
事务:数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作。事务是一组不可分割的操作集合。
1、原子性:事务中全部操作在数据库不可分割,要么全部执行,要么全不执行。
2、一致性:几个并行的事务,执行结果按照某一顺序串行执行的结果一致
3、隔离性:事务执行不受其他事务干扰,事务执行的中间结果对其他事务是透明的
4、持久性:对任意已提交事务,系统必须保证该事务对数据库改变不被丢失。
Max():最大值
Min():最小值
Avg():平均值
Sum():求和
Count():统计总数
主键:唯一标识一条记录,不能重复,不允许位空
索引:改字段没有重复值,但是可以为空
主键:用来保证数据的完整性
外键:用来和其他表建立联系
索引:用来提高查询排序的速度
主键:只能有一个
外键:可以有多个
索引:可以有多个
都表示删除操作。
delete 用来删除表全部或者一部分数据。提交后,用户需要提交或者回滚执行删除或者撤销删除
truncate 删除表所有数据,但是这个操作不能回滚,比delete更快,占空间更小
drop 删除表,所有的数据、索引、权限也会被删除,这个命令不能回滚
cd进入目录
ls查看文件列表
cp拷贝文件
mv移动文件
rm删除文件
chmod设置文件权限
vim文件编辑
find搜索文件
grep过滤文件内容
停止tomcat的PID为12345的进程
kill -9 12345
find -type f -size +10k
页面对象模型(PageObject)是一种设计模式用来编写和维护自动化测试
优点:
设计测试用例方向:
接口业务、接口参数测试、业务依赖、接口依赖、数据依赖、接口安全、接口性能
使用场景:
设计思路:
先了解接口的业务功能、入参以及接口对应的数据存储,再依据接口测试用例设计方法完成接口测试的设计,用例设计线业务场景再参数判断,比如参数的边界值、格式、组合等,最后一句测试用例使用接口测试工具完成接口测试,并在测试过程中查看日志以及数据以确保接口测试结果的正确性。
定位器选择错误、定位字符串错误、元素嵌套在frame中、页面元素没有及时加载、元素在新窗口中、脚本流程与实际不符、元素不在当前页
首先确定加密方式,如果是对称加密,如aes,那么需要开发提供私钥。如果是非对称加密,如rsa,需要开发提供公钥和私钥。然后在测试过程中实现参数的加解密处理。
接口关联指的是一个接口使用另一个接口的返回值做参数,在jmeter中针对不同的响应数据做不同的处理。BeanShel 后置处理器可以从响应结果中提取响应内容,通过这些组件提取所需内容后,
在需要关联的接口中引用变量即可完成关联
200 成功
302 重定向
400 错误请求 401 未授权 403 禁止 404 未找到 405 方法未允许
500 服务器错误 502 网关错误 503 服务无法获得 504 网关超时
利用抓包工具可以模拟网络情况,如果fiddler、charles
如果是网页,可以利用chrome开发者工具模拟弱网。如果是app可以在开发者模式中设置弱网,丢包率啥的
对于接口测试来说,均需要采用自动化的手段。因此在开发联调完成和集成测试之间可以介入,在进入集成测试之后接口测试自动化脚本可以用来做接口层面的回归测试,保证接口不出问题。
UI自动化会在产品稳定之后介入,主要来保障UI层面的回归,那么自动化测试均为了提升测试效率,保障原油功能的正确性
包括基础方法、数据驱动、PO模式分层、自定义异常、工具包、配置文件、测试报告、日志收集、关键字驱动、接口分层、接口数据管理等
不同的参数为了模拟不同的用户使用不同的数据来做业务请求
常用的参数有:随机数、随机字符串、时间戳、文件参数化、UUID等
都可以实现退出浏览器session功能。
quit是关闭全部的浏览器页面,并退出浏览器session
close关闭当前聚焦的tab页面
需求调研-环境搭建-脚本编写-准备数据-执行测试-回归调优-测试报告
一般场景包含:基准测试、单交易测试、混合测试、稳定性测试
其他场景:高可用性测试、异常测试等
TPS:每秒事务数,代表了性能的好坏,TPS越高性能越好
平均响应时间:请求的平均耗时,响应时间越短越好
并发数:同时向服务器发起请求的虚拟用户数,可以通过工具多个进程来实现
错误率:失败的请求比例
直接进行压测,在压测完成后将数据开会讨论,看是否满足性能要求;
根据行业内通用指标规范,如果高频接口响应<100ms,低频<200ms标准
集合点是为了压测满足用户高并发请求,集合点会产生高并发,但是也会降低平均压力。如果有高并发的业务,如:抢购、秒杀。之类的需要添加集合点。否则不需要