第四章 Web 测试
描述用浏览器访问 www.baidu.com的过程?

  先要解析出 baidu.com 对应的ip 地址:

• 要先使用 arp 获取默认网关的 mac 地址
• 组织数据发送给默认网关(ip 还是 dns 服务器的ip,但是 mac 地址是默认网关的 mac 地址)
• 默认网关拥有转发数据的能力,把数据转发给路由器
• 路由器根据自己的路由协议,来选择一个合适的较快的路径转发数据给目的网关
• 目的网关(dns 服务器所在的网关),把数据转发给 dns 服务
• dns 服务器查询解析出 baidu.com 对应的ip 地址,并原路返回请求这个域名的 client得到了 baidu.com 对应的ip 地址之后,会发送tcp 的 3 次握手,进行连接
• 使用 http 协议发送请求数据给web 服务器
• web 服务器收到数据请求之后,通过查询自己的服务器得到相应的结果,原路返回给浏览器
• 浏览器接收到数据之后通过浏览器自己的渲染功能来显示这个网页
• 浏览器关闭tcp 连接,即 4 次挥手结束,完成整个访问过程

了解的常用浏览器有哪些?

IE,Chrome,Safari,Firefox,Opera
以京东首页为例,设计用例框架。(注意框架设计逻辑,区域划分, 专项测试等,不需要详细用例,需要查看 PC 可直接和辨识管提要求)

如何测试购买下单和退货流程

产品经理设计了单品优惠,组合优惠,订单优惠,优惠券优惠(优惠券优惠包含通用券,定向券, 满减券,折扣券)和礼品卡,其中礼品卡上需要单独购买的。请问如何测试购买下单和退货流程,需要注意什么?(包含数据存储)
测试界面上一个输入框,输入信息后点击保存,你怎样确定是服务端问题还是前端问题?
可以通过使用简单网络调试工具对前端后端问题进行定位:例如:- 通过抓包工具没有抓到数据包可以考虑是前端问题- 能够抓取到通信数据包的话就查看下HTTP状态码 1)4xx–客户端(前端)问题 2)5xx–服务端问题

什么是sql 注入,什么是跨站脚本,什么是跨站请求伪造?

SQL 注入攻击是注入攻击最常见的形式(此外还有 OS 注入攻击(Struts 2 的高危漏洞就是通过 OGNL实施 OS 注入攻击导致的)),当服务器使用请求参数构造 SQL 语句时,恶意的 SQL 被嵌入到 SQL 中交给数据库执行。SQL 注入攻击需要攻击者对数据库结构有所了解才能进行,攻击者想要获得表结构有多种方式:

  1. 如果使用开源系统搭建网站,数据库结构也是公开的(目前有很多现成的系统可以直接搭建论坛 ,电商网站,虽然方便快捷但是风险是必须要认真评估的);
  2. 错误回显(如果将服务器的错误信息直接显示在页面上,攻击者可以通过非法参数引发页面错误从而通过错误信息了解数据库结构,Web 应用应当设置友好的错误页,一方面符合最小惊讶原则,一方面屏蔽掉可能给系统带来危险的错误回显信息);
  3. 盲注。防范SQL 注入攻击也可以采用消毒的方式,通过正则表达式对请求参数进行验证,此外, 参数绑定也是很好的手段,这样恶意的 SQL 会被当做 SQL 的参数而不是命令被执行,JDBC 中的PreparedStatement 就是支持参数绑定的语句对象,从性能和安全性上都明显优于 Statement。
    XSS(Cross Site Script,跨站脚本攻击)是向网页中注入恶意脚本在用户浏览网页时在用户浏览器中执行恶意脚本的攻击方式。跨站脚本攻击分有两种形式:
    反射型攻击(诱使用户点击一个嵌入恶意脚本的链接以达到攻击的目标,目前有很多攻击者利用论坛、微博发布含有恶意脚本的URL 就属于这种方式)
    持久型攻击(将恶意脚本提交到被攻击网站的数据库中,用户浏览网页时,恶意脚本从数据库中被加载到页面执行,QQ 邮箱的早期版本就曾经被利用作为持久型跨站脚本攻击的平台)。
    CSRF 攻击(Cross Site Request Forgery,跨站请求伪造)是攻击者通过跨站请求,以合法的用户身份进行非法操作(如转账或发帖等)。CSRF 的原理是利用浏览器的 Cookie 或服务器的 Session,盗取用户身份,其原理如下图所示。

防范CSRF 的主要手段是识别请求者的身份,主要有以下几种方式:

1.在表单中添加令牌(token);
2.验证码;
3.检查请求头中的Referer(前面提到防图片盗链接也是用的这种方式)。
令牌和验证都具有一次消费性的特征,因此在原理上一致的,但是验证码是一种糟糕的用户体验,不是必要的情况下不要轻易使用验证码,目前很多网站的做法是如果在短时间内多次提交一个表单未获得成功后才要求提供验证码,这样会获得较好的用户体验。
给你一个网站怎么开展测试?

  1. 首先,查找需求说明、网站设计等相关文档,分析测试需求。
  2. 制定测试计划,确定测试范围和测试策略,一般包括以下几个部分:功能性测试,界面测试,性能测试,数据库测试,安全性测试,.兼容性测试
  3. 设计测试用例:
    • 功能性测试可以包括,但不限于以下几个方面:链接测试;链接是否正确跳转,是否存在空页面和无效页面,是否有不正确的出错信息返回等;提交功能的测试;多媒体元素是否可以正确加载和显示;多语言支持是否能够正确显示选择的语言等
    • 界面测试可以包括但不限于以下几个方面:页面是否风格统一,美观。页面布局是否合理,重点内容和热点内容是否突出。控件是否正常使用。对于必须但为安装的空间,是否提供自动下载并安装的功能。文字检查。
    • 性能测试一般从以下两个方面考虑:压力测试,负载测试,强度测试
    • 数据库测试要具体决定是否需要开展。数据库一般需要考虑连结性,对数据的存取操作,数据内容的验证等方面。
    • 安全性测试:基本的登录功能的检查;是否存在溢出错误,导致系统崩溃或者权限泄露;相关开发语言的常见安全性问题检查,例如 SQL 注入等;如果需要高级的安全性测试,确定获得专业安全公司的帮助,外包测试,或者获取支持。
    • 兼容性测试,根据需求说明的内容,确定支持的平台组合:浏览器的兼容性;操作系统的兼容性; 软件平台的兼容性;数据库的兼容性。
  4. 开展测试,并记录缺陷。合理的安排调整测试进度,提前获取测试所需的资源,建立管理体系(例如, 需求变更、风险、配置、测试文档、缺陷报告、人力资源等内容)。
  5. 定期评审,对测试进行评估和总结,调整测试的内容。
    电商支付模块的测试如何展开?
    支付流程里面就涉及到了第三方支付接口:
    • 下单接口:商户提交下单请求到第三方支付接口,第三方支付收单成功后返回下单成功结果给到商户系统。(下单接口的最终处理结果分为下单成功和下单失败,若未收到明确结果可调用单笔订单查询接口查询结果。)
    • 支付接口:调用该接口时指定支付参数,完成买家账户向商户账户的支付,采用页面跳转交互模式和后台通知交互模式。(结果分为两路返回:一路为前台在 return_url 页面跳转显示支付结果;一路为后台在 notify_url 收到支付结果通知后进行响应。)
    • 退款接口:调用第三方支付的支付请求接口返回付款成功后,在需要做退款处理时调用退款请求接口发起退款处理。(退款接口的最终处理结果分为退款成功和退款失败,若未收到明确结果可调用退款查询接口查询结果。)
    • 单笔订单查询接口:根据订单号查询单笔订单信息和状态。退款订单查询接口:调用第三方支付的退款接口返回后,在需要查询退款请求状态可调用退款订单查询接口查询退款订单的状态和订单信息。
    测试过程中需要注意的主要测试点及异常场景:
    • 首先要保证接口都能正常调用;
    • 生成一笔订单,支付完成后,同步或异步重复回调,只有一次有效;
    • 生成一笔订单,复制订单号和金额,再次生成一笔订单,用 fiddler 设置断点,用第一笔已完成的订单号和订单金额去替换现有的订单号和金额,无法完成支付;
    • 生成一笔订单,跳转到第三方时修改金额,无法到账,或者如果是游戏充值游戏币的话,到账为篡改后的金额对应的游戏币;
    • 异步通知屏蔽,同步有效,进行支付,同步能够正常到账;
    • 同步设置无效,异步有效,进行支付,异步能够正常到账;
    • 同步异步都设置无效,在第三方支付完成后,在重发机制时间范围内,设置异步有效,到下次通知时间点时,能够正常通知到账(补单机制的验证,如果商户收到第三方支付成功的通知后,要告知第三方支付收到了成功的通知,如果第三方支付收到商户应答不是 ok 或超时,第三方支付就会认为通知失败,会在规定的时间内持续调用 notify_url,一般有时间或次数的限制);
    • 针对支付订单在数据库中存储是否完整和正确进行校验(比如:第三方订单号–方便与第三方对账 和问题排查、订单金额、订单状态等);
    • 如果是用户购买实物商品,用户发起退货,要保证退货流程正常,资金能正常返还,要考虑下并发情况的验证以确保安全性;
    • 如果是用户购买虚拟商品,比如话费、油卡之类的商品,只有在发货失败的时候才能发起退货,注意验证;
    如何开展兼容性测试?

1.Web 兼容性测试

• 首先开展人工测试,测试工程师测试主流浏览器和常用操作系统测试主流程和主界面,看看主流程和主界面是否有问题,如果存在问题,那么记录下 bug 情况,以及浏览器型号和版本,以及操作系统,准确定位bug 产生的原因,提交 bug,告知开发人员修改。所有的主流设备都需要进行测试, 只关注主流程和主界面,毕竟每个系统主流程和主界面不是很多,所以这个工作量还是可以承受的。

• 其次借助第三方测试工具,目前我觉得比较好用的第三方 Web 测试工具有 IEtester(离线)、 SuperPreview(离线)和 Browsershots:browsershots.org(在线),一款可以测试 IE 的兼容,一款可以测试主流浏览器的兼容,包括谷歌、火狐、Opera 等等。借助第三方测试工具,找到 bug 产生的位置,分析测试结果,告知程序员调整。

2.APP 兼容性测试

• APP 的兼容性测试和 Web 测试类似,首先开展人工测试,测试工程师借助测试设备对主流程和主功能,主界面进行测试;收集所有的能收集到的不同型号的测试设备测试主流程和主界面,看看主流程和主界面是否有问题,如果存在问题,综合考虑设备的使用率等因素,看看是否需要调整,如果需要,那么记录下 bug 情况以及测试设备的型号和操作系统,准确定位 bug 产生的原因,提交bug,告知开发人员修改。

• 其次借助第三方测试工具,对于 APP 的兼容性测试,推荐的是百度众测平台和云测平台,我经常使用的是云测平台,这两款测试工具里面包含了安卓和iOS 的测试;测试很齐全,包括功能测试、深度兼容测试、性能测试、网络环境测试,还可以模拟海量用户测试,,还可以导入自己编写的测试用例进行功能测试,里面还包括测试专家的测试,当然了找专家是要花钱滴。基本进行兼容性测试是不需要花钱的;测试工程师把打包好的 apk 或者 IPA 文件,上传到测试平台,选择需要测试的设备型号,开始任务即可;等待一段时间,在等待的时间你是不需要盯着的,你可以做其他的工作。测试完成后会生成一份测试报告,可以查看错误页面和错误日志,如果需要调整,那么提交 bug, 告知程序员修改即可。
nginx,tomcat,apache 都是什么?

Nginx (engine x) 是一个高性能的HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 服务器。Apache HTTP Server 是一个模块化的服务器,源于 NCSAhttpd 服务器
Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,是开发和调试JSP 程序的首选。

apache 和 nginx 的区别?

Nginx 相对Apache 的优点:

轻量级,同样起web 服务,比 apache 占用更少的内存及资源;
抗并发,nginx 处理请求是异步非阻塞的,支持更多的并发连接,而 apache 则是阻塞型的,在高并发下 nginx 能保持低资源低消耗高性能;
配置简洁;
高度模块化的设计,编写模块相对简单; 社区活跃。
Apache 相对Nginx 的优点:
rewrite ,比 nginx 的 rewrite 强大;模块超多,基本想到的都可以找到; 少 bug ,nginx 的 bug 相对较多;超稳定。

Selenium 有哪些定位元素方法

1.id 定位
2.name 定位
3.class_name
4.tag_name
5.link_text
6. partial_link_text
7. xpath
8. 8.css

win7 系统中,使用 IE 浏览器打开www.sogou.com,按回车,1 分钟后,显示为白页面,请问有哪些原因会导致这个现象,如何进行排查

当定位一个元素是,如果存在 ID 属性值时,我们可以优先考虑 ID 定位,当没有 ID,有 name 属性值和class 属性值时也可以采用 name 和 class_name 定位。当次能确定该元素的标签为页面唯一时,可以采用 tag_name 定位,一般来说采用 link_text 定位的方法比较少。如果 ID ,name,class_name 单个定位不了,可以采用 css 和 xpath 定位。
如果对软件测试有兴趣,想了解更多的测试知识,解决测试问题,以及入门指导,帮你解决测试中遇到的困惑,我们这里有技术高手。如果你正在找工作或者刚刚学校出来,又或者已经工作但是经常觉得难点很多,觉得自己测试方面学的不够精想要继续学习的,想转行怕学不会的, 都可以加入我们
,群内可领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!

测试新手

如果你立志成为一名测试工程师,但却没有任何的知识储备。这时候,你应该抓紧时间学习计算机基础知识,同时,还需要了解编程体验、产品设计、用户体验和研发流程等知识。

测试工程师
从知识体系上看,你需要有更全面的计算机基础知识,还需要了解互联网的基础架构、安全攻击、软件性能、用户体验和常见缺陷等知识。从测试技术上看,你需要能够使用常见的测试框架或者工具,需要具有一定的自动化测试脚本的开发能力,

高级测试工程师
合格的测试工程师关注的是纯粹的测试,而优秀的测试工程师关注更多的是软件整体的质量,需要根据业务风险以及影响来制定测试策略。另外,优秀的测试工程师不仅可以娴熟地运用各类测试工具,还非常清楚这些测试工具背后的实现原理。

测试架构
测试架构师不仅仅应该有技术的深度,还应该有全局观。比如,面对大量测试用例的执行,无论是 GUI 还是 API,都需要一套高效的能够支持高并发的测试执行基础架构;再比如,面对测试过程中的大量差异性数据要求,需要统一的测试数据准备平台。同时,测试架构师还必须对一些前沿的测试方法和技术有自己的理解。

【面试宝典】软件测试工程师2021烫手精华版(第四章web测试篇)相关推荐

  1. 【面试宝典】软件测试工程师2021烫手精华版(第一章测试理论篇)

    前言: 翻了很多论坛博客关于面试的文章,很多都是不完整的,还都是比较常见规规矩矩的,那大家刷过的基本都不拿出来了,都是一些大家平时见得不多,但是面试官很看中的一些题. 第一章 测试理论 一. 软件工程 ...

  2. 【面试宝典】软件测试工程师2021烫手精华版(第八章Python基础篇)

    第八章 Python 基础 斐波那契数列求 N? 字符串反序输出? print(a_str[::-1]) 判断回文? astr[::-1] == a_str 统计python 源代码文件中代码行数,去 ...

  3. 【面试宝典】软件测试工程师2021烫手精华版(第三章Mysql基础篇)

    第三章 Mysql 基础 一. 基础知识 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库 什么是关系型数据库,主键,外键,索引分别是什么? 关系型数据库是由多张能 ...

  4. 00后面试华为软件测试工程师,竭尽全力拿到15K。。。。。

    不废话,直接重点  一般软件测试的面试分为三轮:笔试,HR面试,技术面试. 前两轮,根据不同企业,或有或无,但最后一个技术面试是企业了解你"行不行"的关键环节,每个企业都会有的. ...

  5. 【转行跳槽面试】软件测试工程师都必须知道的这几种面试技巧...

    在面试的过程中好多人会有这种的感觉.我在面试的时候面试官会问的特别详细,你们的公司之前是做什么的,还有相关的一些人员构成比例,开发和测试大概有多少人,你们公司有没有运维,有没有产品,以及呢一些详细的软 ...

  6. 史上最全软件测试工程师常见的面试题总结(四)【多测师_王sir】

    面试:神州数码 1.介绍你下你项目中一个自动化实现的流程   ==>看这篇http://duoceshi.cn/duoceshi/Tech_article/73.html 2.你觉得做自动化的意 ...

  7. 35岁之后软件测试工程师靠什么养家?我还能继续做测试。

    35岁真是一个焦虑的年龄,我一个在北京软件测试的朋友从一个大公司裸辞以后,年前应聘到了一家小公司做技术总监,因为疫情的爆发,公司倒闭了,他失业了.为了养家我这个朋友不得不冒着被病毒感染的危险开始送外卖 ...

  8. 面试-中兴软件测试工程师

    一面是技术面,面了大约40多分钟,有两个面试官. 1.自我介绍. 2.项目介绍:比较详细的问了些问题 3.会C语言吗?来看段程序.功能是实现字符串的反转的代码,要我写测试程序及测试案例,当场在电脑上编 ...

  9. 面试-海能达软件测试工程师

    当初应邀参加了座谈会,被免了笔试,直接进入面试.共三面,每面15分钟左右,一天搞定. 一面:技术面. 1.自我介绍: 2.项目介绍: 3.对测试了解多少? 4.手写代码.判断一单向链表是否有环. 5. ...

最新文章

  1. J. Med. Chem. | 通过负向设计优化筛选化合物库
  2. [Spring 深度解析]第6章 Spring的IoC容器系列
  3. mysql 5.1默认缓存_mysql的innodb数据库引擎详解
  4. Nginx安全配置研究
  5. linux shell 脚本 svn自动更新项目并且打包 、发布、备份
  6. 【阿里云EMR实战篇】以EMR测试集群版本为例,详解 Flink SQL Client 集成 Hive 使用步骤
  7. 十位值得关注的Java顶级专家
  8. 跟着鬼哥学so修改,五,实例第二篇
  9. 从二进制格雷码到任意进制格雷码(1)
  10. linux命令配置永久ip地址,Linux命令行永久修改IP地址、网关和DNS。
  11. HTML面试题七:b标签和strong标签,i标签和em标签的区别
  12. 对自己代码规整度的强烈执念....
  13. python getA() 函数
  14. 如何将普通相机改成VR相机
  15. 几种intel CPU性能对比
  16. ThinkPHP 虚拟主机 跳转public主页设置
  17. html实现文字滚动
  18. 照明基础知识(一)---白炽灯(热辐射光源)发展史工作原理
  19. Ardunio安装及串口通信
  20. 物联网打破传统行业的枷锁,加速传统行业智能化!

热门文章

  1. Computer Science Theory for the Information Age-1: 高维空间中的球体
  2. 南京邮电大学C++实验报告3(仅供参考)
  3. web开发之长度单位:px, pt, rem, vw, vh
  4. 3D 沙盒游戏之地面网格设计
  5. 谷歌真被ChatGPT搞慌了!两位创始人紧急回归制定战术,搜索广告根基不容有失...
  6. SAP系统 月结步骤
  7. 百度关键词排名查询工具
  8. SpringBoot+Vue项目准妈妈孕期交流平台
  9. 基于MFC实现的赛车游戏
  10. c盘中哪些文件可以删除