Web 测试
电子商务站点的基本结构
相关概念:
SEO
Search Engine Optimization,搜索引擎优化。
SEO 是指从自然搜索结果获得网站流量的技术和过程,是在了解搜索引擎自然排名机制的基础上,对网站进行内部及外部的调整优化,改进网站在搜索引擎中的关键词自然排名,获得更多流量,从而达成网站销售及品牌建设的目标。
ERP
Enterprise Resource Planning,企业资源计划。
功能涵盖生产资源计划、制造、财务、销售、采购、质量管理,实验室管理,业务流程管理,产品数据管理,存货、分销与运输管理,人力资源管理和定期报告系统。
目前,在我国 ERP 所代表的含义已经被扩大,用于企业的各类软件,已经统统被纳入 ERP 的范畴。
它跳出了传统企业边界,从供应链范围去优化企业的资源,是基于网络经济时代的新一代信息系统,主要用于改善企业业务流程以提高企业核心竞争力。
CRM
Customer Relationship Management,客户关系管理系统。
企业用 CRM 技术来管理与客户之间的关系,功能涵盖自动化分析销售、市场营销、客户服务以及应用等流程的软件系统。它的目标是通过提高客户的价值、满意度、赢利性和忠实度来缩减销售周期和销售成本、增加收入、寻找扩展业务所需的新的市场和渠道。CRM 是选择和管理有价值客户及其关系的一种商业策略,CRM 要求以客户为中心的企业文化来支持有效的市场营销、销售与服务流程。
电商平台的分布式多层结构
Web 测试的测试方法
Web 测试的范围
功能
性能
界面
兼容性
安全性
DB
文档
Web 测试的方法
功能测试
功能测试主要从链接、表单、Cookies、设计语言、数据库、文件上传等方面进行
链接
也称超链接,是指从一个网页指向另一个目标的连接关系,所指向的目标可能是一个网页、相同网页上的不同位置、图片、电子邮件地址、文件、应用程序等。
链接最容易出现以下几种错误
错误链接
如 URL 地址拼写错误、URL 后缀多余或缺少斜杠、URL 地址中出现的字母大小写不完全匹配、用户输入的域名拼写错误。
空链接
单击该链接时不会指向任何内容。
死链接
原来正常,后来失效的链接。
孤立页面
指没有链接指向该页面,只有知道正确的 URL 地址才能访问。
表单
表单是系统与用户交互最主要的界面,测试过程主要关注程序是否能正确地处理客户提交的信息,并将信息正确地反馈到客户端。
测试过程中应该注意以下几方面的测试
文本输入框对长度是否有限制。
文本输入框对字符类型是否有限制。
文本输入框模式匹配是否正确,如该文本框只能输入日期格式的数据,那么只能匹配不同的日期格式,而不能匹配其他格式的数据。
各按钮实现的功能是否正确
Cookies
Cookies 能够让网站服务器把少量数据存储到客户端的硬盘或内存,或是从客户端的硬盘读取数据的技术。
Cookie 有哪些用途
自动登录,登录时,选择记住用户名,下次登录会自动带出用户名来。
广告精准投放,当我们用浏览器搜索过一些关键字,如:web 测试书,某手机,打开浏览器时,会推送相关浏览过的商品。
查看 Cookies
打开 IE,在工具栏点工具→Internet 选项→常规→(Internet 临时文件)浏览历史记录→设置,这样可以查看到 Cookies 所存位置,还可以对其进行设置。
Cookies 的测试包含以下几个方面
Cookies 的安全性
Cookie 中最好不要存储一些敏感的信息,需要时应该对 Cookie 中的一些字段进行加密处理。
Cookies 的过期时间是否正确;
Cookies 的变量名与值是否正确;
Cookies 是否必要,是否缺少:一是生成的 Cookie 文件是否与创建的一致,不能多也不能少,二是对于不必要的 Cookie 可以删除。
Cookies 的作用域是否正确合理;
多个 Cookies 的作用域之间关系的测试。
设计语言测试
Web 设计语言版本的差异可以引起客户端或服务器端严重的问题,如使用哪种版本的 HTML 等。
不同的脚本语言,如 Java、JavaScript、ActiveX、VBScript 或 Perl 等,也要进行验证。
关于设计语言的测试,应该注意以下几个方面
不同的浏览器内核引擎不同,会导致与不同的开发语言的兼容情况不同,当前主流浏览器的内核有 Trident、Tasman、Pesto、Gecko、KHTML、WebCore 和 WebKit。
不同的设计语言与平台有不同的兼容性。
不同脚本语言执行的时间也不同。
嵌入其他语言的能力。脚本语言对一些操作无法实现,如读取客户端的信息,此时需要同时借助其他语言来实现。要考虑当前脚本语言对其他语言的支持程度。
系统数据库可能升级,测试时需要考虑脚本语言支持数据库的完善程度
文件上传
只能上传允许的附件类型;
不能上传脚本或可执行文件;
不能单纯以后缀名来判断文件类型;
浏览好文件后,可以正常处理删除目标文件时出现的异常情况;
上传超大文件时可以正常处理,比如给出提示信息等;
上传的文件应该提供接口查看;
上传的文件不应该直接保存于数据库中,而是将文件保存在服务器端硬盘,而在数据库中保存该文件的基本信息;
文件上传到服务器端后应该被重命名,防止文件名冲突。
性能测试
链接速度测试
链接的响应时间不能太长,一般不超过 5 秒。
负载测试(Load Testing)
测试系统能够承受的最大负载(如最大用户量、最大业务量、最大数据量等)以及性能表现。
压力测试(Stress Testing)
测试系统在一定压力下的性能表现,通常业务的错误率不能超过 5%。
界面测试
GUI(Graphical User Interface)即图形用户界面。
格式验证
验证 Web 页面中一些空间默认的标准定义,如默认值、项目按顺序排列等。
导航条测试
各页面导航条是否能正确地显示;
各页面下导航条显示的内容是否正确;
不同状态下(如登录与未登录),导航条显示的内容是否正确;
导航条的每项内容链接是否正确。
拼写和语法测试
验证页面内容、菜单和链接、图片、表格内容的拼写和语法。
页面排版测试
页面标题验证;
页面元素(文字、窗体、菜单、链接、公司商标等)排版验证;
页面图形验证;
页面版本信息验证;
不同分辨率下的页面显示情况验证;
页面长度验证。
Tab 键测试
Tab 顺序正确跳转。
安全性测试
基本安全测试
各种登录模式的安全性验证、对口令各种要求的测试。
用户权限(如功能限制、数据访问限制等)的验证。
Cookie 和 Session 的有效期验证等特殊机制的验证。
敏感数据加密、数据存储安全性的验证。
验证系统的日志文件是否得到保护。
测试软件不会因在异常条件下错误操作而导致不安全状态。
其他各种安全漏洞的检查,如 WSDigger 扫描。
跨站点攻击 XSS
get 方式在 URL 后输入如 name=< script>alert(123456)< /script>,若弹出告警框,说明存在跨站漏洞;查看源文件中若包含完整的字符串< script>alert(123456)< /script>,则不管有没有弹出告警框,都表明存在 跨 站 脚 本 漏 洞 ; post 方 式 在 表 单 的 文 本 框 中 输 入< script>alert(123456)< /script>,若弹出警告或者查看源文件中存在输入的字符串则存在漏洞。
SQL 注入
sql=‘select yhm,mm from users where username=’ +yhmTextField.getTex(t ) +’ and password=’ +mmTextField.getTex(t )’
如用户名中输入 admin’ --后,不输入密码也可以登录。
认证测试
登录页面是否存在验证码,不存在说明存在漏洞。
验证码和用户名、密码是否一次性、同时提交给服务器验证,如果分开提交,则存在漏洞。
在服务器端,只有在验证码检验通过后才进行用户名和密码的检验,否则存在漏洞。
验证码是否为图片形式且在一张图片中,不为图片形式或不在一张图片中,说明存在漏洞。
请求 10 次观察验证码是否随机生成,如果存在一定的规律(例如 5 次后出现同一验证码)说明存在漏洞。
观察验证码图片中背景是否存在无规律的点或线条,如果背景为纯色(例如只
有白色)说明存在漏洞。
验证码在认证一次后是否立即失效。
服务器不能对认证错误提示准确的信息,如用户名错误、密码错误等。
提供合理的锁定策略。
预防认证被绕过,如 sql 注入。
会话管理测试
用户登录后,身份信息不再由客户端提交,而是以服务器端会话信息中保存的身份信息为准。
URL 中不能携带 Session ID 信息。
登录后的页面有明确的"退出"或"注销"按钮,注销时会话信息要清除。
权限管理测试
横向越权:攻击者尝试访问与他拥有相同权限的用户的资源。
纵向越权:一个低级别攻击者尝试访问高级别用户的资源。
文件和目录测试
不存在不需要对外开放的敏感接口或者接口进行了完善的权限控制;
禁止获取敏感的目录或文件信息;
所有对目录的访问均不能打印出文件列表;
禁止访问和下载文档的备份;
不能越权获取到不该获取的文件。
如 DirBuster 扫描。
数据库测试
数据库测试是为了发现错误和缺陷而运行数据库的过程。
数据库测试方法也分为白盒测试和黑盒测试。
数据库黑盒测试
数据库表结构是否合理;
数据结构(如数据类型、长度)是否正确定义,并且需要注意数据结构与输入界面中数据的类型和长度是否一致,如果不一致,数据库则会报错;
表与表之间的关系是否正确,主外键是否合理;
索引的创建是否合理;
存储过程功能是否完整,能否正确接受输入、输出正确结果;
能否正确插入(增加)、更新、删除数据;
数据库操作权限定义是否正确;
能否正确处理并发操作;
表级、列级完整性约束条件是否满足;
数据库的处理能力、可靠性、可维护性、性能是否满足要求。
APP测试
手机 App 测试的范围
功能模块测试
交叉事件测试
性能测试
安全测试
兼容性测试
安装/卸载测试
接口测试
网络测试
手机 App 测试的方法
功能模块测试
运行
App 安装完成后的试运行,可正常打开软件。
App 打开测试,是否有加载状态进度提示。
App 打开速度测试,速度是否可观。
App 页面间的切换是否流畅,逻辑是否正确
注册
用户名密码长度
注册后的提示页面
前台注册页面和后台的管理页面数据是否一致
注册后,在后台管理中页面提示
登录
使用合法的用户登录系统。
系统是否允许多次非法的登录,是否有次数限制。
使用已经登录的账号登录系统是否正确处理。
使用禁用的账号登录系统是否正确处理。
用户名、口令(密码)错误或漏填时能否登录。
删除或修改后的用户,原用户登录。
不输入用户口令和用户名、重复点(确定或取消按钮)是否允许登录。
登录后,页面中登录信息。
页面中有注销按钮。
登录超时的处理。
注销
注销原模块,新的模块系统能否正确处理。
终止注销能否返回原模块,原用户。
注销原用户,新用户系统能否正确处理。
使用错误的账号、口令、无权限的被禁用的账号进行注销。
应用的前后台切换
APP 切换到后台,再回到 App,检查是否停留在上一次操作界面。
APP 切换到后台,再回到 App,检查功能及应用状态是否正常。
App 切换到后台,再回到前台时,注意程序是否崩溃,功能状态是否正常,尤其是对于从后台切换回前台数据有自动更新的时候。
手机锁屏解屏后进入 App 注意是否会崩溃,功能状态是否正常,尤其是对于从后台切换回前台数据有自动更新的时候。
当 App 使用过程中有电话进来中断后再切换到 App,功能状态是否正常
当杀掉 App 进程后,再开启 App,App 能否正常启动。
出现必须处理的提示框后,切换到后台,再切换回来,检查提示框是否还存在,有时候会出现应用自动跳过提示框的缺陷。
对于有数据交换的页面,每个页面都必需要进行前后台切换、锁屏的测试,这种页面最容易出现崩溃。
免登录
App 有免登录功能时,需要考虑 OS 版本差异。
考虑无网络情况时能否正常进入免登录状态。
切换用户登录后,要校验用户登录信息及数据内容是否相应更新,确保原用户退出。
根据 MTOP(淘宝无线开放平台)的现有规则,一个帐户只允许登录一台机器。所以,需要检查一个帐户登录多台手机的情况。原手机里的用户需要被踢出,给出友好提示。
App 切换到后台,再切回前台的校验
密码更换后,检查有数据交换时是否进行了有效身份的校验
支持自动登录的应用在进行数据交换时,检查系统是否能自动登录成功并且数据操作无误。
检查用户主动退出登录后,下次启动 App,应停留在登录界面
数据更新
需要确定哪些地方需要提供手动刷新,哪些地方需要自动刷新,哪些地方需要手动+自动刷新。
确定哪些地方从后台切换回前台时需要进行数据更新。
根据业务、速度及流量的合理分配,确定哪些内容需要实时更新,哪些需要定时更新。
确定数据展示部分的处理逻辑,是每次从服务端请求,还是有缓存到本地,这样才能有针对性的进行相应测试。
检查有数据交换的地方,均有相应的异常处理。
离线浏览
很多应用会支持离线浏览,即在本地客户端会缓存一部分数据供用户查看。
在无网络情况可以浏览本地数据。
退出 App 再开启 App 时能正常浏览。
切换到后台再切回前台可以正常浏览。
锁屏后再解屏回到应用前台可以正常浏览。
在对服务端的数据有更新时会给予离线的相应提示。
App 更新
当客户端有新版本时,有更新提示。
当版本为非强制升级版时,用户可以取消更新,老版本能正常使用。用户在下次启动 App 时,仍能出现更新提示。
当版本为强制升级版时,当给出强制更新后用户没有做更新时,退出客户端。下次启动 App 时,仍出现强制升级提示。
当客户端有新版本时,在本地不删除客户端的情况下,直接更新,检查是否能正常更新。
当客户端有新版本时,在本地不删除客户端的情况下,检查更新后的客户端功能是否具有了新版本的功能。
当客户端有新版本时,在本地不删除客户端的情况下,检查资源同名文件如图片是否能正常更新成最新版本。如果以上无法更新成功的,也都属于缺陷。
升级后可以正常使用。
在线跨版本升级。
定位、照相机服务
App 有用到相机,定位服务时,需要注意系统版本差异。
有用到定位服务、照相机服务的地方,需要进行前后台的切换测试,检查应用是否正常。
当定位服务没有开启时,使用定位服务,会友好性弹出是否允许设置定位提示。当确定允许开启定位时,能自动跳转到定位设置中开启定位服务。
测试定位、照相机服务时,需要采用真机进行测试。
时间测试
客户端可以自行设置手机的时区、时间,因此需要校验该设置对 App 的影响。
中国为东 8 区,所以当手机设置的时间非东 8 区时,查看需要显示时间的地方,时间是否展示正确,应用功能是否正常。时间一般需要根据服务器时间再转换成客户端对应的时区来展示,这样的用户体验比较好。
比如发表一篇微博在服务端记录的是 10:00,此时,华盛顿时间为 22:00,客户端去浏览时,如果设置的是华盛顿时间,则显示的发表时间即为 22:00,当时间设回东 8 区时间时,再查看则显示为 10:00。
PUSH 测试
检查 PUSH 消息是否按照指定的业务规则发送。
检查不接受推送消息时,检查用户不会再接收到 PUSH. 如果用户设置了免打扰的时间段,检查在免打扰时间段内,用户接收不到 PUSH。
在非免打扰时间段,用户能正常收到 PUSH。
当 PUSH 消息是针对登录用户的时候,需要检查收到的 PUSH 与用户身份是否相符,没有错误地将其它人的消息推送过来。一般情况下,只对手机上最后一个登录用户进行消息推送。
测试 PUSH 时,需要采用真机进行测试。
交叉事件测试
又叫事件冲突测试,是指一个功能正在执行过程中,同时另外一个事件或操作对该过程进行干扰测试。如:App 在前/后台运行状态时与来电、文件下载、音乐收听等关键运用的交互情况测试等。
执行干扰的冲突事件不能导致软件应用软件异常、手机死机或者花屏等严重问题。
多个 App 同时运行是否影响正常功能。
App 运行时前/后台切换是否影响正常功能。
App 运行时拨打/接听电话。
App 运行时发送/接收信息。
App 运行时发送/收取邮件。
App 运行时切换网络(2G/3G/WIFI). App 运行浏览网页。
App 运行时使用蓝牙传送/接收数据。
App 运行时使用相机、计算器手机自带设备。
App 运行时插拔充电器。
注意各交叉事件的优先级别,检验系统是否能依据各事件的优先级别依次进行处理。不能因执行优先级别高的事件而导致优先级别较低的事件吊死。
有中英文模式切换的手机要注意中英文模式切换后的功能实现存在的问题。
性能测试
响应时间和资源占用测试
测试 App 中的各类操作是否满足用户响应时间要求。
App 安装、启动、卸载的响应时间。
App 各类功能性操作的响应时间。
在各种边界压力情况下,如电池、存储、网速等,验证 App 是否能正确响应。
内存满时安装 App。
运行 App 时手机断电。
运行 App 时断掉网络。
评估典型用户应用场景下,系统资源的使用情况。
Benchmark 测试(基线测试):与竞争产品对比测试,产品演变对比测试等。
压力测试
反复/长期操作下、系统资源是否占用异常。
App 反复进行安装卸载,查看系统资源是否正常。
其他功能反复进行操作,查看系统资源是否正常。
大数量的测试
在特定环境下,客户端一次性更新大量的数据及人员列表时,客户端能否正常处理,分为三种情况:
客户端第一次使用,第一次就更新大量数据及人员列表。
客户端在平时更新中,更新大量的数据。
客户端已经在手机本地下载很多数据后,再次更新大量数据。
特定场景测试
通过模拟终端低电量(例如 5%电量)的状态来测试功能在该状态下的正确性。
通过模拟终端处于特殊地理位置(例如上海)来测试功能在该状态下的正确性。
通过模拟终端处于特定网络状态下(例如 3G)来测试功能在该状态下的正确性。
深度性能测试
获取 App 在典型使用场景及待机状态下消耗的电量流量消耗。
获取 App 在典型使用场景及待机状态下消耗的流量。
获取 App 在典型使用场景及待机状态下的 CPU 占用率。
获取 App 在典型使用场景及待机状态下内存量。
获取 App 冷启动和热启动耗时内容。
获取 App 特定页面的内容加载耗时。
获取 App 退出的耗时。
获取 App 在典型使用场景下帧率。
安全测试
软件权限
扣费风险:包括发送短信、拨打电话、连接网络等。
隐私泄露风险:包括访问手机信息、访问联系人信息等。
对 App 的输入有效性校验、认证、授权、敏感数据存储、数据加密等方面进行检测。
限制/允许使用手机功能接入互联网。
限制/允许使用手机发送接收信息功能。
限制/允许应用程序来注册自动启动应用程序。
限制/允许使用本地连接。
限制/允许使用手机拍照或录音。
限制/允许使用手机读取用户数据。
限制/允许使用手机写入用户数据。
检测 App 的用户授权级别、数据泄漏、非法授权访问等。
安装与卸载安全性
应用程序应能正确安装到设备上。
能够在安装设备上找到应用程序的相应图标。
是否包含数字签名信息。
JAD 文件和 JAR 包中包含的所有托管属性及其值必须是正确的。
下载 JAVA 程序是通常会发现是两个文件,即 JAR 和 JAD。
JAR 文件:是许多信息经过封装后形成的捆绑体,是一个压缩文件。
JAD 文件:是 Java 应用程序描述器文件。
JAD 文件显示的资料内容与应用程序显示的资料内容应一致。
安装路径应能指定。
没有用户的允许,应用程序不能预先设定自动启动。
卸载是否安全,其安装进去的文件是否全部卸载。
卸载用户使用过程中产生的文件是否有提示。
其修改的配置信息是否复原。
卸载是否影响其他软件的功能。
卸载应该移除所有的文件。
高/低版本覆盖安装。
安装、卸载、更新错误报告。
数据安全性
当将密码、信用卡明细或其他的敏感数据输入到应用程序时,其不会被储存在设备中,不以明文形式将数据写到其它单独的文件或者临时文件中,以防止应用程序异常终止而又没有删除它的临时文件,文件可能遭受入侵者的袭击,然后读取这些数据信息。
输入的密码将不以明文形式进行显示,同时密码也不会被解码。
不同的应用程序的个人身份证不能相互使用。
个人身份证和密码长度等必须有设定的要求。
备份应该加密,恢复数据应考虑恢复过程的异常。
兼容性测试
Android、iOS 版本的兼容性。
手机不同操作系统版本的支持。
手机不同厂家系统的支持。
手机不同尺寸的支持。
手机分辨率兼容性。
网络的兼容性:2G/3G/4G/5G/Wifi,弱网下、断网时。
不同浏览器兼容性。
与其他 APP 兼容性。
安装、卸载测试
生成 apk 文件在真机上可以安装及卸载。
Android 手机端通过使用安装工具,如豌豆荚。
网络测试
外网测试主要实现模拟客户使用网络环境,检验客户端程序在实际网络环境中使用情况进行业务操作。
外网测试主要覆盖到 WiFi/2G/3G/4G/5G/wap、电信/移动/联通、所有可能的组合进行测试。
模拟信号屏蔽时候。
在高山、丘陵、火车上等特殊环境下进行全面测试。
接口测试
Client 端和 Service 端的交互。
Client 端的数据更新和 Service 端的数据是否一致。
Client 端更新时断开。
Client 端更新时,Service 端挂掉。