八股文骚套路之测开
常用自动话测试工具
Selenium
Web自动化测试
Postman
接口测试
说说对postman的理解
模拟get或者post或者其他方式的请求来调试和测试接口
Jmeter
Jenkins
手机兼容性测试
- 系统兼容性
- 屏幕兼容性
- 型号兼容性
- 数据来源
软件开发流程
- 需求分析
- 指定测试计划
- 用例设计
- 用例执行
- 缺陷管理
- 测试报告
软件测试方法 *****
- 软件测试方法:白盒、黑盒(功能测试)、灰盒、 静态测试、动态测试
白盒测试一般可被分为静态分析和动态分析两类技术:
- 静态分析主要有:控制流分析技术、数据流分析技术、信息流分析技术。
- 动态分析主要有:逻辑覆盖率测试(分支测试、路径测试等),程序插装等。
- 白盒测试优点:迫使测试人员去仔细的思考软件的实现;可以检测代码中的每条分支和路径;揭示隐藏在代码中的错误;对代码的测试比较彻底
- 白盒测试缺点:昂贵;无法检测代码中遗漏的路径和数据敏感性错误;不验证规格的正确性。
静态测试:是一种不通过执行程序而进行测试的技术。它的关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义
动态测试:包含了程序在受控的环境下使用特定的期望结果进行正式的运行。它显示了一个系统在检查状态下是正确还是不正确。
单元测试属于白盒测试范畴;集成测试属于灰盒测试范畴;系统测试属于黑盒测试范畴。
CI/CD理解
- CI(Continuous Integration)持续集成
持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。
集成是指软件个人研发的部分向软件整体部分交付,以便尽早发现个人开发部分的问题;
CD(Continuous Delivery)持续交付
持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境中。
交付是指研发尽快向客户交付,以便尽早发现生产环境中存在的问题。CD(Continuous Deployment)持续部署
持续部署则是在持续交付的基础上,把部署到生产环境的过程自动化。
部署是代码尽快向可运行的开发/测试节交付,以便尽早测试;
所谓的持续,就是说每完成一个完整的部分,就向下个环节交付,发现问题可以马上调整。是的问题不会放大到其他部分和后面的环节。
单元测试
单元测试是指,对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作,这里的最小可测试单元通常是指函数或者类。
时间紧任务重不能加人的情况怎么尽最大努力测试?
答:1. 不写测试用例,先和产品人员沟通覆盖主要业务,选出重要的模块先正向后逆向2. 可以使用错误推荐法根据经验复测。
任何测试都应该先走业务
而测业务需要使用场景法
针对某一个产品写测试用例(性 功能 兼 用 安 稳)
基本思路:可以从功能测试,UI测试,稳定性测试,压力测试(边界极限),安全测试,本地化测试等角度去考虑
首先应从正向和逆向考虑功能
测试水杯 *
- 基本功能
硬度、装载能力、装载种类、漏水、冷水/热水/冰水、保温 - 界面测试(UI)
看其形状、大小设计是否符合需求规格说明书的定义,适合人方便拿起喝水;
外观是否吸引人,赏心悦目;
广告图案沾水后是否掉色、模糊;
广告图案是否使用环保材料、不影响使用者健康和回收再利用;
广告图案是否和当地政治、宗教符合,没有冲突;
广告图案是否做到了本地化和国际化。 - 易用性测试
- 稳定性测试
- 安全性
- 本地化测试
为国际化和本地化的需要,广告图案和文字是否在政治、宗教和文化方面具有广泛的适用性; - 性能测试
测试一个输入框(计数)
通常是一个登陆页面,上面有用户名,密码的输入框,再多一点的有个验证码。
针对“用户登录”设计测试用例
功能测试
正向用例:
- 输入已注册的用户名和正确的密码,验证是否登录成功;
逆向用例:
- 输入已注册的用户名和不正确的密码,验证是否登录失败,并且提示信息正确;
- 输入未注册的用户名和任意密码,验证是否登录失败,并且提示信息正确;
- 用户名和密码两者都为空,验证是否登录失败,并且提示信息正确;
- 用户名和密码两者之一为空,验证是否登录失败,并且提示信息正确;
- 如果登录功能启用了验证码功能,在用户名和密码正确的前提下,输入正确的验证码,验证是否登录成功;
- 如果登录功能启用了验证码功能,在用户名和密码正确的前提下,输入错误的验证码,验证是否登录失败,并且提示信息正确。
以上是基本的
有经验的测试测试工程师还会增加:
- 用户名和密码是否大小写敏感;
- 页面上的密码框是否加密显示;
- 后台系统创建的用户第一次登录成功时,是否提示修改密码;
- 忘记用户名和忘记密码的功能是否可用;
- 前端页面是否根据设计要求限制用户名和密码长度;
- 如果登录功能需要验证码,点击验证码图片是否可以更换验证码,更换后的验证码是否可用;
- 刷新页面是否会刷新验证码;
- 如果验证码具有时效性,需要分别验证时效内和时效外验证码的有效性;
- 用户登录成功但是会话超时后,继续操作是否会重定向到用户登录界面;
- 不同级别的用户,比如管理员用户和普通用户,登录系统后的权限是否正确;
- 页面默认焦点是否定位在用户名的输入框中;
- 快捷键Tab 和Enter等,是否可以正常使用。
性能
- 单用户登录的响应时间是否小于3秒;
- 单用户登录时,后台请求数量是否过多;
- 高并发场景下用户登录的响应时间是否小于5秒;
- 高并发场景下服务端的监控指标是否符合预期;
- 高集合点并发场景下,是否存在资源死锁和不合理的资源等待;
- 长时间大量用户连续登录和登出,服务器端是否存在内存泄漏。
安全性
- 用户密码后台存储是否加密;
- 用户密码在网络传输过程中是否加密;
- 密码是否具有有效期,密码有效期到期后,是否提示需要修改密码;
- 不登录的情况下,在浏览器中直接输入登录后的URL地址,验证是否会重新定向到用户登录界面;
- 密码输入框是否不支持复制和粘贴;
- 密码输入框内输入的密码是否都可以在页面源码模式下被查看;
- 用户名和密码的输入框中分别输入典型的“SQL注入攻击”字符串,验证系统的返回页面;
- 用户名和密码的输入框中分别输入典型的“XSS跨站脚本攻击”字符串,验证系统行为是否被篡改;
- 连续多次登录失败情况下,系统是否会阻止后续的尝试以应对暴力破解;
- 同一用户在同一终端的多种浏览器上登录,验证登录功能的互斥性是否符合设计预期;
- 同一用户先后在多台终端的浏览器上登录,验证登录是否具有互斥性。
兼容性
- 不同浏览器下,验证登录页面的显示以及功能正确性;
- 相同浏览器的不同版本下,验证登录页面的显示以及功能正确性;
- 不同移动设备终端的不同浏览器下,验证登录页面的显示以及功能正确性;
- 不同分辨率的界面下,验证登录页面的显示以及功能正确性。
微信红包测试用例 *****
从业务流程考虑:
单个红包:
- 红包金额为空、0、0.01、200.00、200.01、199.99、200
- 留言输入数字、字母、汉字、特殊字符
- 留言长度
- 留言复制粘贴
- 表情选择收藏表情、其他表情
- 删除表情、重新选择表情
- 选择支付方式:零钱、银行卡、添加新卡支付。其中钱数<红包钱数、其中钱数=红包钱数、其中钱数>红包钱数
- 使用指纹确认付款(正确的、错误的指纹)
- 使用密码确认付款(正确的、错误的密码)
- 红包成功发送后 相应支付方式中钱数减少(减少金额与红包金额一致)
- 接受者能看到红包具体信息,红包金额、留言、表情均能正确显示
- 红包被拆开后显示已领取,领取者零钱中增加正确金额,再次领取只能查看红包信息
- 发红包者自己领红包
- 红包24小时未被领取提示红包被退回,相应支付方式中钱数增加(增加金额与红包金额一致),对方不能领红包
群发红包-普通红包:(只写了与单个红包不同的地方)
- 红包个数 为空、0、001、100、99、101
- 红包拆开每个金额一样 均为发红包时设置的单个金额对应的钱数
- 红包被拆时,有相应提示
- 发红包者自己领红包
- 红包24小时内未被拆完,剩余钱被退回,相应支付方式中钱数增加
群发红包-拼手气红包:
- 红包总额/红包个数<0.01
- 红包每个人拆开金额不同,总金额与发红包设置的总额一致
- 红包24小时内拆完后显示最佳手气
- 红包24小时内未被拆完不显示最佳手气
兼容性:安卓、苹果 不同型号版本手机
UI测试:界面无错别字,风格统一
中断测试:不同应用之间切换、断网、来电、短信、低电量、手机没电
网络测试:2g/3g/4g WiFi 移动联通电信 弱网 无网
微信朋友圈测试用例 *****
当给出的功能比较笼统的时候,可以想一想这个大功能有哪些小功能 然后再考虑这些小功能的业务流程或者说使用场景逻辑,从中提取测试点,提取到测试点之后再使用等价类法、边界值法等方法设计具体的设计用例。
功能测试
1 朋友圈发送功能
1)只发送文本
a、考虑文本长度:1-1500字符(该数据为百度数据)、超出最大字符长度
b、文本是否支持复制粘贴
c、为空验证
2)只发送图片
a、本地相册选择/拍摄
b、图片数量验证:1-9张图片、超出9张
c、为空验证
3)只发送视频
a、本地相册选择/拍摄
b、视频秒数验证:1-10s,超出10s
c、视频个数验证:1个,超出1个
d、视频格式验证:支持的视频格式,例mp4、不支持的视频格式
e、视频大小验证:苹果400kb以内、Android200-300kb(此为百度数据)、超出规定大小
f、视频预览增删改操作
g、为空验证
4)发送文本+图片:输入满足要求的文本、图片进行一次验证
5)发送文本+视频:输入满足要求的文本、视频进行一次验证
6)发送图片+视频:不支持发送
7)朋友圈发送内容是否有限制,例如涉及黄赌毒等敏感字
8)所在位置
a、不显示位置:发送到朋友圈动态不显示位置
b、选择对应位置:搜索支持、自动定位、手动编辑
C、点击取消,返回上一级页面
9)谁可以看
a、设置公开:所有朋友可见
b、设置私密(仅自己可见):自己查看朋友圈-可见、好友查看朋友圈-不可见
c、设置部分可见(部分朋友可见):选择的部分好友-可见、不被选择的好友-不可见、是否有人数上限
d、设置不给谁看(选中的朋友不可见):不被选中的朋友-可见、被选中的朋友-不可见、是否有人数上限
e、点击取消,返回发送页面
10)提醒谁看
a、提醒单人/提醒多人:被提醒的朋友-收到消息提醒、未被提醒-未有消息提醒
b、是否有人数上限
c、点击取消,返回发送页面
11)同步QQ空间:默认不同步、同步到QQ空间
12)取消发送朋友圈操作
a、选择相机,点击取消,返回朋友圈页面
b、进入朋友圈发送页面,选择文本图片,点击取消
13)朋友圈当天发送次数是否有上限限制
2、朋友圈浏览功能
1)文本查看:
a、过长文本内容是否隐藏,并支持查看全文
b、右键选择复制、收藏、翻译
c、url链接是否支持点击跳转网页
2)图片查看
a、小图右键支持收藏/编辑
b、点击支持大图浏览
c、选择发送给朋友、收藏、保存图片、编辑
d、多张图片支持左右滑动浏览
3)视频查看
a、右键视频支持静音播放/搜藏
b、点击视频播放按键支持播放视频
c、选择发送给朋友、收藏、保存视频、编辑
4)分享动态浏览:QQ空间/公众号文章/非腾讯产品分享后朋友圈是否正常显示
5)赞:点赞、取消点赞
6)评论
a、评论长度:评论字数合理长度、评论超过字数上限
b、评论类型:纯中文、纯数字、纯字母、纯字符、纯表情(微信表情/手机自带表情)、混合类型、包含url链接;
c、评论是否支持复制粘贴
d、为空验证
e、发表评论后删除
f、评论回复操作
7)删除朋友圈动态
8)更换相册封面
9)刷新是否正常获取新动态
10)上滑是否加载更多
界面/易用性测试
1、技术人员角度:页面布局设计是否跟产品原型图/ui效果图一致
2、但除了考虑1之外,我们同样要考虑到用户使用:功能操作是否简便,页面布局排版风格是否美观合理,提示语相关信息是否易于理解
中断测试
1、主要考虑:a)核心功能 b)当前功能存在实时数据交换,例发朋友圈、浏览朋友圈进行中断,是否容易出现崩溃
2、中断包括:前后台切换、锁屏解锁、断网重连、app切换、来电话/来短信中断、插拔耳机线/数据线
网络测试
1、三大运营商不同网络制式测试
2、网络切换测试:WIFI/4G/3G/2G
3、无网测试:对于缓存在本地的数据,部分朋友圈信息是否支持浏览
4、弱网测试:
a、延时:页面响应时间是否可接受、不同网络制式是否区分超时时长、出现请求超时,是否给予相应的提示
b、丢包:有无超时重连机制、如果未响应,是否给予相应提示
c、页面呈现的完整性验证
兼容性测试
1、Android手机端、苹果手机端、pad版(主流)功能界面显示是否正常
2、各平台朋友圈展示数据是否一致
安全测试
发送朋友圈时,文本输入脚本代码,是否出现异常
性能测试
1、服务器性能测试
可通过loadrunner/jmeter工具实现,主要关注TPS(Transactions per Second/每秒处理事务数)、QTP(Queries per Second/每秒查询服务器次数)、响应时间、吞吐量、CPU、内存等
2、app客户端性能测试
可通过GT工具实现,运行时关注cpu、内存、流量、电量等占用率
3、app压力稳定性测试
通过monkey工具实现,频繁发送朋友圈,浏览朋友圈请求,是否容易发生崩溃