测试基础
黑盒测试的方法
- 等价类划分法
- 边界值分析法
- 判定表法
- 因果图法
- 组合覆盖法
- 正交实验法
- 场景设计法
-
白盒测试的方法
语句覆盖:顾名思义就是针对代码语句,设计出来的用例要保证程序中的每一个语句至少被执行一次
- 分支覆盖:使得程序中每个判断的取真和取假至少经历一次,即判断的真假均曾被满足
- 条件覆盖:条件覆盖要求设计用例时针对判断语句里面每个条件表达式true 和 false各取值一次,不考判断语句的计算结果(不考虑组合情况)
- 判定条件覆盖(分支条件覆盖):设计测试用例时,使得判断语句中每个条件表达式的所有可能结果至少出现一次,每个判断语句本身所有可能结果也至少出现一次
- 组合覆盖:设计测试用例时,使得每个判断语句中条件结果的所有可能组合至少出现一次
-
接口测试
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查接口参数传递的正确性,接口功能实现的正确性,输出结果的正确性,以及对各种异常情况的容错处理的完整性和合理性
- 接口测试原理:通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一过程(request(请求)→response(响应))
- 软件接口的分类:
- 系统与系统之间的调用,如微信向用户提供统一的对外接口,程序员调用接口完成基于微信的小程序等
- 同一系统内部上层服务对下层服务的调用,如一个软件程序一般分为表示层,业务层和数据层,表示层调用业务层的接口来完成自己的工作,而业务层又会调用数据层的接口来实现相应的业务等
- 接口测试重要性:
- 能够提早发现 bug,符合质量控制前移的理念。
- 接口测试低成本高效益,因为接口测试可以自动化并且是持续集成的。
- 接口测试从用户的角度对系统接口进行全面检测。实际项目中接口测试会覆盖一定程度的业务逻辑
- 接口测试使用范围:
- 接口测试一般会用于多系统间交互开发,或者拥有多个子系统的应用系统开发的测试。接口测试适用于为其他系统提供服务的底层框架系统和中心服务系统,主要测试这些系统对外部提供的接口,验证其正确性和稳定性。接口测试同样适用于一个上层系统中的服务层接口,越往上层,其测试的难度越大。接口测试在淘宝的应用是一个自下而上的发展过程
- 接口测试实施在多系统多平台的构架下,有着极为高效的成本收益比,接口测试天生为高复杂性的平台带来高效的缺陷监测和质量监督能力。平台越复杂,系统越庞大,接口测试的效果越明显
接口测试的目的是测试接口,尤其是那些与系统相关联的外部接口,测试的重点是要检查数据的交换,传递和控制管理过程,还包括处理的次数。外部接口测试一般是作为系统测试来看待的
正向代理和反向代理
软件的分类
- 想象一个登录框,包括ID、密码、登录、取消,记住密码(复选框),尽可能的写出你想到的测试点?
- 测试淘宝购物车的测试案例
- 设计一下抖音上下滑动视频的测试用例
- 设计抖音app用户登录测试
- 中断测试
- 测试在一个场景下,推荐滤镜
- 朋友圈点赞评论测试用例
- 测试过QPS吗?
- 项目前中后期的质量保障手段
- 项目资损的保障手段
- 说说xss和csrf的区别,原理,防范措施?
- 说说sql注入的原理,类型,防范措施?
- 玩过抖音吧,你觉得抖音可能存在哪些安全漏洞(缺陷),怎么去解决?
- csrf和ssrf区别,原理,防范措施?
- SQL注入有哪些,会测试哪些方面的SQL注入
- 高并发情况下响应延迟有实际操作过吗,怎么模拟高并发
常用git命令、git 分支如何创建与合并、git一次提交过程的流程
测试场景
网页崩溃的原因
内存泄漏
- 网页代码复杂和浏览器bug
- 网页数据过多
-
网页卡顿的原因
原因一:http请求次数太多
- 解决:规范接口设计,减少http请求次数
- 原因二:接收数据时间过长,如下载资源过大
- 解决:对HTTP传输进行压缩,可采用gzip无损压缩,压缩效果最佳
- 原因三:JavaScript 脚本过大,阻塞了页面的加载
- 解决:将 JavaScript脚本放在标签前。script没有 async 和 defer 时,JS文件将在下载后立即执行。这种情况下,script放在顶部会阻塞页面呈现,在网速慢的情况下会导致“白屏”,直到脚本下载完毕才继续呈现页面。因此,script放在底部可以让页面尽快呈现。
- 原因四:CSS、JavaScript、图片等需要重复加载
- 解决:静态资源统一放在一个静态域名上,减轻重复下载静态资源的负担
- 原因五:cookie影响
- 解决:减小cookie的影响 。去除没有必要的cookie,如果网页不需要cookie就完全禁掉。此外,对cookie瘦身和设置合适的 cookie 过期时间,也能削弱cookie的影响。
- 原因六:网页资源过多
- 解决:使用CDN部署网络以提高下载速度,可以先通过免费的CDN供应商来分发网页资源。
https://blog.csdn.net/zhouziyu2011/article/details/71453126
访问页面加载缓慢的原因以及如何解决
- 服务器出口带宽不够用
- 可能是本身购买的服务器出口带宽就很小(企业购买带宽相当昂贵),一旦用户访问量上来了,并发量大了,自然均分给用户的出口带宽就更小了,所以某些用户的访问速度就会下降了很多
- 跨运营商网络导致带宽缩减,例如很多公司的网站(服务器)是放在电信的网络上的,而如果用户这边对接的是长城或者说联通的宽带,运营商之间网络传输在对接时是会有限制的,这就可能导致带宽的缩减
- 服务器负载过大忙不过来,比如说CPU和内存消耗完了
- 网站的开发代码没写好,例如mysql语句没有进行优化,导致数据库的读写相当耗费时间
- 数据库的瓶颈。当我们的数据库变得愈发庞大,比如好多G好多T这么大,那对于数据库的读写就会变得相当缓慢了,索引优化固然能提升一些效率,但数据库已经如此庞大的话,如果每次查询都对这么大的数据库进行全局查询,自然会很慢
针对上面可能的原因,有哪些方法和工具去检测:
- 首先你自己也打开下网站,看是否会出现用户反映的问题,如果你这边访问没问题,那就可能是用户那边的问题了,这块就是要先确定是用户那一方的问题还是自身比如说服务器或者网站的问题
- 发现确实是自己服务器或者网站的问题,那么可以利用浏览器的调试功能(一般浏览器都会有),调试网络看看各种数据加载的速度,哪一项消耗了多少时间都可以看到,是哪块数据耗时过多,是图片加载太慢,还是某些数据加载老半天都查不出来
- 针对服务器的负载情况,可以去查看下服务器硬件(网络带宽、CPU、内存)的消耗状况。带宽方面查看流量监控看是不是已经到了峰值,带宽不够用了,如果是公司自己买服务器搭的网站服务器的话,需要自己搭建监控环境;如果用的是阿里云腾讯云这些的,那这些平台那边会提供各方面的监控比如CPU、带宽等等
- 如果发现硬件资源消耗都不高,都比较充裕,那要去看看是不是程序的问题了。这个可以通过查日志来找,比如PHP日志、Apache日志、mysql日志等等的错误日志,特别如mysql有个慢查询的日志功能,可以看到是不是某条mysql语句特别慢,如果某条语句花的时间太长,那这条语句很有可能有问题
解决和优化的办法:
- 出口带宽的问题,加带宽,有钱就多买带宽
- mysql语句优化
- 数据库太庞大,为了读写速度,进行“拆表”、“拆库”,就是把数据表或者数据库进行拆分
- mysql的主从复制,一台主服务器专门用于写,然后其他从服务器用来读,写完之后会同步更新到其他读的服务器中
- 使用了缓存机制,它把数据缓存到了内存,用户访问数据直接从内存读取,读取速度就比在磁盘中读取快了很多
- CDN(content-delivery-network:内容分发网络),鸡蛋放在多个篮子里,把数据放在离用户更近的位置(例如网站的一些静态文件比如图片或者js脚本),用户访问时判断IP来源是广州,那就通过智能DNS解析到广州的服务器上,直接从广州的篮子里去获取数据,速度就快了。这里有个静态数据和动态数据的概念,例如图片和一些js文件一般是不变的,那就可以把它们的映像分布到全国各地,加快速度,而一些需要在网站后台动态产生的一些数据,则需要去到网站所在的服务器去产生并得到。这个涉及到两种数据的显示的问题,这就交由浏览器处理了。同时异步加载的技术例如前端的Ajax技术,异步请求数据,可以使这些动态数据延迟加载,这块自己不怎么了解,可能表述不好。前端开发的人员应该更懂一些
如果网站扛不住,是不是网站架构已经不能适应了,比如做个小博客把数据库服务器和web服务器都用同一台服务器,那所有负载都在同一台服务器上了。但是访问量上来扛不住了,就得加服务器了,就得在架构上优化了,比如在数据库上做集群,在web服务器上也做集群,比如web服务器集群,在服务器前面加一个负载均衡,负载均衡就是专门负责分发,把用户的请求均匀分布到各个服务器上
app闪退的原因
APP常见崩溃的原因
设备碎片化:由于设备极具多样性,App在不同的设备上可能有表现不同
- 带宽限制:带宽不佳的网络对App所需的快速响应时间可能不够
- 网络的变化:不同网络间的切换可能会影响App的稳定性
- 内存管理:可用内存过低,或非授权的内存位置的使用可能会导致App失败
- 用户过多:连接数量过多可能会导致App崩溃
- 代码错误:没有经过测试的新功能,可能会导致App在生产环境中失败
-
App崩溃的测试用例设计
验证在有不同的屏幕分辨率,操作系统和运营商的多个设备上的App行为
- 用新发布的操作系统版本验证App的行为
- 验证在如隧道,电梯等网络质量突然改变的环境中的App行为
- 通过手动网络从蜂窝更改到Wi-Fi ,或反过来,验证App行为
- 验证在没有网络的环境中的App行为
- 验证来电/短信和设备特定的警报(如警报和通知)时的App行为
- 通过改变设备的方向,以不同的视图模式,验证App行为
- 验证设备内存不足时的App行为
-
APP提示无法连接网络,如何排查问题
第一步:检查网络环境
- 检查 4G 和 Wifi 是否可用,可以先看手机网络连接图标状态,有无信号,是否弱网,并且可以切换其他 APP,测试网络是否可用。
- 检查是否有网络限制,比如仅公司内网可用的APP,你在别的网络环境是无法连接的。
- 检查是否连接了代理或代理连接是否出现异常,手机连接电脑代理之后,如果不安装证书,发起 https的请求将出现异常。
第二步:检查APP的网络请求
一般成熟的团队都会有crash的监控平台,可以从crash平台上去查看crash发生位点。
- 手工尝试复现crash,一般偶然的闪退,都不会特别容易复现,可能需要适当施加一些比较苛刻的条件(弱网、断网、快速点击、快速划动等等)。
- 查看crash日志,比如Android APP可以用adb命令去查看: ```java // mac 下面 adb logcat *:E | grep CRASH
// windows 下面 adb logcat *:E | findstr CRASH ```
-
上传头像失败的原因
10%的用户反馈用不了功能,如何排查问题
APP 版本影响,可能是接口改动没有考虑版本控制,对低版本用户造成影响
- 操作系统版本,可能是用户的操作系统过高或过低,没有做好兼容
- 灰度测试或 AB 测试,可能是功能缺陷导致对部分灰度用户产生影响
- 跟会员用户有关,可能是一些功能仅仅只对 VIP 会员开放,然而这部分功能有缺陷
跟用户分布地域有关,比如说:有些地区没有开放功能,但是也给这些用户展示了入口
登录的按钮不能点击,如何排查问题
前端没有响应用户点击事件,导致请求发不出去
- 前端发起HTTP请求,但是后端接口返回异常,前端捕获异常之后,没有处理
- 网络异常,发不出去请求,但是前端也没有作出提示。
-
压测的时候,QPS一直上不去,如何排查问题
检查被测服务器的性能,看是否资源被打满,导致请求无法连接。解决办法:被测服务器扩容
- 检查接口是否出现报错,以及响应时间是否变慢。解决办法:接口性能优化。
- 检查压测机器的性能,是不是网络IO占满,并发数达不到。解决办法:多台压测机器并发
检查压测工具是否支持并发请求。解决办法:采用多线程或协程的方式去并发请求
微信红包是先计算每个人能获得的钱还是当这个人点了再计算
当这个人点了抢红包再进行实时计算,
目的:预先算好每个人获得的钱,会占用大量存储空间,而采用红包算法进行纯内存计算,不需要预算空间存储,节约成本
刷视频的时候视频加载失败的原因
看看是不是网络的问题,重新连接一下网络
- 看看手机内存是不是不足了,清理一下内存
- 看看版本是不是最新的版本,更新一下版本
-
小程序测试、客户端测试、web测试三者的异同点
测试对象不同
- 小程序测试:主要测试微信小程序、百度小程序、支付宝小程序等小程序平台上的小程序。
- 客户端测试:主要测试在Windows、Mac、Android、IOS等设备上的客户端软件。
- Web应用程序测试:主要测试在各种浏览器上的Web应用程序。
- 测试形式不同
- 小程序测试:固定的平台上,测试人员需要将小程序部署在小程序平台上进行测试。
- 客户端测试:在不同的操作系统上,测试人员需要将客户端软件部署在对应的设备上进行测试。
- Web应用程序测试:在不同的浏览器上,测试人员需要通过网络访问互联网上的Web应用程序进行测试。
- 测试方法不同:
- 小程序测试:主要采用黑盒测试方法,测试人员主要关注小程序的功能、交互等方面的测试。同时,还需要与小程序平台对接测试,包括小程序的更新、下架、权限设置、接口等。
- 客户端测试:主要采用黑盒测试方法,测试人员主要关注客户端软件的功能、界面交互、数据存储等方面的测试。同时,还需要考虑不同操作系统版本、设备型号、分辨率等的兼容性测试。
- Web应用程序测试:主要采用白盒+黑盒相结合的测试方法,测试人员需要了解Web应用程序的设计结构和代码,主要关注Web应用程序的功能、界面、数据存储、性能、安全等方面的测试。同时还需要进行不同浏览器、不同操作系统的兼容性测试。
- 测试重点不同:
- 小程序测试:主要关注小程序在小程序平台上的表现和在特定功能(如支付、统计等)上的测试
- 客户端测试:主要关注客户端软件在不同操作系统和设备上的兼容性测试,同时还需要关注软件安装、卸载、升级以及数据传输等方面。
- Web应用程序测试:主要关注Web应用程序的功能、界面、数据存储、性能等方面的测试,同时还需要关注浏览器兼容性、网络连接质量等因素。
总结:以上是小程序测试、客户端测试、web应用程序测试的主要异同点。测试人员需要根据不同测试对象的特点,采用不同的测试方法,并在测试过程中重点关注具体测试目标以确保测试的全面性和有效性。
秒杀业务的场景分析
在进行秒杀业务的场景分析时,一名软件测试工程师可以从以下几个方面考虑:
并发量测试:秒杀活动通常会吸引大量用户参与,因此需要进行并发量测试,以验证系统的处理能力是否足够。测试过程中需要模拟高并发场景下的用户请求,并监控系统的响应时间、处理速度、系统资源利用率等指标,从而评估系统的性能。
- 优惠券测试:如果活动涉及优惠券,需要对优惠券的发放使用、退款等场景进行测试,以确保优惠券的使用过程顺畅、准确无误。测试过程中,需要考虑多种情况,如优惠券的有效性、使用限制、优惠券与其他活动的叠加使用等
- 订单管理测试:秒杀活动通常伴随着大量订单的生成,因此需要测试订单管理功能的稳定性和准确性。测试过程中,需要模拟用户下单、退款、取消订单等操作,验证系统的订单管理功能是否能够满足业务需求。
- 安全性测试:秒杀活动具有较高的风险,容易受到网络攻击恶意刷单、作弊等行为的影响。因此,需要进行各种安全性测试,如漏洞扫描、入侵检测、防御能力测试等,以确保系统在面对各种攻击时能够保持稳定和安全。
- 预测性能测试:在秒杀活动前,需要进行预测性能测试,以评估系统在活动高峰期的性能表现。通过对系统进行渐进式的负载测试,可以发现系统的瓶颈和性能瓶颈,并提前优化系统从而保证系统在活动期间的稳定运行。
测试用例
微博发动态,设计一下测试点
对一台自动售货机进行测试用例设计
设计微信发红包测试用例
设计抖音直播功能测试用例
设计微信扫码支付的测试用例
设计百度首页的测试用例
测试用例设计,除了常规的功能测试之外,还有很多切入点值得考虑,比如:界面测试、性能测试、接口测试、安全测试等等
资料来源:https://blog.csdn.net/IT_LanTian/article/details/123111132
测试微信的点赞功能
https://blog.csdn.net/IT_LanTian/article/details/123111132
测试微信朋友圈评论功能
https://blog.csdn.net/IT_LanTian/article/details/123111132
抖音视频的安全性测试点
性能测试监控指标及分析调优指南
https://blog.csdn.net/IT_LanTian/article/details/131743837
测试管理
https://www.bilibili.com/video/BV1nt411R75n
- 如果抖音一个地区的许多用户无法下载视频的原因
- 如果用户收到了银行短信提示已经扣款成功了,但是商家没有收到钱,你觉得会是什么问题
- 如何实现一个用户登录功能
- 高并发下减少事务带来的性能消耗?
- 如果一个API接口出现一个不稳定出现的bug,如何去确定?
- 设计加入购物车和购物车页面的测试用例,安全测试加密什么
- 如果url加载不出来页面,怎么排查问题
- 如果图片上传失败,分析原因
- 针对评论功能,你如何设计接口,主要回答需要传递的参数有哪些?
- app页面白屏了什么原因
- 全链路压测中,找到了某一个服务器CPU负载率100%,磁盘和内存使用率正常,请问你会怎么去分析可能的原因
- 设计买火车票的系统,输入出发站和到达站,返回所有可能的结果
- 添加购物车请求后发生了什么
- 淘宝用户支付失败的原因
- 测试b站播放、B站弹幕的测试举例
- 如何针对微信聊天界面的抢红包功能设计测试用例?
- 怎么测试抖音平台带货界面
- 手机端访问一个站点出现白屏可能出现的原因,怎么定位是前端还是后端的问题
- 怎样保证数据库、数据库到ES、ES到前端 数据是正确的
- 网易云播放器与歌单(播放列表)的测试
- 抖音视频画面跟声音不同步,怎样排查问题
- 线上大量用户反映抖音视频画面跟声音不同步,怎样排查
- 用例设计:抖音点赞功能的测试点
- 发朋友圈设计测试用例
- 测试一个人脸识别机器的功能、性能
- 设计微信发送消息测试用例
- 测试用例:微信余额提现
- 测试用例设计:满减红包
- 测试微信聊天框
- 对于二维码的功能测试
- 抖音下拉框的测试用例
- 视频播放器的测试用例
- 朋友圈评论的测试用例
- 如果头条突然崩溃了会是什么原因?这里的崩溃是指应用突然异常终止跳回到桌面了
- 抖音评论设计测试用例
- 发布评论如果页面没有显示会是什么问题
- 对于抖音的直播卡顿测试用例
- 怎么实现12306买票过程中输入两个城市,输出所有车次
- 怎么实现单点登录
- 怎么实现登录后保持登录状态
- 测试一下支付宝付款码,设计测试用例
- 登录功能怎么设计测试用例?
- 网上银行转账是怎么测的,设计一下测试用例。
- 给你一个网站,你应该如何测试?
- 一个有广告的纸杯子,请设计测试用例?
- 可以从哪几个方面测试视频通话?压力测试、安全性、兼容性、性能测试、容纳多少人?
- 提问如何去测试抖音的客户端
- 有n只老虎1只羊,老虎可以吃羊,它吃完羊就穿成羊,老虎很聪明,问n只老虎时,它会不会吃羊https://blog.csdn.net/weixin_33686714/article/details/87987955