秒杀场景的测试与实现
测试:
特点:定时开始、库存有限、操作可靠、瞬间数量大
确定什么时候系统接近崩溃
确定关键功能(下单、库存扣减、支付)
确定指标(目标TPS、并发用户数、成功率等)
确定环境信息
监测点:CPU、内存、IO、TPS、平均响应时间等
执行测试
分析数据。
登陆功能的测试
功能测试
- 正常登陆
- 账号错误、密码错误、用户未注册、特殊字符登录
- 第三方账号登录
- 某项为空
- 验证码测试
页面测试
- 页面显示是否正常
- 快捷键(回车等)是否正常
- 不同浏览器是否能整成使用
安全测试
- sql注入
- 不登录进入
- 用户名和密码是否通过加密的方式,发送给Web服务器 、
- 用户名和密码的的输入框,应该禁止输入脚本 (防止XSS攻击)
- 错误次数限制
- 同一用户多客户端
性能测试
- 压力
- 稳定性
常见的测试类型
在我目前的工作中,接触到最多的是:
性能测试、功能测试、单元测试、接口测试、回归测试、稳定性测试、联调测试、全链路测试。
但我了解到的还有:
黑盒测试、白盒测试(这两个涵盖面比较广)
集成测试(两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。大爆炸集成、三明治集成、自顶向下、自底向上)
系统测试(完整系统的测试)
验收测试(α测试-一个用户、开发环境/β测试-多个用户、实际使用环境/正式验收测试)
兼容性测试(不同操作系统、不同浏览器、向前向后兼容)
界面测试(细节,稳定性等)
用过哪些测试工具
Jmeter、以及基于Jmeter开发的性能测试平台(用于性能测试 TPS、并发数、平均响应时间、成功率)
Ucase测试平台(自主开发的接口测试平台)
Arthas(阿里的开源Java诊断工具,主要用于性能测试,定位耗时长的方法 trace)
Postman(用于接口调试,发送请求)
Jira(项目管理工具,项目进度,bug提交等)
SecureCRT(服务器连接工具)
Navicat(数据库连接工具)
OpenShift(容器云环境)
Jenkins(持续集成,构建)
Gitlab(代码管理)
测试方法 黑盒白盒
测试方法很多种。
根据程序执行状态区分:
静态测试-被测程序不运行,只分析程序中的语句,结构等。
动态测试-运行被测程序,检查是否有问题。
实现细节和内部结构区分:
黑盒测试-根据需求说明书,不看代码,进行测试
白盒测试-看代码进行测试(控制流分析,数据流分析,路径分析,程序变异等,逻辑覆盖为主要测试方法)
灰盒测试-介于黑盒和白盒之间
程序执行的方式区分:
手工测试-手动测试
自动化测试-预先设定的条件下运行被测程序
测开工程师在整个产品从立项到最后上线都参与了哪些过程
需求分析阶段-了解需求(对需求足够了解才能准确地写出用例)
需求开发阶段-编写测试案例,并且与开发,BA,业务进行核对
开发完成阶段-进行测试(功能测试、接口测试、性能测试等)
UAT用户验收测试阶段-配合UAT测试人员进行测试
封板上线-对代码进行封板,记录版本号,审批,跟进上线单
程序上线。
测试一个接口,写测试用例,并归类
一般我是用Xmind梳理测试用例的(好归类,好梳理)
例如:测试现金分期下单接口:
有哪些可能导致支付宝二维码被盗刷
付款码
- 手机截图
- 在付款时被身后的人悄悄扫描
扫描对方二维码
- 伪造缴费单
- 替换商家收款码
- 替换共享单车开锁码
如何测试一支笔
按照阶段测试:
单个零件测试(笔芯、按钮、弹簧、笔帽、笔油、笔尖)
组装测试(组装笔壳、组装笔芯)
系统测试(组装好整体进行测试)按照测试关注点:
功能测试(能否正常书写,能在什么材料上书写,能在什么条件下书写-温度、湿度,笔油用完了会有什么情况,使用不同笔芯能否正常使用等,笔帽的使用是否正常)
性能测试(高速画圈圈、画8字、用多久能用完)
易用性测试(是否好用)
外观测试(美观或丑陋)
安全性测试(笔的各个部位是否含有对人体有害的物质)
如何测试cp命令
功能
拷贝的文件大小、类型
目录中的文件类型、目录深度
目标目录中是否有同名、同类型文件异常
参数异常:特殊字符、长度超长、源/目标不存在
文件异常:无权限、非法内容
存储介质异常:磁盘损坏、磁盘已满
执行过程异常:拷贝过程中删除源文件、目标文件性能(注意关注系统各项指标)
大文件
大量小文件
跨文件系统拷贝
并发执行拷贝
设计测试用例,一个客户端登录页面,用户名,密码,登录三个按钮,尽可能详细的说
软件卡怎么办
手机、电脑硬件问题——更新硬件,清理不用的残留(重启等)
处理器不够快
内存不够大
磁盘、存储快用尽
显卡不够好网络问题——换好的网络、重启电脑、手机
信号不好
带宽不够软件问题——反馈软件卡发商
内存泄露
界面优化不够好