导图社区 Web测试读书笔记
Web安全测试--读书笔记Web安全测试 第一章 绪论 1.1 什么是安全测试 安全测试就是要提供证据表明,在面对敌意和恶意输入的时候,应用仍然能够充分地满足它的需求。 提供证据: ...
编辑于2022-11-07 10:44:37 上海《Web测试》读书笔记
功能测试-技术篇
1、输入框中输入超过最大允许值造成页面跳转溢出
input的验证点
特殊字符
超长字符
负值
0值和null值
很大的数值
边界值分析法
黑盒测试方法
边界值测试法通常是作为等价类测试法的补充,和等价类测试法结合起来用,每个等价类的边界部分就可以作为边界值的测试用例之一
边界情况
时间:跨年、跨月
纯数字:数字的类型和取值范围
数据表:数据表设计的字段长度
测试用例设计原则
1、测试用例的代表性
2、测试结果的可判断性
3、测试结果的可再现性
2、索引值计算错误使资源缩略图显示和大图展示不一致
在使用第三方库实现功能时,一定要把使用的函数方法中的参数都核对清楚
探索性测试
自由式探索测试
基于场景的探索测试
基于策略的探索测试
基于反馈的探索式测试
3、测试Web Service 能否正常提供JSON数据
参数存在和不存在二种情况
返回的数据关联关系是否正确
查看生成的JSON数据中,一些特殊类型的数据是否和数据库完全一致
float类型精度是否有不同
长字符串是否会被截断
服务是否需要支持HTTPS加密
性能测试:多线程调用是否能在期望时间返回数据
安全测试:是否会导致SQL注入等安全问题;特殊字符是否会影响json的分割
异常处理:将参数换成错误的测试,例如null、很长的字符串、空字符串、英文字符、其他字符等
4、利用JavaScript加载的漏洞提前购买抢购商品
浏览器的渲染线程和JS执行线程是互斥的,并且js默认是阻塞加载的,页面的下载和渲染都必须听下来等待脚本执行完成,js执行过程耗时越久,浏览器等待响应用户输入的时间就越长。
5、过长的控件名称造成其他元素显示错位
select: 下拉列表数据的正确性,数据被选中是否正确,是否变形,是否只读,多选/单选是否正确
label: 文本是否正确,文本字体、大小、颜色、间距是否正确,for属性是否绑定了正确的元素等
input: 根据不同的type属性,输入字段拥有很多种形式,可以是文本字段,复选框,掩码后的文本空间,单选按钮,按钮
text: 是否只读;SQL注入攻击;输入内容超过文本框长度是否引起变形
button: 点击按钮后触发的行为和期望不符合;页面卡死未响应;点击后变形等
checkbox: 选中/取消是否有效,文本长度过长是否引起形变;页面刷新后是否被自动取消/勾选等
radio: 单选是否有效;文本长度过长是否引起形变;页面刷新后是否被自动取消/勾选等
image: 图片加载是否正确;图片加载失败或者关闭时是否符合预期,鼠标指针移动到图片上后显示的文字是否正确,图片是否可以正确点击/拖拽等
submit: 提价信息完整性
6、多次操作本该禁用的页面组件造成服务器出错
只允许对该类功能【新增、删除】按钮操作一次,在用户操作之后,不仅需要把对应功能按钮置灰,同时需要取消这些功能按钮上面绑定的事件响应处理机制。
7、页面跳转后出现HTTP 400错误
cookie长度过长,导致Request Header长度超标,最后产生HTTP Error 400
HTTP Request Header长度限制
理论上Header多大都是可以的,但实际上各个主流浏览区都对Header长度进行限制,从几十KB到几百MB不等。服务端也可以对Header长度做限制【Nginx】
不限制的影响:可能被黑客攻击,比如DDoS,黑客可以利用这一点,发送一个非常大的请求,会占用服务器一个进程专门处理这个请求,此类请求数量过多时,服务器就无法提供其他对外服务
8、使用没有添加时间戳的缓存,使用户看到过期的数据
本地缓存的资源文件和服务器端最新的资源文件名称不一样,浏览器就要从服务器端获取新的资源文件,如果一样,就使用本地缓存的资源
9、代理服务器过渡缓存文件导致读取错误的账号信息
Session: 服务端保存的数据
Cookie:客户端浏览器中报错的数据
10、多余的空格造成服务器被删除
sudo和su
sudo用于类UNIX操作系统如:BSD、Mac OS X、GNU/Linux。允许用户通过安全的方式使用特殊的权限去运行程序
su命令可以让操作者在虚拟控制台切换当前用户账户,使用su的缺点之一是必须要先获取超级用户的密码
Linux文件权限
Linux系统中的文件和目录通过使用访问许可权限,来确定谁能通过何种方式进行访问和操作,文件和目录的访问权限分为只读、只写和可执行3种
用户能使用Linux系统自带chmod命令来重新设定访问权限,也能利用chown命令来更改文件或目录的所有者,或者通过chgrp命令来更改文件或目录的用户组
虚拟化
虚拟化是一种资源管理技术,将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,供多个用户共享使用
11、IE 9不支持占位符导致搜索行为异常
浏览器内核
chromium/chrome(ios除外)与opera使用的浏览器引擎是基于Blink,是webkit的一个分支
fixbox网页浏览器使用了Gecko引擎
IE使用的是Trident引擎
功能测试-测试覆盖篇
1、设计测试时对需求分析不透彻导致给予用户错误的折扣
正交试验设计法:是一种针对多个输入值对测试结果产生影响的情况设计测试案例的方法
一:确定因素。例如不同的输入值以及测试环境
二、确定因素的取值范围。例如输入值的类型决定了取值范围等
三、选取每个元素的代表值。可以使用等价类划分和边界值分析等测试技术来确定因素在其选取范围中有那些代表值。
四、制作正交表。根据因素的相关关系,选择合适的因素进行排列组合,生成适合测试目的的正交表
五、根据正交表的结果设计测试用例
实例化需求:是一种实践方法,让业务和技术人员一起,使用列举满足功能的需求的、具有代表性的例子的像是,在项目初始阶段就分析和梳理清楚序曲,避免需求的遗漏和误解
从目标中获取范围
用实例进行描述
精炼需求说明
自动化验证,无须改变需求说明
频繁验证
演进出一个文档系统
2、页面字段依赖导致表单提交时出错
表单字段之间有依赖关系,没有同步更新导致的
3、修改产品代码时忽视了对遗留数据的处理
如果对功能涉及的数据字段有了修改,一定要测试对遗留数据的处理和兼容情况,最好再设计和编写代码的时候就考虑对遗留数据进行数据迁移。
数据迁移:指对关系性数据库Schema的增加变更或者转换到新/旧的版本时都需要进行数据迁移
数据迁移的方法:系统切换前通过工具迁移、系统切换前通过手工录入、系统切换后通过新系统生成。
数据迁移的策略:一次迁移、分次迁移、先录后迁、先迁后补等
数据迁移的实现:数据迁移前的准备、数据迁移的实施和数据迁移后的校验
4、基础代码的改动影响到了其他相关产品,造成了程序出错
特性开关:是一种通过在配置文件定义开关来控制产品功能的方法,通常会伴随着持续部署进行使用。通过修改配置文件中的toggle(打开或关闭)来操作代码的发布,但是功能对客户不可见
5、异常场景处理不全面导致功能缺陷
问题:负责网站流量的负载均衡的分发服务器不定时地会出现问题,转发的请求有时会丢包
负载均衡:是用来在多台服务器(集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最佳化的资源使用、最大化的吞吐率、最小化响应时间,同时避免过载的技术手段。
一个应用利用多台服务器提供单一服务:例web网站的服务,数据库的服务,DNS服务
防御式编程:核心思想是认为所有的程序都会有问题,所以对于外部输入和依赖,都采取不可信的态度,在自身代码中针对外部条件坑你出现的各种问题进行处理,从而保证产品自身的健壮性和稳定性
6、时区不一致造成邮件发送异常
正面测试:按照功能描述,测试系统是否完成了相应的功能
负面测试:测试系统不应该执行不该完成的功能或者出现异常
1、特殊字符。尤其是单引号这种字符,有可能造成SQL注入
2、必填项的校验。如果必填项不填写,是否能够成功提交,以及是否会出现错误提示
3、字段类型的测试。例如针对日期格式,如果输入格式不正确程序如何处理;如果只能输入正整数,那么输入0、负数或者非常大的整数以及小数,程序如何处理
4、字段长度的测试。例如,限制输入100个字符,能否通过复制等手段输入超过100个字符。
5、边界值的测试。例如,只允许输入100以内的整数,呢么输入99、100、101都应该出现什么现象,都需要测试
6、对于提交等功能,如果快速点击是否会出现多次提交。
7、多入口功能的特殊处理造成的Bug
代码重用【代码复用】:多个功能的代码实现是一致或者很相似,就把通用的代码抽取出来,从而达到代码重用的目的
功能测试-测试实践篇
1、修改重置金额范围遗漏的产品Bug
将范围从5-50变为0.1-10,没有考虑到当用户在之前的范围中输入1的时候,系统会自动将数值改为5,导致用户无法输入自己想要的数据
在测试用例本身的设计时,需要考虑到数值对于测试用例的等价类划分是否一致
2、针对UI设计稿的测试思路
一、页面效果:边距、字体大小、字体颜色、图片大小、图片颜色等
二、UI设计图是否适用于具体屏幕尺寸:是否支持各种大小的屏幕【自适应】
三、重点关注后台数据变化动态影响界面显示
3、前后端分离测试时需要注意测试隔离
契约测试:同时对前后端都进行Mock,使它们随时都使用的是一直的API接口定义,也只需要维护单一的API接口
契约测试工具:Pact、Pacto and Janus
API测试:是针对系统所提供的API做个方面的验证
待测API的目的是什么,谁是使用者
待测API会在什么环境下使用
待测API在异常环境下会不会有非期望的响应
这个测试需要测什么功能点
各个功能点的测试优先级
如何定义期望返回的结果是成功还是失败
待测API会不会和其他系统有交互(修改代码后影响其他系统)
测试之前,要搞清楚的问题
检查API是不是根据你输入的数据返回期望的结果
验证API是不是返回结果或者返回异常结果
验证API是不是正确触发其他event或者正确调了其他API
验证API是不是正确更新了数据等
验证内容
常用的接口测试工具:SoapUI、JMeter和Postman等
4、账号关联过的手机号会一直收到短信验证码
解绑手机号的时候,系统只是单纯地删除了用户信息表里的数据,并没有处理其他关联的数据
常见关系型数据库管理系统
开放源代码数据库系统
Apache Derby: Apache软件基金会的纯Java数据库管理系统
LevelDB: Google所研发的键/值对数据库变成库
MySQL:网络上十分流行的数据库服务器,若结合Linux系统、PHP脚本技术和Apache Web服务器使用,则称为LAMP。
SQLite: C库,支持完全的SQL标准数据库,基于命令行。
商业数据库系统
DB2 IBM的企业级数据库产品
Microsoft Access: 微软公司Office组件之一,通常用来做基本的数据库开发,数据量膨胀之后通常采用Microsoft SQL Server。
Oracle Database: 最受欢迎的商业数据库,也是很多企业采用的数据库
Teradata:功能非常强大,适用于非常海量的数据,通常用来从事数据仓库。
常见的SQL语句
查看数据库: SHOW databases
选择数据库:USE database_name
表定义信息:DESCRIBE table_name
插入数据:INSERT INTO table_name (field_1...field_n) VALUES (value_1...value_n)
更新数据:UPDATE table_name SET field_1=value_1...field_n=value_n WHERE CONDITION
删除记录:DELETE FROM table_name WHERE CONDITION
.....
5、提高测试效率的一个捷径
测试过程中遇到了之前测试过的类似功能
测试无捷径
(1)可靠的日积月累
(2)通过只是积累
(3)更多的测试经验
(4)同业务分析师、项目经理、开发人员沟通、可以激发出更多的测试灵感和思路
6、缺陷VS功能
A/B testing的工具Optimizely
碰到问题是否是Bug,是否真的需要修复,要结合其背后的技术实现和原因进行分析。
7、关于一次缺陷大扫除的结果分析
由产品经理、开发、测试、BA、设计人员等在上线前对产品进行检查,从不同视角让潜藏的Bug浮出水面
功能测试-业务需求篇
1、图片轮播的自动播放和手动播放冲突
在使用第三方库的时候不要掉以轻心,更不能默认为无缺陷。使用第三方库时,不仅要了解其功能,还要了解它当前性能是否能满足项目需求,从而全面地进行测试覆盖
第三方库的测试
(1)著名的开源软件---测试精力偏向于自有软件与第三方库的调用过程上,也可借助工具检查自有软件发出的参数,以及第三方库的返回结果,查看其是否符合预期
(2)业界质量口碑中上的---除了(1)的测试外,还要做更多端到端的测试,甚至花费更多的时间确保使用第三方库后一切正常
(3)偏门、质量不高的----测试工作量分为二个部分,自有软件和第三方库。
2、删除账号造成购买记录中出现空白记录
如何避免:当用户删除自己的账号时,只是在数据库的对应字段中标记为已删除,而不会真实删除这条账号信息
设计功能测试用例时要站在全局的角度思考是否有其他功能与之关联并且会造成影响,进而设计出覆盖更全面的测试用例
3、产品使用本机时间造成用户不用付费
服务器和本机时间不一致的原因
如果是非Mac电脑,可能是主板上CMOS电池没电了
如果是日期不对,时间正确,可能是时区设置不正确
也可能是和进行同步的服务器连接不上,或者同步服务器有问题
恶意软件造成
4、注册和登录功能限制输入不一致导致功能出错
特殊字符
空格
货币符号:¥ $等
数学符号
非英语的字母语言字符
中文标点符号(全角)
特殊汉字
转义序列:\n \r \t
转义字符:> <
系统保留字符:null NULL等
SQL语句:
脚本函数
5、复制图片可以绕过对添加图片大小、数量、格式的限制
Base64编码:是一种基于64个可打印字符来标识二进制数据的方法。
安全性测试
1、链接格式暴露安全隐患
通过修改链接地址来查看其他用户的信息
动态虚拟键盘:防止别人偷窥,也可以防止后台黑客软件和远程监控软件的截图获取密码,一般此类攻击软件获得的动态虚拟键盘截图会显示成一片黑色,让监视者无法看到键盘的点击位置
SQL注入:黑客防护乳特殊构思的数据,而后台系统没有对输入数据做严格的校验,并执行了这些数据,黑客可能会达到操作后台服务器和数据库的目的
URL篡改
非法获取资源
非法使用URL提供的服务
SQL语句注入
2、细剖如何用OWASP TOP 10补洞
(1)注入
SQL注入
LDAP注入
ORM注入
XML注入
XPath注入
IMAP/SMTP注入
代码注入
命令注入
(2)失效的身份认证和会话管理
系统中涉及隐私数据相关的模块:登录、退出、超时、记住我、密码管理、保密问题、账户更新等
敏感信息是否被加密
(3)跨站程序脚本攻击
XSS:是指攻击者利用网站程序对用户输入过滤不足,输入可能显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问这进行病毒侵害的一种攻击方式。
存储型
反射式
基于DOM的XSS
测试工具:Xenotix XSS Exploit Framework
(4)不安全的直接对象引用:一个已经授权的用户,通过更改URL的一个参数,访问到原本未经授权的对象
(5)安全配置错误-自动扫描
(6)防止敏感信息泄露
敏感数据:银行卡号、身份验证凭证、医保卡、各类密码等
(7)功能级访问控制缺失:允许未被授权者访问需要授权的功能
(8)跨站访问请求伪造:让受害者在已经登录某站点的情况下点击某个链接,从而使用用户登录后存储在浏览器本地的Cookie信息去访问恶意网站,或者执行恶意脚本,以达到攻击的目的
(9)使用含有已知漏洞的组件
(10)未经验证的重定向和转发
3、前台修改JavaScript可以输入超限字符
通过开发者工具去修改前端代码
4、页面没有屏蔽用户执行JavaScript代码导致XSS攻击
开源安全性测试工具:Zed Attack Proxy、Burp Suite
5、多度暴露服务器信息也会造成安全问题
心脏出血漏洞:出现在一个广泛使用的加密程序库OpenSSL中,缺陷在OpenSSL代码实现,而不是SSL/TLS协议本身,所以除了OpenSSL之外其他的SSL/TLS实现方式,如GnuTLS和Mozilla的NSS安全服务没有受到影响
6、日志中的信息泄露
7、打开陌生网页后,在网站上存储的信息丢失了
8、包含在受限PDF里的缩略图权限不受限制
个人验证信息是关于一个人的任何数据,这些数据能帮助识别这个人。
性能测试
1、性能测试脚本无法使用
JMeter性能测试工具:基于Java的压力测试工具,它通过启动多线程模拟用户访问静态和动态网页资源,除了做网页压力测试,JMeter也可以做接口及FTP服务器压力测试,并提供多样性的测试报告。
正则表达式:正则表示式使用特定语法来描述、匹配一系列符合某种模式和规则的字符串。
2、错误的HTTP状态码增加了服务器的负担
应该先由“数据验证”模块进行数据正确性的校验,只有数据正确的请求才会发送给API进行处理,这样在一定的程度上缓解服务器的压力
3、不需要模拟用户的操作步骤进行性能测试
将能分离的对服务进行测试的部分,简化为只进行服务测试的性能测试脚本,而不是使用用户操作步骤的测试方式
内容分发网络:CDN利用最靠近每个用户的服务器,去更快、更可靠地将网络资源分发给用户。内容分发网络所需要的节点数量因网络请求数量而不同,机器数量可能会超过上万台服务器
4、服务端没有考虑分页而导致的性能问题
将服务器的数据都发送给前台的富因特网应用程序进行处理,导致页面操作卡顿
富因特网应用程序:RIA是更近似于传统桌面的网络应用系统,用户使用富因特网应用时,最直观的体验时界面响应比网页要快很多。RIA系统将大部分处理工作从服务端移植到客户端,仅保留一些必要数据与服务器端进行信息交互。
5、服务器端压力测试
Web项目压力测试
服务器端的压力测试
单个页面加载时间的测试
网页中其他可以优化的组件进行性能测试
首先寻找需要做的性能测试点,然后确定需要达到的性能指标,最后在测试中根据实际情况判断是否需要设置参数化等细节,并分析性能测试数据,找出疑惑点,究其原因,最终确定性能测试结果是否有效,如果性能测试结果确实有问题,则要考虑下一步的性能调优。
6、前端性能测试的思考点和二个工具
进行页面加载速度测试需要思考那些点?
(1)判断网站的真实用户在那里
一般选择该网站的主要用户群所在地理区域作为测试点
(2)多次测试获取平均值
(3)第一次加载时间和重复加载时间
(4)确定期望达到的性能指标
2-5-8原则:用户能够在2s以内得到响应时,会感觉系统的响应很快;当用户在2~5s之间得到响应时,会感觉系统的响应速度还可以;当用户在5~8s以内得到响应,会感觉系统的响应速度很慢。
做前端页面性能测试的二个工具
Selenium是一个用于Web应用程序测试的测试工具
测试浏览器的兼容性:测试应用程序看是否能够很好得工作在不同浏览器和操作系统之上
测试系统功能:创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成.Net、Java、Perl等不同语言的测试脚本
WebPageTest
(1)允许选择真实地理位置中的测试机
(2)让测试过程自动重复多次并计算出平均值
(3)模拟真实网络速度
PageSpeed Insights: 谷歌开发的可以分析前端代码如何优化的工具,包括帮助分析如何优化缓存、减少请求大小、优化浏览器渲染等方面。
自动化测试
1、自动化新手入坑,测试数据管理
Selenium WebDriver 指的是语言绑定和各个浏览器控制代码的实现。 这通常被称为 WebDriver。WebDriver 以本地化方式驱动浏览器,就像用户在本地或使用 Selenium 服务器的远程机器上所做的那样,这标志着浏览器自动化的飞跃。
页面对象:是一种UI自动化设计模式。Page Object就是将页面元素的变化封装起来,提供API给外部测试代码调用,从而达到测试代码与Web页面元素的变化解耦。
优点
(1)将测试代码与页面元素的操作解耦
(2)将Web页面元素的访问统一化、规范化、结构化。
(3)封装不同浏览器对元素访问的差异
(4)易于实现Web元素访问的DSL
2、本地环境运行正常,在测试环境执行就出问题了
Thread.sleep
Explicit Waits
Implicit Waits
dom元素相关测试,需要增加时间延迟,否则会出现元素找不到的问题
3、编写自动化测试时需要考虑投入产出比
金字塔模型:底层单元测试应多于以来GUI的高层端到端测试
越低层的测试,无论时修改还是调试,相比高层的测试来讲成本更低,二七容易覆盖到一些UI上不容易表现出来的场景。
基于UI的端到到测试具有这样的缺点:脆弱、编写成本高,而且运行好事
引入面向应用程序服务层的中间层测试,这些测试即保持了端到端测试的诸多优势,又避免了许多与UI框架相关的复杂性。
将自动化测试集成到持续集成环境,这样每次提交新代码时都会运行一遍,这样自动化可以更多发挥保护网的作用。
自动化测试成果度量
(1)外部缺陷率
(2)投入产出比分析
(3)自动化系统自身质量
端到端测试:也成为系统测试,其实时对整个系统进行测试
4、测试框架和工具选型也需要考虑Debug
BDD:行为驱动开发的方法和实践
语义层:负责对测试场景进行文字扫描
胶水层:负责把测试场景的文字描述和驱动页面元素的具体方法结合起来
实现层:具体驱动页面元素完成相应行为
Concordion:提供了很好的文档支持,而HTML可以更加自由地描述业务需求,同时增加样式,添加交互,放入视频和图片等。不过由于Concordion目前支队C#和JAVA支持较好。
Cucumber:是流行的BDD工具,它使用自己的关键字Given/When/Then编写feature文件。上手简单,社区活跃,文档表现力不足
Gauger:Specification文件由Markdown组成,相对纯文本由一定程度的提升,但不如Concordion灵活。Gauger支持Java、C#、Ruby相比Cucumber在跨平台式需要整体切换,Gauge更容易跨平台
5、自动化测试框架选型调研需要使用复杂场景
自动化测试:是指把手动执行的测试用例通过编写代码等方式让测试的执行可以脱离测试人员的手动操作而让计算机完成。
测试自动化:测试自动化所涵盖的范围要远远大于自动化测试。测试包含测试环境、准备测试数据、进行分析、设计测试计划及用例,甚至式在测试过程中执行探索性测试等。
6、使用Mock导致漏测很多真实环境的场景
Mock测试的优势:加快开发和测试的速度,也可以帮助减少E2E测试用例运行时间
没有及时替换掉Mock测试会怎样?可能会穿线集成部分漏测的问题
7、开发UI自动化测试技巧集锦
规划自动化测试数据
(1)编写自动化测试脚本时,分离测试数据和用户场景,让代码更易阅读和维护
(2)重复执行测试用例时,千万不要让测试数据和数据库已由数据发生冲突
(3)测试脚本所依赖的测试数据,根据不同的策略,可以选择不同方式来生成
编写更稳定的测试脚本
代码设计需要注意的点
(1)重复的代码
(2)方法体过长
(3)类中代码过多
(4)过长的方法参数
(5)元素定位的优先顺序
(6)动态的等待时间
(7)自动化脚本中的断言
(8)使用@BeforeTest和@AfterTest初始化和清理测试数据
(9)使用优化后的XPath
(10)让测试脚本独立自主
脚本运行出错,怎么办
(1)自动生成测试报告:运行的详细信息、出错的异常堆栈
(2)截图
(3)记录调试信息
(4)标注断言信息
缩短脚本运行时间
(1)增加测试机器,多台机器并发运行互不依赖的测试脚本。
(2)通过API注入的方式插入测试数据,从而缩减测试数据的准备时间
(3)给用例添分类标签,把核心用例加到冒烟测试标签中
(4)使用Mock方法加快测试脚本执行速度
移动Web测试
1、测试多选框
测试需要注意
(1)界面上每个功能点都要测到,不能假设它时运行正常的
(2)要在所有项目需要支持的浏览器上进行测试,往往老版本浏览器对JavaScript和CSS支持的不够好。
(3)在实际环境中,用手指点击按钮,好不好用,超级明了
2、移动网页的所有旋转不一致
移动Web事件
(1)屏幕旋转事件:orientationchange这个事件时在设备发生旋转的时候发生的事件
(2)手势事件
Touchstart:触摸开始的时候出发
Touchmove:手指在屏幕上滑动的时候出发
Touchend:触摸结束的时候触发
Touchcancel:系统停止跟踪触摸时会触发,当一些更高级别的事件发生的时候(如电话接入或者弹出信息)会取消当前touch操作,触发ontouchcancel
(3)触摸事件
gesturestart:当一个手指已经按在屏幕上,而另一个手指又触碰到屏幕时触发。
gesturechange:当触摸屏幕的任何一个手指的位置发生变化时触发
gestureend:当任何一个手指从屏幕上移开时触发
(4)scroll事件:在PC上的触发时机和手机上的触发时机不同,scroll事件在手机上,只有在滚动停止的时候才会触发,因此这个事件在移动端用得比较少,因为触发的时机已经晚了
响应式设计和自适应设计
响应式设计:是指建立一个网页,通过CSS Media Queries、Content-Based BreakPoint(基于内容的断点)等技术来改变网页大小以适应不同分辨率的屏幕
自适应设计:不同类别的设备建立不同的网页,检测到设备分辨率大小后调用相应的网页。目前大部分自适应设计网页主要针对320、480、760、960、1200、1600
3、移动设备碎片化使移动端网页测试更加困难
导致的常见问题
(1)显示问题。页面元素是否显示唱出,元素是否又重叠,元素的尺寸和位置是否又偏差,元素是否可以操作等
(2)需要确保在所有支持的设备上这些手势都能触发同一种功能,而不会导致和操作系统升值ROM的手势冲突
(3)验证移动产品的功能及非功能需求的成本大幅增加
针对移动产品测试的思路
(1)确定高优先级的测试设备
(2)功能测试在某个标准色设备上进行,之后在支持的设备上测试界面及可用性
(3)重复利用自动化测试和云测试平台提高测试效率
4、测试关键字输入框
(1)验证可获得结果的查询以及翻页
(2)测试不同搜索频道
(3)检查系统定制的“404 Not Found”页面是否层正确显示
(4)测试特定文本查询
(5)特殊符号处理
(6)测试关键字联合查询
(7)测试多语言支持
(8)验证过长字符串
(9)多个输入域关联查询
(10)在不同手机浏览器查看界面显示
(11)字段值回填功能
(12)测试联合查询生成URL的情况
(13)安全问题
5、移动网页上过长的下拉菜单
移动网页中的易用性:移动端网站更倾向域展示内容更集中、页面更少更长。尤其是对于触屏手机来说,通过上下滚动页面的操作方式比基于键鼠的桌面设备要容易很多,但是也不意味着所有的内容都应该被一股脑的呈现在一个页面中。
6、字符集不同导致显示乱码
(1)尽可能保证移动设备上字符编码和服务器使用的字符编码是一致的,避免显示乱码的问题。
(2)对于表情符合的支持的问题:由于Unicode是随着操作系统升级的,为了避免不支持的表情符号产生问题,产品只支持特定版本的Unicode;对于少数不支持的表情符号,产品会把他们当作纯文本处理
emoji和Unicode
Unicode是一个标准,该标准立志于能让所有的字符在全世界使用相同的拜尼马方式进行编码一个Emoji对应一个独特的Unicode编码,而Unicode编码只是一个描述方式,Unicode编码和图标联系在一起的工作取决于操作系统设计师字体设计师,这就是不同平台看到的emoji图标不一样的原因。
字符编码:是把集中的字符编码为指定集合中某一对象,以便文本在计算中存储和通过通信网络进行传递。
7、重现一个让手机APP崩溃的线上Bug
当步骤很多无法记住的时候可以使用屏幕录制功能
非功能测试
1、搜索结果为单数时仍显示复数名词
多语言测试,不仅要检查文字是否进行了翻译,而且需要对不同语言的基本语法有所了解,这样才能看得出语句是否存在不通顺或者语法错误的问题。
2、辅助功能引发的法律风险
由于网站需要在多个国家和地区发布,而很多国家对于面向大众的网站的可用性都是有法律要求的。
测试辅助功能的工具
WAVE(Web Accessibility Evaluation Tool)
Web Accessibility Toolbar是一款提供给开发人员用于检查页面结构和可用性的工具【IE】
计算机辅助功能:是指软件或硬件系统为了让在一个或多个方面有障碍的人士也可以使用,从而实现的一组功能
3、辅助功能和键盘用户的冲突:快捷键的顺序问题
通过tabindex控制输入顺序:键盘用户通常会使用Tab键将光标从一个可获取焦点的元素有序地移动到下一个元素。它们的默认焦点顺序取决于它们在源代码出现的顺序。
4、网站国际化和本地化测试中碰到的问题
本地化和全球化的难点
(1)书写方向。比如德语是从左到右,而波斯语、希伯拉语和阿拉伯语是从右到左
(2)相同语言在不同地区的拼法差异
(3)图片和颜色
(4)政府给定的编码
(5)电话号码、地址、国际邮递区号
(6)货币
(7)度量衡。例如公制和英制的单位等
(8)日期跟时间的格式,包含各式日历
(9)数字格式
(10)产品和服务所使用国家和地区的法规
区域设置:locale是计算机中一套定义用户的语言、国家和用于定义用户希望在其用户界面上看到的各种可以改变的选择的参数集合。通常一个locale标识符至少包含一个语言标识符和一个区域标识符
5、过度本地化快捷键
快捷键:又叫组合键或热键,是指通过某些特定的按键、按键顺序或按键组合来完成一个操作
访问键:在应用程序中,是为了提高效率或为不便操作鼠标的人提供访问途径,菜单等控件项目上往往带有用下划线标注的快捷键。
快捷键冲突:一个快捷键一般只能对应一个功能,如果二个不同的功能定义了同一个快捷键并且快捷键都启用了,则会发生快捷键冲突,导致快捷键失效。
其他类型测试
1、意料之外的用户操作
(1)如果出现Bug是否会影响到用户的体验和阻碍操作流程的执行
(2)出现Bug是否有其他的解决方案
(3)出现Bug的可能性
测试覆盖率
基于测试需求和测试用例的测试覆盖
基于代码的测试覆盖
2、数据元素应该支持增删改查
3、为什么要关注测试环境之间的差异
同一功能在不同环境中可能存在差异
4、产品环境和测试环境之间基础设施的差异造成的问题
持续集成:是指开发人员从自己的开发分支向产品代码的主干进行交付,频繁进行集成以便更快地得到反馈,使产品的问题,尤其是在开发过程中最容易出现的集成问题尽早暴露出来,从而及早改进可能隐藏的Bug。
持续交付:是在持续集成的基础上,将集成后的代码自动化地部署到更贴近真实运行环境的类生产环境中,这么做可以让我们持续验证部署脚本,以及我们对于开发和测试环境的控制能力。
持续部署:是指当交付的代码通过评审之后,自动部署到生产环境中。
5、大小写造成的部署出错
UNIX:是美国AT&T公司贝尔实验室在1969年开发出来的一种计算机操作系统,具有多任务、多用户的特性。
BSD:最初AT&T公司以低廉甚至免费的许可将UNIX源码授权给学术机构做研究或教学只用,许多机构在此源码基础上加以扩充和改进,形成所谓的“UNIX变种”。其中最著名的就是伯克利软件包(BSD)。
Linux:是一种自由和开发源代码的类UNIX操作系统。
OS X: 是苹果公司推出的一系列基于UNIX的图形用户界面操作系统。
6、集成和系统测试时使用真实的手机号
7、一个有A/B测试引出的Bug
A/B测试:就是针对同一个问题,形成二种或者多种解决方案,之后把用户分组,为不同组的用户推送不同的解决方案,观察、统计和分析用户的喜好,从而选出更合适用户的解决方案。
A/B测试工具:Google提供的Google Website Optimizer、Optimizely提供的A/B测试工具等。
8、隐身的特殊字符
\u2028、\u2029
HTTP状态码
1xx:通知消息
2xx: 请求成功
3xx: HTTP重定向
4xx: 客户端导致的错误
5xx: 服务器导致的错误
9、邮件发送不出去了
Selenium是一个用于Web应用程序进行验收测试的工具。Selenium直接在浏览器中运行,模拟真实用户进行操作。
10、广告条在三种浏览器上崩溃了