web测试 订阅
Web测试是软件测试的一部分,是针对Web应用的一类测试。由于Web应用与用户直接相关,又通常需要承受长时间的大量操作,因此Web项目的功能和性能都必须经过可靠的验证。通过测试可以尽可能地多发现浏览器端和服务器端程序中的错误并及时加以修正,以保证应用的质量。由于Web具有分布、异构、并发和平台无关的特性,因而它的测试要比普通程序复杂的多。 展开全文
Web测试是软件测试的一部分,是针对Web应用的一类测试。由于Web应用与用户直接相关,又通常需要承受长时间的大量操作,因此Web项目的功能和性能都必须经过可靠的验证。通过测试可以尽可能地多发现浏览器端和服务器端程序中的错误并及时加以修正,以保证应用的质量。由于Web具有分布、异构、并发和平台无关的特性,因而它的测试要比普通程序复杂的多。
信息
所属学科
软件工程
外文名
web test
测试工具
Selenium等
测试类型
内容测试、界面测试等
中文名
web测试
目    的
评价web应用性能
Web测试简介
随着网络技术的迅速发展,尤其是Web及其应用程序的普及,各类基于Web的应用程序以其方便、快速、易操作等特点不断成为软件开发的重点。Web以其广泛性、交互性和易用性等特点迅速风靡世界,网页数量正以几何数量级飞速增长。能够吸引尽可能多的用户并对其长时间关注是网站追求的主要目标,也是衡量一个网站是否成功的主要指标,这就对网页功能的正确性、有效性和完善性提出了较高的要求,从而测试就成为应用开发过程中的一个重要环节。目前可以见到各种Web服务器平台,然而根据Mereur的研究报告,98%的Web服务器都没能达到人们所期望的性能,平均只能发挥人们所期望性能的1/6左右。Web性能测试能够确定影响Web服务器性能的关键因素,从而可以有针对性地进行分析和改进,避免Web服务器研究和优化过程中的盲目行为;同时,它也是选取不同的Web服务器的重要参考。随着Web应用程序使用越来越广泛,针对其性能测试的要求也越来越多,然而由于Web程序综合了大量的新技术,诸如HTML,Java,JavaScript,VBScript等,同时它还依赖很多其他的因素,比如Link,Database,Network等,使得Web应用程序测试变得非常复杂 [1]  。
收起全文
精华内容
下载资源
问答
  • web测试知识详解

    千次阅读 多人点赞 2018-11-21 17:09:19
    web测试 web测试..............................................................................................................................1 1. 分类及测试要点...........................................

    web测试

    web测试

    1. 分类及测试要点

    1.1. 功能测试

    1.1.1. 测试方面

    1.1.2. 测试点

    1.2. 性能测试

    1.2.1. 工具

    1.2.2. 分类

    1.3. 安全性测试

    1.3.1. 类型

    1.3.2. 工具

    1.4. 单元测试

    1.4.1. unittest

    1.4.2. 断言方法

    1.4.3. 单元测试用例的设计

    1.4.4. 用例执行顺序的控制

    1.4.5. 测试脚本分析

    1.5. 兼容性测试

    1.5.1. 浏览器兼容性

    1.5.2. 系统兼容

    1.5.3. 显示分辨率

    1.5.4. 插件兼容

    1.6. 其他测试

    1.6.1. 接口测试

    1.6.2. 易用性测试等

    2. web自动化

    2.1. 类型

    2.1.1. UI自动化

    2.1.2. 接口自动化

    2.2. 自动化框架实践

    2.2.1. 自动化框架

    2.2.2. 自动化项目实施

    2.2.3. GIT源代码管理

    2.2.4. 持续集成(CI)

    2.3. 自动化测试模型

    2.3.1. 自动化测试模型

    2.3.2. 模块驱动测试

    2.3.3. 关键字驱动测试

    2.3.4. 数据驱动测试与实例

    2.3.5. 模块化测试模型实例

    2.4. 自动化测试深度开展

    2.4.1. html测试报告

    2.4.2. 测试报告的制定和维护

    2.4.3. 邮件的推送

    2.5. Page Object

    2.6. Selenium Grid2

    2.6.1. Selenium Server

    2.6.2. Selenium Grid

    2.6.3. Remote

    2.6.4. WebDriver驱动

    2.7. 自动化测试基础

    2.7.1. 分层的自动化测试

    2.7.2. 自动化工具对比

    2.7.3. selenium介绍

    2.8. 自动化环境的部署

    2.8.1. python的环境部署

    2.8.2. selenium工具集

    2.8.3. selenium环境搭建

    2.8.4. 浏览器驱动的部署

    2.8.5. webdriver的入门

    2.9. 定位元素

    2.9.1. 定位元素(id、name等)

    2.9.2. 快速定位元素插件

    2.9.3. 浏览器操作

    2.9.4. 鼠标、键盘事件

    2.9.5. 验证信息的获取

    2.9.6. 元素的等待

    2.9.7. 表单、窗口切换

    2.9.8. cookies的操作

    2.9.9. 验证码的处理

    2.9.10. 截图

    3. 需要掌握的知识

    3.1. 理解web

    3.1.1. 1、网络基础知识

    3.1.2. 2、web系统基础

    3.1.3. 3、web核心技术

    3.2. 网络协议

    3.2.1. 网络协议模型

    3.2.2. 2、TCP/IP协议

    3.2.3. 3、HTTP/HTTPS协议

    3.3. web开发技术

    3.3.1. 客户端开发技术

    3.3.2. 服务器端开发技术

    3.4. web测试技术

    3.4.1. 软件测试原理

    3.4.2. 测试技术

    3.4.3. web性能

    3.4.4. 安全

    3.5. 服务器及部署知识

    3.5.1. apache

    3.5.2. tomcat

    3.5.3. ant

    3.5.4. git

    3.5.5. jenkins

    3.5.6. maven等工具

    3.6. 浏览器机制

    3.6.1. 理解浏览器在处理javascript及渲染CSS的机制

    3.6.2. 了解IE与其他浏览器的差异

    3.6.3. 为什么兼容性测试时需要特别关注IE

    3.6.4. 浏览器在加载javascript,CSS有时在前面有时在后面,为什么?

    3.6.5. 加载顺序会对视觉和使用上有什么影响呢?

    3.6.6. 常见内核和对应的浏览器

    3.7. web架构

    3.7.1. 软件出错时怎么个报警法?是否有详尽的log记录?

    3.7.2. 服务器缓存机制如何?

    3.7.3. 数据库如何主从同步,如何备份的?

    3.7.4. 集群如何处理session的?

    3.8. 其他需要掌握技能

    3.8.1. Linux

    3.8.2. 脚本语言等

    3.9. SEO

    3.9.1. XML sitemap的意义,可以让搜索引擎了解你的网站地图

    3.9.2. 了解 robots.txt 和搜索引擎爬虫是如何工作的

    3.9.3. 友好的搜索引擎URL

    3.9.4. 重定向301和302

    3.9.5. 网页Meta信息中title,description等的重要性

    3.10. 用户体验

    3.10.1. 访问网站的用户操作行为是怎么样的?页面的访问频率占比如何?因为测试的精力和侧重点也要根据这个数据而定

    3.10.2. 网站部署时是否会影响到用户使用,如何避免?

    3.10.3. 不要直接显示不友好的错误提示,是否有友好的提示信息?

    3.10.4. web应用不能泄漏用户的隐私信息

    3.10.5. 页面是在当前页打开还是另开一个tab?

    3.10.6. 页面元素的布局如何影响到用户体验的?

    3.11. ORACLE/SQL

    3.11.1. 基础语句

    3.11.2. 限制性查询和数据的排序

    3.11.3. 常用的SQL*PLUS语句

    3.11.4. 单行函数

    3.11.5. NULL值的处理、逻辑操作和函数嵌套

    3.11.6. 分组函数

    3.11.7. 多表查询

    3.11.8. 子查询

    3.12. 使用工具

    3.12.1. HttpWatch,基于IE的网络数据分析工具,包括网页摘要,Cookies管理,缓存管理,消息头发送/接受,字符查询,POST 数据和目录管理功能等

    3.12.2. FireBug,用途同上,基于firefox的

    3.12.3. Yslow,前端网站性能工具,显示测试结果的分析,分为等级、组件、统计信息

    3.12.4. Fiddler,强大的web前端调试工具,它能记录/拦截所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,也可用于安全测试

    3.12.5. Chrome扩展程序:浏览器兼容性检测工具,分析网站的兼容性情况

    3.12.6. ShowIP:显示访问网站的IP,web测试中你是否经常因为访问的网站IP不对,而被开发人员BS呢?它能帮助到你。

    3.12.7. 网络限速等工具:netlimiter

     

     

    1. 分类及测试要点
      1. 功能测试
        1. 测试方面

    1、链接测试

    1)测试所有链接是否按指示的那样确实链接到了该链接的页面

    2)测试所链接的页面是否存在

    3)测试web应用系统上没有孤立的页面

    2、表单测试

    表单一般指在界面进行数据提交操作的,包括新增和修改数据

    1)输入框测试

    ——长度、数据类型、必填、重复、空格、sql注入以及一些业务相关约束

    2)下拉框测试

    ——默认值、数据完整性/正确性、第一个/最后一个/中间一个选取、手动输入值模糊匹配、联动选择;业务常见选取的操作

    3)图片、视频、excel、txt等文件上传测试

    ——大小、尺寸、格式、数量、文件内容规则验证

    4)表单提交按钮测试

    ——是否支持回车/单击、快速多次点击是否重复提交表单、网络中断(弱网)提交、提交之后是否有提示、提交后内容是否加密、提交是否做权限校验控制、多人针对表单同时操作的场景测试

    3、搜索测试

    搜索条件一般为2种情况:输入框、下拉框

    1)任单个条件查询

    模糊搜索、超长搜索、不存在与之匹配的条件、为空

    2)任两个组合查询

    确保任两个组合查询的正确性,验证两个组合的所有情况。

    3)三个组合查询

    不需要测试三个组合的全部级组合。因为前面针对所有单个条件的搜索、两个组合的所有组合进行测试了,那么在这里选择2-3组三种组合进行测试即可。

    4)全条件组合查询

    确保最大组合的正确性。

    5)默认条件查询

    补充默认条件查询的用例

    6)根据需求或者业务规则选取重点条件组合查询

    时间输入框

    1)开始时间<=结束时间,测试一个小时、跨时、当天、跨天、跨月、跨年的数据

    2)开始时间大于/小于当前时间,若是针对出生年月搜索,验证大于的情况;若是定时任务时间搜索验证小于的情况

    3)只输入开始时间/结束时间

    4)开始时间、结束时间都不输入

    5)结束时间早于开始时间

    6)手动输入时间,注意时间格式验证

    4、删除测试

    1)没选择数据,点击删除

    —是否有友好提示

    2)选择一条数据,点击删除

    —是否提示删除确认信息,需二次确认

    3)删除一条数据后,点击添加

    —是否可以添加相同的数据

    3)连续删除多个产品,选择批量删除

    —是否支持

    4)选择全选,点击删除

    —注意是否把所有的数据删除

    5)删除一个有关联性的数据,(如删除QQ分组,组下好友会有提示)

    6)所有删除数据操作,要注意相应查询页面及其关联界面的数据是否及时更新

    5、cookies、session测试

    cookies/session通常用来存储用户信息,Cookie通过在客户端记录信息确定用户身份,session通过在服务器端记录信息确定用户身份

    1)打开WEB系统后,在浏览器默认存储cookies的目录下看此cookies目录是否存在。

    2)已知cookies的保存时间,测试时间范围之内和之外的cookies文件是否正常

    3)将浏览器下的所有cookies文件全部删除。再次登录web系统,会怎么处理

    6、数据库测试

    在web应用技术中,数据库就是一个“仓库”,我们在进行功能测试的任何操作都可以归溯到是对于数据库的增删改查

    1、数据库脚本执行—数据库表添加、修改是否正常

    2、页面提交表单、修改、查询、删除 —数据库表信息是否正常

        1. 测试点

    页面部分

    (1)页面清单是否完整(是否已经将所需要的页面全部列出来了)

    (2)页面是否显示(在不同分辨率下页面是否存在,在不同浏览器版本中页面是否显示)

    (3)页面在窗口中的显示是否正确,美观(在调整浏览器窗口大小时,屏幕刷新是否正确)

    (4)页面特殊效果(如特殊字体效果,动画效果是否显示)

    (5)页面特殊效果显示是否正确

    页面元素部分

    (1)页面元素清单(为实现功能,是否将所需要的元素全部都列出来了,如按钮,单选框,复选框,列表框,输入框等)

    (2)元素是否显示(元素是否存在)

    (3)元素是否显示正确(针对文字,图形,签章等)

    (4)元素的外形,摆放位置是否合理(如按钮,单选框,复选框,列表框,输入框等)

    (5)元素基本功能是否实现(如文字特效,动画特效,按钮,超链接等)

    (6)元素的容错性列表(如输入框,时间列表或日历)

    (7)元素的容错性是否正确或存在

    功能部分

    (1)数据初始化是否执行

    (2)数据初始化是否正确

    (3)数据处理功能是否执行或正确

    (4)数据保存是否执行或正确

    (5)是否对其他功能有影响

    (6)如果影响其他功能,系统能否做出正确的反应

    (7)对模块的具体功能进行测试时可以列出功能模块所有的功能,进行排列组合,测试所有情况

    (8)查询功能分2种--验证操作结果,打开页面时自动显示结果,则不需要特别强调;需要手工操作进行查询,则每次在其他功能完成后进行

    提示信息

    (1)成功,失败提示

    (2)操作结果失败

    (3)确认提示

    (4)危险操作,重要操作提示

    (5)返回页面提示后显示的页面

    容错性

    (1)为空,非空

    (2)唯一性

    (3)字长,格式

    (4)数字,邮编编码,电话,电子邮件,ID号,密码

    (5)日期,时间

    (6)特殊字符(对于数据库),英文单词,单双引号

    权限部分

    (1)功能:指定用户可以使用哪些功能,不能使用哪些功能

    (2)数据:指定用户可以处理哪些数据,不可以处理哪些数据

    (3)操作:在逻辑关系上,操作前后顺序,数据处理情况

    (4)权限变化

    键盘操作

    (1)Tab键

    (2)上下方向键

    (3)Enter键

    (4)系统设定快捷键

      1. 性能测试
        1. 工具

    Loadrunner

    Jmeter等

        1. 分类

    前端性能

    web优化的黄金法则

    80%的最终用户响应时间花在前端程序上,而其大部分时间则花在各种页面元素,如图像、样式表、脚本和Flash等,的下载上。减少页面元素将会减少HTTP请求次数。这是快速显示页面的关键所在

    web前端性能关注点

    加载时间

    a. Time to First Impression

    表示从用户在浏览器键入url按下回车键一刻开始到页面开始有反应(用户可以在页面中看见一点点内容)为止。经常能感觉到的一个信号就是网页开始显示title。

    b.Time to onLoad Event

    表示从页面开始显示内容,到浏览器开始触发OnLoad函数这一时间段。只有当初始的文本和所引用的对象加载完成,浏览器才开始触发OnLoad函数

    c.Time to Fully Loaded

    表示从上一时间段末到整个网页完全加载完成(所有OnLoad函数以及相关的动态资源加载完成)。在网页中含有timeout或定时刷新之类处理时较为难判断结束点。

    资源情况

    网页由初始的html文本中嵌入图片以及通过XHR或者修改dom树动态加载的内容组成,css负责样式,js负责行为。所以当网页资源过多为了下载资源,客户端和服务器的网络来回就更多。

    a. Total Number of Requests

      包括html网页请求,css、js资源下载及其它网络请求。优化的目标之一是要尽量减少请求数。

    b. Total Number of HTTP 300s/400s/500s

      表示返回状态为300(重定向)、400(客户端错误)、500(服务器端错误)的http请求。尽量避免这些请求,以提高页面load的时间。造成这些状态的原因经常是服务器的实施、配置和部署问题。

    c. Total Size of Web Site

      构成网页元素总的大小。图片或者js库的增加都会对下载时间造成重要的影响。

    d. Total Size of Images/CSS/JS

      image、css、js在网页元素大小中占主要比例。

    e. Total Number of XHR(XMLHttpRequest) Requests

     通过js异步从服务器端获得数据的请求数。一些js框架提供了跟服务器端的更新机器,就是XHR请求。通过配置可以减少XHR请求的数目

    网络连接

    浏览器底层的网络连接对资源的下载速度有很大影响。资源的下载过程分为很多阶段

    a. DNS Time

      dns 查询的时间。网页请求会产生一次寻找该网页资源所在主机的dns查询。在同个域名进行网页切换不会造成新的dns查询。

    b. Connect Time

      指浏览器和服务器之间建立tcp/ip连接的时间,对于ssl连接包括握手的时间。网络连接过慢、使用ssl、使用短连接而非常连接都是造成connect time较多的原因。

    c. Server Time

      指收到请求后服务器逻辑处理的时间

    d. Transfer Time

      这一指标与浏览器和服务器之间的连接速度相一致,通过减小传输内容或使用cdn来降低Transfer Time。

    e. Wait Time

      等待时间和同一个域中服务资源的数量直接相关。每个域的浏览器的物理网络的限制,导致资源等待可用的连接。减少资源的数量,或将资源散布在不同的域,能将这一时间降低。平均等待时间的大小更能反映等待时间是否需要注意。

    f. Number of Domains / Single Resource Domains

      部署网站资源的域主机数量是很重要的,因为它影响的DNS,连接和等待时间。

      专门用户资源下载的域是必要的,他将直接减少等待时间。应避免单一的资源域,否则你将为dns查询以及资源下载付出昂贵的代价

    服务器性能

    常见指标

    时间指标

    服务器响应时间(Server Response Time)

    客户端发送一个HTTP请求至收到HTTP响应头信息消耗的时间。

    页面响应时间(Page Response Time)

    客户端从Web服务器请求一个完整的页面(包括内嵌对象)所消耗的时间。

    往返时间(Round Trip Time)

    建立TCP连接时,从客户端发送SYN请求到服务器返回SYN/ACK的时间。

    TCP连接建立时间

    客户端发出访问请求后,与Web服务器成功建立TCP连接所需的时间。

    系统容量指标

    并发用户数(Concurrent Users)

    Web服务器能够同时正确及时地服务的用户数。

    每秒用户数(User Per Second)

    单位时间(1s)内成功连接到Web服务系统的新用户的个数。

    并发连接数(Simultaneous Connections)

    Web服务器能够与客户端建立并保持同时打开的TCP连接数,最大并发连接数反映了Web服务器所对其客户多个连接的处理能力。

    连接速率(Connect ion Rate)

    客户端与Web服务器在单位时间(1s)新建立的TCP新建连接的个数。

    事务处理次数(Cumulative Transactions)

    Web服务器处理HTTP Transaction的累计总数定义为事务处理次数。

    事务处理速率(Transactions Per second)

    在单位时间(1s)内成功响应HTTP Transaction的个数。

    资源利用率指标

    资源利用率是指Web服务器不同资源(如服务器的CPU,内存、磁盘、网络带宽等)的使用程度,它常常用占资源的最大可用量的百分比来衡量。Web服务器资源利用率指标包括CPU占用率、内存占用率、磁盘占用率、可用网络带宽。

    测试关注点

    a. web服务的连接速度如何?

    b. 每秒的点击数如何?

    c. Web服务能允许多少个用户同时在线?

    d. 如果超过了这个数量,会出现什么现象?

    e. Web服务能否处理大量用户对同一个页面的请求?

    f. 如果web服务崩溃,是否会自动恢复?

    g. 系统能否同一时间响应大量用户的请求?

    h. 打压机的系统负载状态

    测试方法

    并发性能测试

    负载测试

    确定在各种工作负载下系统的性能,通过在被测系统上不断增加压力,直到性能指标超过预定指标或某种资源使用已经达到饱和状态。主要目的:寻找Web服务器的处理能力极限,包括支持的最大用户、业务等处理能力的约束;了解Web系统性能容量;配合Web系统进行调优。测试角度可以是并发用户数、业务量、数据量等不同方面的负载。

    压力测试

    通过确定一个系统的瓶颈或者不能再接收的极限点,来获得系统所能提供的最大服务级别的测试。压力测试方法测试Web服务器在资源处于饱和或超负荷的情况下(例如CPU、内存等在饱和状态下),系统能够处理的HTTP请求或用户会话的能力以及系统是否会出现错误。其主要意义是通过测试、调优保证系统即使在用户的极端压力下也不会出错甚至或者导致系统崩溃。因此可以认为是一种在极端压力下的稳定性测试。

    疲劳强度测试

        疲劳强度测试也称持久度测试(durability),可以被当作是一个长期的负载或压力测试,它是选择Web服务器稳定运行情况下能够支持的最大并发用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。疲劳强度测试可以采用工具自动化生成的方式进行测试,也可以手工编写程序测试,其中后者占的比例较大。

        一般情况下以Web服务器能够正常稳定响应请求的最大并发用户数进行一定时间的疲劳测试,获取交易执行指标数据和系统资源监控数据。如出现错误导致测试不能成功执行,则及时调整测试指标,例如降低用户数、缩短测试周期等。还有一种情况的疲劳测试是对当前系统性能的评估,用系统正常业务情况下并发用户数为基础,进行一定时间的疲劳测试。

      1. 安全性测试
        1. 类型

    1.跨站脚本(XSS)

    XSS又叫CSS(CROSS SET SCRIPT),跨站脚本攻击。它指的是恶意攻击者往WEB页面里插入恶意的html代码,当用户浏览该页面时,嵌入其中的html代码会被执行,从而达到恶意用户的特殊目的;(钓鱼、盗取cookie、操纵受害者的浏览器、蠕虫攻击)

    2.反射型跨站(Reflected XSS)

    服务器端获取http请求中的参数,未经过滤直接输出到客户端。如果这些参数是脚本,它将在客户端执行(钓鱼常见)。

    3.存储型跨站(Stored XSS)

    用户输入的数据存在服务器端(一般存在数据库中),其他用户访问某个页面时,这些数据未经过滤直接输出。这些数据可能是恶意的脚本,对其他用户造成危害。(挂马常见)

    在允许上传文件的应用中,攻击者上传一个包含恶意代码的html或者txt文件,用户浏览这些文件执行恶意代码;

    一般的应用中上传图片最普遍,如果图片中包含恶意代码的html或者txt文件,,低版的IE直接请求这个图片时,将忽略Content-Type执行图片中的代码。

    4.DOM跨站(DOM-Based XSS)

    攻击者构造一个包含恶意Javascript的URL,然后引诱用户请求这个URL。服务器收到请求后没有返回恶意的Javascript。

    浏览器在处理URL中的数据时,执行恶意代码。

    5.跨站请求伪造(CSRF)

    强迫受害者的浏览器向一个易受攻击的Web应用程序发送请求,最后达到攻击者所需要的操作行为。

    恶意请求会带上浏览器的Cookie。受攻击的Web应用信任浏览器的Cookie。

    6.SQL注入

    用户输入的数据未经验证就用来构造SQL

    查询语句,查询数据库中的敏感内容,绕过认证添加、删除、修改数据、拒绝服务。

    7.XML注入

    和SQL注入原理一样,XML是存储数据的地方,如果在查询或修改时,如果没有做转义,直接输入或输出数据,都将导致XML注入漏洞。攻击者可以修改XML数据格式,增加新的XML节点,对数据处理流程产生影响。

    8.URL跳转

    Web应用程序接收到用户提交的URL参数后,没有对参数做”可信任URL”的验证,就向用户浏览器返回跳转到该URL的指令。(钓鱼攻击)

    9.文件系统跨越

    文件系统中../代表上级目录,通过一个或多个../跨越目录限制。

    10.系统命令

    用户提交的参数用于执行系统命令的参数。

    使用”|”或”;”执行多条命令。

    11.文件上传

    Web应用程序在处理用户上传的文件时,没有判断文件的扩展名是否在允许的范围内,或者没检测文件内容的合法性,就把文件保存在服务器上,甚至上传脚本木马到web服务器上,直接控制web服务器。(未限制扩展名、未检查文件内容、病毒文件)

    12.任意文件下载

    下载附件等功能

    Apache虚拟目录指向

    Java/PHP读取文件

    下载数据库配置文件等

    目录浏览

    13.权限控制

    有没有权限

    有些系统不需要权限控制

    有没有设置权限

    有了强大的权限系统,但是没有使用

    有没有偷工减料权限

    URL级别

    菜单级别

    14.访问控制

      水平权限

    Web应用程序接收到用户请求,修改某条数据时,没有判断数据的所属人,或判断数据所属人时,从用户提交的request参数(用户可控数据)中,获取了数据所属人id,导致恶意攻击者可以通过变换数据ID,或变换所属人id,修改不属于自己的数据。

      垂直权限

      由于web应用程序没有做权限控制,或仅仅在菜单上做了权限控制,导致的恶意用户只要猜测其他管理页面的URL,就可以访问或控制其他角色拥有的数据或页面,达到权限提升目的。

    15.Session Expires

    会话过期

    浏览器过期

    服务器30分钟无动作过期

    服务器24小时强制过期

    保持会话

        1. 工具

    端口扫描:NMAP工具

    appscan商用扫描多种漏洞

    ZAP开源扫描工具

    操作系统漏洞扫描工具:Nessus

    协议健壮性测试:Codenomicon、Peach

    web漏洞扫描:Appscan、Burpsuite(可抓取、拦截web报文并进行修改)

    数据库漏洞扫描:Nessus、NGS

    fiddler工具:可抓取web报文,并可构造报文,进行web接口测试

      1. 单元测试
        1. unittest
        2. 断言方法
        3. 单元测试用例的设计
        4. 用例执行顺序的控制
        5. 测试脚本分析
      2. 兼容性测试
        1. 浏览器兼容性

    主流浏览器:IE,FireFox、Chrome、Safari等,浏览器的差异主要体现在javaScript、ActiveX和HTML解码方法处理不同,因此需要在web系统测试时注意,尤其是通过某个控件跳转浏览器时更需要注意。

        1. 系统兼容

    主要的操作系统  window XP ,windows 7、windows 8,mac系统。在测试过程中需要关注被测试对象在不同操作系统上的表现、尤其是有数据交互时。

        1. 显示分辨率

    不同的显示分辨率可能会导致web页面变形,严重时会导致功能无法使用,因此需要测试在不同分辨率下的系统表现。常见的分辨率:1280X1024、1024X768、800X600等,即使在某些分辨率下不能工作,也需要给出提示信息。

        1. 插件兼容

    在web系统应用了一些控件,如文本编辑器,文件上传下载,这些控件也需要考虑在不同的操作系统,不同的分辨率下的应用表现。

      1. 其他测试
        1. 接口测试

    分类

    服务器接口

    测试浏览器与服务器的接口。用户输入的数据是输入到的前端页面上,怎样把这些数据传递的后台的呢?通过http协议的get与post请求来实现前后端的数据传递。这也可认为是接口测试。

    外部接口

    第三方接口,这个很典型的例子就是第三方支付,比如在我们应用中在充流量时,交话费时,都会调用第三方支付接口。

    测试要点

    请求是否正确,默认请求成功是200,如果请求错误也能返回404、500等。

    检查返回数据的正确性与格式;json是一种非常常见的格式。

    接口的安全性,一般web都不会暴露在网上任意被调用,需要做一些限制,比如鉴权或认证。

    接口的性能,这直接影响用户的使用体验。

        1. 易用性测试等
    1. web自动化
      1. 类型
        1. UI自动化
        2. 接口自动化
      2. 自动化框架实践
        1. 自动化框架

    需求分析、概要设计

    框架的详细设计与实现:页面管理

    公共模块

    用例仓库

    用例控制器

    用例执行

        1. 自动化项目实施

    测试用例设计与实现

    脚本的设计

    测试的实施

        1. GIT源代码管理

    GIT项目的创建

    GIT代码的提交

        1. 持续集成(CI)

    GIT代码的提交

    持续集成的实施

      1. 自动化测试模型
        1. 自动化测试模型
        2. 模块驱动测试
        3. 关键字驱动测试
        4. 数据驱动测试与实例
        5. 模块化测试模型实例
      2. 自动化测试深度开展
        1. html测试报告
        2. 测试报告的制定和维护
        3. 邮件的推送
      3. Page Object
      4. Selenium Grid2
        1. Selenium Server
        2. Selenium Grid
        3. Remote
        4. WebDriver驱动
      5. 自动化测试基础
        1. 分层的自动化测试
        2. 自动化工具对比
        3. selenium介绍
      6. 自动化环境的部署
        1. python的环境部署
        2. selenium工具集
        3. selenium环境搭建
        4. 浏览器驱动的部署
        5. webdriver的入门
      7. 定位元素
        1. 定位元素(id、name等)

    driver.find_element_by_id

    driver.find_element_by_name

    driver.find_element_by_class

    driver.find_element_by_tag_name

    driver.find_element_by_xpath

    driver.find_element_by_css

    driver.find_element_by_link_text

    driver.find_element_by_partial_text

        1. 快速定位元素插件
        2. 浏览器操作

    driver.get(url)

    driver.maxmize_window()

    driver.implicitly_wait(times)

    driver.quit() #关闭所有窗口且安全关闭session

    driver.close() #只关闭当前窗口

    driver.forward()

    driver.back()

    driver.refresh()

    driver.switch_to.frame(type)

    driver.switch_to.default_content()

    driver.switch_to.window(name)#切换窗口

    driver.current_window_handle

    driver.window_handles

    driver.title

    driver.current_url

    driver.page_source #获取页面html源代码

    driver.set_window_size(width,high)

    driver.get_window_size()

    driver.get_window_position()

        1. 鼠标、键盘事件

    driver.find_element_by_xpah(findType).clear()

    driver.find_element_by_xath(findType).click()

    driver.find_element_by_xath(findType).send_keys()

    context_click() #鼠标右击

    double_click() #鼠标双击

    drag_and_drop() #拖拽---从一个地方拖到另一个地方

    move_to_element() #鼠标悬停

    from selenium.webdriver.common.actionchains import ActionChains
    ActionChains(driver).context_click(element).perform()

    from selenium.webdriver.common.keys import Keys
    from selenium import webdriver

    driver = webdriver.Firefox()

    driver.find_element_by_id(id).send_keys(Keys.BACK_SPACE) #删除键

    driver.find_element_by_id(id).send_keys(Keys.SPACE) #空格键

    driver.find_element_by_id(id).send_keys(Keys.ENTER) #回车键

    driver.find_element_by_id(id).send_keys(Keys.TAB) #制表键

    driver.find_element_by_id(id).send_keys(Keys.ESCAPE) #回退,取消(ESC)

    driver.find_element_by_id(id).send_keys(Keys.CONTROL,'a') #全选(Ctrl+a)

    driver.find_element_by_id(id).send_keys(Keys.CONTROL,'c') #复制(Ctrl+c)

    driver.find_element_by_id(id).send_keys(Keys.CONTROL,'v') #粘贴(Ctrl+v)

        1. 验证信息的获取

    driver.find_element_by_xath(findType).get_attribute()

    driver.find_element_by_xath(findType).text

    driver.find_element_by_xath(findType).tag_name #获取元素标签名

    driver.find_element_by_xath(findType).is_selected() #判断返回的元素结果是否被选中

    driver.find_element_by_xath(findType).submit()

    driver.find_element_by_xath(findType).size #获取元素尺寸

    driver.find_element_by_xath(findType).is_displaed() #判断元素是否可见

    driver.find_element_by_xath(findType).send_keys(file) #针对普通input标签的上传文件可以使用此方法

        1. 元素的等待

    显示等待:WebDriverWait(driver, timeout,poll_frequency,ignored_exceptions=None).until(method,message)  

    隐式等待:implicitly_wait(5)

    强制等待:time.sleep(4)

        1. 表单、窗口切换

    switch_to_frame()默认直接取表单的id或者name属性来切换

    driver.current_window_handle    #获取当前窗口句柄
    driver.window_handles            #返回所有窗口句柄到当前会话
    driver.switch_to_window()       #进入窗口,用于切换不同窗口

        1. cookies的操作

    driver.switch_to.alert.accept()

    driver.switch_to.alert.dismiss()

    driver.get_cookies()

    driver.add_cookie()

    driver.execute_script(js)

    driver.delete_cookie()

        1. 验证码的处理
        2. 截图

    driver.get_screenshot_as_file(filename) #截图当前窗口

    driver.get_screenshot_as_base64()

    1. 需要掌握的知识
      1. 理解web
        1. 1、网络基础知识

    IP地址

    分类的IP地址

    A类:A类地址规定网络号字段为1字节,第一位固定为0来标识该类别,只有7位可供使用,有=126个可指派的网络号。其中有2个特殊的网络号,一个是网络号字段为全0,它是保留地址,意思是“本网络”,如0.0.0.35代表“在这个网络上主机号为35的主机”;另一个是127字段,保留用于环回测试,例,常见的127.0.0.1代表本地主机。所以A类地址的网络号范围为1~126。主机号3字节,最大主机数为,这里也要减去2。一个是主机号全0,表示网络的地址,如,一主机IP为5.6.7.8,则该主机所在的网络地址就是5.0.0.0。另一个是全1,表示该网络内的所有主机,如,125.255.255.255代表了125.0.0.0这个网络上的所有主机。

    B类:B类地址网络号字段为2字节,前两位固定为10,有14位可用来分配,有个可指派的网络号。这里减1的原因是一般128.0.0.0是不指派的,B类可指派的网络地址是128.1.0.0。

    C类:C类地址网络号字段为3字节,前3位固定为110,有21为可用来分配。

    D类:E类地址网络号字段为4字节,前4位固定为1110

    E类:E类地址网络号字段为5字节,前5位固定为11110

    划分子网

     IP地址::={<网络号>,<子网号>,<主机号>}

    A类地址的默认子网掩码,255.0.0.0,B类地址的默认子网掩码255.255.0.0,C类地址的默认子网掩码255.255.255.0。

    网关

    网关是一个网段的出入口。一个网络想要和这个网络外的网络进行通信,必须通过网关

    一个网段是可以没有网关,也可以没有DHCP服务器,即设置为静态IP,由交换机、集线器等连接设备就可相互访问。但没有网关就意味着只能在这个局域网内互相访问,不能访问局域网外的任何网络。很多局域网中都采用了路由来接入网络,路由器的WAN口连接到外部网络上,LAN口IP设置为网关。网关的地址可以是局域网段内主机地址的任意一个,不一定是设置为192.168.1.0,它只是用来标识网关。

    几种常见网络设备

    中继器

    信号在双绞线中传输的过程中信号的功率会逐渐衰减,当信号衰减到一定程度时将造成信号失真,所以为了方便较远距离的两计算机进行通信,就在这两个计算机之间安装一个中继器,让信号能传的更远。中继器的作用就是整理已经衰减的信号,重新产生完整的信号再继续传送。中继器工作在物理层,只是起到了扩展传输距离的作用,对高层是透明的。

    集线器

    集线器实际上就是一种多端口的中继器,一般有4、8、16、24、32等数量的接口。

    网桥

    网桥是早期的两端口的二层网络设备,网桥像是一个聪明的中继器,如前所说,中继器只是简单的连接了两个网络,任何数据都可以通过中继器发出,但网桥有所不同。网桥除了扩展网络的距离或范围,还能提高网络的性能和安全性。

    网桥可以连接两个网络,网桥A端口连接A子网,B端口连接B子网。网桥中有一个信息表,我们可以把这个信息表看作两部分,一部分记录了A子网中设备的MAC地址,另一部分记录了B子网中的MAC地址,当A发出一个包,网桥可以查看目的地址到底是A中的还是B中的,若是A中的就不进行转发,是B中的才进行转发。所以网桥与中继器不同的是隔离了两个子网,而不是任意的转发,拥有了学习功能。

    交换机

    网桥只有两个端口,有着局限,所以为了实现多对多通信,产生了交换机。集线器同样也是多对多通信,但集线器是广播的方式将数据包发到目的主机上,交换机却不一样,交换机与网桥一样具有学习功能。

    交换机也有一个表,它记录着每个端口对应的主机的MAC地址。当交换机收到数据包后,可以解析出该数据包目的地址的MAC地址。然后根据该MAC地址将包转发到对应的端口去。

           交换机有很多的类型,我们常说的交换机一般指的是传统的交换机,它工作在二层。但随着交换机的发展,出现了三层交换机,它除了拥有二层交换机的交换技术外,还在三层实现了数据包的高速转发及路由功能。

    路由器

    路由器中一般有个路由表来实现学习和翻译的功能。

    调制解调器

    俗称的“猫”。我们都知道,网线中一般传输的数字信号,0和1,而电话线中传输的是模拟信号,这两种信号并不能直接进行通信,就需要调制解调器进行“翻译”。

        1. 2、web系统基础

    网络体系结构

    B/S与C/S的区别

    1.硬件环境不同:C/S 一般建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门服务器提供连接和数据交换服务。B/S 建立在广域网之上的, 不必是专门的网络硬件环境。例如电话上网,,租用设备.,信息管理,有比C/S更强的适应范围,一般只要有操作系统和浏览器就行。

    2.对安全要求不同:C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强, 一般高度机密的信息系统采用C/S 结构适宜,可以通过B/S发布部分可公开信息。B/S 建立在广域网之上, 对安全的控制能力相对弱,面向是不可知的用户群。

    3.对程序架构不同:C/S 程序可以更加注重流程,,可以对权限多层次校验,,对系统运行速度可以较少考虑。B/S 对安全以及访问速度的多重的考虑,,建立在需要更加优化的基础之上,比C/S有更高的要求。 B/S结构的程序架构是发展的趋势,从MS的.Net系列的BizTalk 2000 Exchange 2000等,全面支持网络的构件搭建的系统.。SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟。

    4.软件重用不同:C/S 程序可以不可避免的整体性考虑,构件的重用性不如在B/S要求下的构件的重用性好。B/S 对的多重结构,要求构件相对独立的功能,能够相对较好的重用。

    5.系统维护不同:系统维护在是软件生存周期中,开销大。重要C/S 程序由于整体性,,必须整体考察, 处理出现的问题以及系统升级。升级难,可能是再做一个全新的系统。B/S程序由构件组成,方便构件个别的更换,实现系统的无缝升级,系统维护开销减到最小,用户从网上自己下载安装就可以实现升级。

    6.处理问题不同:C/S 程序可以处理用户面固定,并且在相同区域,,安全要求高需求,与操作系统相关,应该都是相同的系统。B/S 建立在广域网上,面向不同的用户群,分散地域,这是C/S无法作到的,与操作系统平台关系最小。

    7.用户接口不同:C/S 多是建立的Window平台上,表现方法有限。对程序员普遍要求较高。B/S 建立在浏览器上,,有更加丰富和生动的表现方式与用户交流,并且大部分难度减低,减低开发成本。

    8.信息流不同:C/S 程序一般是典型的中央集权的机械式处理,交互性相对低。B/S 信息流向可变化, B-B、 B-C、 B-G等信息流向的变化,更象交易中心。

    web特点

        1. 3、web核心技术

    工作原理

    客户端技术

    服务器技术

      1. 网络协议
        1. 网络协议模型

    OSI分层(7层)

    物理层:设备间接收或发送比特流;说明电压、线速和线缆等。

    常见:中继器、网线、集线器、HUB等

    协议:RJ45、CLOCK、IEEE802.3等

    数据链路层:将比特组合成字节,进而组合成帧;用MAC地址访问介质;错误可以被发现但不能被纠正

    常见:网卡、网桥、二层交换机等

    协议:PPP、FR、HDLC、VLAN、MAC等

    网络层:负责数据包从源到宿的传递和网际互连

    常见:路由器、多层交换机、防火墙等

    协议:IP、ICMP、ARP、PARP、OSPF、IPX、RIP、IGRP等

    运输层:可靠或不可靠数据传输;数据重传前的错误纠正。

    常见:进程、端口(socket)

    协议:TCP、UDP、SPX

    会话层:保证不同应用程序的数据独立;建立、管理和终止会话。

    常见:服务器验证用户登录、断点续传

    协议:NFS、SQL、NetBIOS、RPC

    表示层:数据表示;加密与解密、数据的压缩与解压缩、图像编码与解码等特殊处理过程

    常见:URL加密、口令加密、图片编解码等

    协议:JPEG、MPEG、ASCII

    应用层:用户接口

    协议:FTP、DNS、Telnet、SNMP、SMTP、HTTP、WWW、NFS

    TCP/IP分层(4层)

    物理层

    数据链路层

    网络层

    运输层

    应用层

    五层协议(5层)

    应用层:通过应用进程间的交互来完成特定网络应用

    数据:报文

    协议:HTTP, SMTP(邮件), FTP(文件传送)

    运输层:向两个主机进程之间的通信提供通用的数据传输服务。

    数据:TCP:报文段,UDP:用户数据报

    协议:TCP, UDP

    网络层:为分组交换网上的不同主机提供通信服务

    数据:包或IP数据报

    协议:IP

    数据链路层:

    数据:帧

    物理层:

    数据:比特

        1. 2、TCP/IP协议

    特点

    面向连接的运输层协议。

    点对点(一对一)通信。

    可靠交付。

    全双工通信(TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据)。

    面向字节流。

    TCP的三次握手

    1、客户端TCP向服务端TCP发送一个特殊的TCP报文段,不包含应用层数据,报文中SYN=1,设置一个初始号client_isn,记录在报文段的序列号seq中。

    2、SYN报文段到达服务器后,为该TCP链接分配缓存和变量,并向客户端发送允许链接的报文段。其中,SYN = 1, ACK = client_isn+1,seq = server_isn;

    3、客户端收到允许连接的报文后,客户端也给连接分配缓存和变量,客户端向服务端发送一个报文段,其中ACK = server_isn+1,SYN = 0,并且由于连接已经建立所以现在可以携带应用层数据。

     

    TCP四次挥手

    1. 客户端发送连接释放报文段,报文中FIN = 1, seq = u;

    2. 服务端接收到连接释放报文后发出确认报文,其中ACK = 1; seq = v; ack = u + 1;

    3. 服务端在发送完数据后,发送连接释放报文FIN = 1, seq = w, ack = u + 1;并停止向客户端发送数据。

    4. 客户端收到连接释放报文后,发送确认报文, ACK = 1; seq = u + 1; ack = w + 1;并且进入等待2MSL,防止服务端没有接收到确认报文,重传报文。并且使连接产生的报文都消失。

     

    TCP拥塞控制

    拥塞控制和流量控制的区别

    流量控制针对的是点对点之间的(发送方和接收方)之间的速度匹配服务,因为接收方的应用程序读取的速度不一定很迅速,而接收方的缓存是有限的,就需要避免发送的速度过快而导致的问题。拥塞控制是由于网络中的路由和链路传输速度限制,要避免网络的过载和进行的控制

    拥塞控制算法

    1.慢启动

    慢开始算法的思路就是,不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小。一般一开始为1个MSS,之后翻倍这样来增加,呈指数增长。其中1、慢启动过程有一个阈值ssthresh,一旦到达阈值就进入拥塞避免模式。这是第一种离开结束慢启动的方式2、如果收到了一个丢包提示,就将cwnd设为1并且重新开始慢启动过程,这时要把阈值ssthresh设为当前cwnd值的一半。3、如果收到了三次冗余的ACK,就执行一次快速重传并且进入快速恢复状态,这是最后一种结束慢启动的过程。

    2.拥塞避免

    进入拥塞避免说明cwnd值大约是上一次遇到拥塞是的一半,这时候不能翻倍,而是将cwnd的值每次增加一个MSS。结束的过程有两种可能:1、当出现超时时,将cwnd值设为1个MSS,并且将ssthresh阈值设为当前cwnd值的一半。2、当收到三个冗余ACK时,将ssthresh阈值设为当前cwnd值的一半,并且将cwnd值设为当前cwnd值的一半加3,即ssthresh阈值加3,并且进入快速恢复状态

    3.快速恢复

    快速恢复就是指进入快速恢复前的一系列操作,即将ssthresh阈值设为当前cwnd值的一半,并且将cwnd值设为当前cwnd值的一半加3,即ssthresh阈值加3,之后进入拥塞避免状态,即每次cwnd的值加1个MSS

    虚拟机的应用

    虚拟机部署

    虚拟机网络的讲解

    镜像的应用

    虚拟机网络排查

        1. 3、HTTP/HTTPS协议

    http协议

    主要特点

    客户/服务器模式,基于请求与响应模式;

    简单快速: 客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

    灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

    无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

    (——keep alive产生由来,Keep-Alive 功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive 功能避免了建立或者重新建立连接)

    无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。(——cookie与session的产生由来,为了解决此问题)

    URL

    格式

    http://host[":"port][abs_path]

    http表示要通过HTTP协议来定位网络资源;

    host表示合法的Internet主机域名或者IP地址;

    port指定一个端口号,为空则使用缺省端口80;

    abs_path指定请求资源的URI;如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。

    http请求

    请求行

    请求头部

    空行

    请求数据

    http响应

    状态行

    消息报头

    空行

    响应正文

    HTTP基本原理与机制

    1、HTTP请求与响应机制

    HTTP协议用于客户端与服务器之间的通信,在通信线路两端,必定一端是客户端,另一端是服务器。客户端与服务器的角色不是固定的,一端充当客户端,也可能在某次请求中充当服务器。这取决与请求的发起端。

    HTTP协议属于应用层,建立在传输层协议TCP之上。客户端通过与服务器建立TCP连接,之后发送HTTP请求与接收HTTP响应都是通过访问Socket接口来调用TCP协议实现

    2、HTTP 请求/响应的步骤

    1) 客户端连接到Web服务器:一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.oakcms.cn。

    2) 发送HTTP请求:通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

    3) 服务器接受请求并返回HTTP响应:Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。

    4) 释放连接TCP连接:若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

    5) 客户端浏览器解析HTML内容:客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

    HTTPS协议

    概述

    HTTP+加密+数据完整性保护+认证=HTTPS

    HTTP+SSL=HTTPS (在TCP与HTTP之间多了一层SSL/TSL协议)

    加密方式

    对称加密&非对称加密

    对称加密:加密和解密使用相同密钥的加密算法,称为对称加密。

    非对称加密:加密和解密使用不同密钥的加密算法,称为非对称加密。非对称加密需要2个密钥(一对):公钥、私钥(公钥为对外公开的密钥,所有人都可以获取到;私钥不对外公开,只有持有者知道)。使用公钥加密,只能使用私钥解密,反之亦然。

    HTTPS采用混合加密机制(对称+非对称):HTTPS的通信过程使用对称加密技术(优点:比非对称加密处理速度快),而使用非对称加密技术用于交换通信过程使用的对称密钥Master secret。(使用非对称加密技术传输对称密钥,保证对称密钥安全,从而保证对称加密通信的安全性)

    数字签名&数字证书

    数字签名

    “数字签名”过程

    发送者:消息明文-->hash运算-->摘要值A-->私钥加密-->数字签名(数字签名+消息原文-->接受者)

    接受者:数字签名-->发送者公钥解密-->摘要值A,消息原文-->hash运算-->摘要值B,摘要值A<--对比-->摘要值B

    数字签名”的作用

    证明发送方的身份,确定是否由发送方签名并发出来的,因为别人假冒不了发送方的签名;

    确保消息的完整性;

    数字证书

    数字证书颁发过程

    用户首先产生自己的密钥对,将公钥及个人信息发送给第三方认证机构(CA),CA经过一些必要操作对用户身份进行核实,核实后将给用户签发数字证书。数字证书组成包括:用户个人信息及用户公钥+CA的数字签名。

    客户端验证服务端证书有效性

    客户端拿到服务器的数字证书后,首先使用CA的公钥(浏览器会默认内置CA根证书公钥,可对CA及其子机构颁发的证书签名进行解密)对签名解密

    CA机构名称不存在或伪造:浏览器不认识,直接认为是危险证书;

    CA机构名称存在,但无法解密CA签名,认为是危险证书;

    可对CA签名解密,解密后的摘要值A与客户端计算的摘要值B不相等,说明证书信息被篡改,认为是危险证书

    可对CA签名解密,解密后的摘要值A与客户端计算的摘要值B相等,说明证书是有效的且证书信息完整,客户端直接获取证书内服务端的公钥,从而保证公钥确实是服务端的不是别人的,以此来验证服务器身份,确保与服务端的安全通信;

    证书过期失效验证;

    HTTPS握手与协商过程(SSL/TSL握手过程)

    1、【客户端】client hello

    2、【服务端】server_hello+server_certificate+server_hello_done

    3、【客户端】证书校验

    4、【客户端】Client_key_exchange+change_cipher_spec+encrypted_handshake_message

    5、【服务端】change_cipher_spec+encrypted_handshake_message

    6、建立加密通信:开始使用协商密钥Master secret与对称加密算法进行加密通信

    7、单项认证

     

    8、双向认证

     

    HTTPS的缺点

    通信慢:和HTTP相比,SSL/TSL通信部分消耗网络资源。而SSL/TSL通信部分,又因为要对通信进行处理,所以时间上又延长了;

    资源消耗导致处理速度慢:由于HTTPS还需要做服务器、客户端双方加密及解密处理,因此会消耗CPU和内存等硬件资源;

    什么是GET, POST, session, cookie等

    GET

    简介

    从指定的资源请求数据

    特性

    GET 请求可被缓存

    GET 请求保留在浏览器历史记录中

    GET 请求可被收藏为书签

    GET 请求不应在处理敏感数据时使用

    GET 请求有长度限制

    GET 请求只应当用于取回数据

    POST

    简介

    向指定的资源提交要被处理的数据

    特性

    POST 请求不会被缓存

    POST 请求不会保留在浏览器历史记录中

    POST 不能被收藏为书签

    POST 请求对数据长度没有要求

    Cookie

    简介

    Cookie(复数形态:Cookies)是指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。

    Cookie是由服务端生成的,发送给客户端(通常是浏览器)的。Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie:

    内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。

    硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。所以,按存在时间,可分为非持久Cookie和持久Cookie。

    工作原理

    1、创建Cookie

    ①该用户生成一个唯一的识别码(Cookie id),创建一个Cookie对象;

    ②默认情况下它是一个会话级别的cookie,存储在浏览器的内存中,用户退出浏览器之后被删除。如果网站希望浏览器将该Cookie存储在磁盘上,则需要设置最大时效(maxAge),并给出一个以秒为单位的时间(将最大时效设为0则是命令浏览器删除该Cookie);

    ③将Cookie放入到HTTP响应报头,将Cookie插入到一个 Set-Cookie HTTP请求报头中。

    ④发送该HTTP响应报文。

    2、设置存储Cookie

    浏览器收到该响应报文之后,根据报文头里的Set-Cookied特殊的指示,生成相应的Cookie,保存在客户端。该Cookie里面记录着用户当前的信息。

    3、发送Cookie

    当用户再次访问该网站时,浏览器首先检查所有存储的Cookies,如果某个存在该网站的Cookie(即该Cookie所声明的作用范围大于等于将要请求的资源),则把该cookie附在请求资源的HTTP请求头上发送给服务器

    4、读取Cookie

     服务器接收到用户的HTTP请求报文之后,从报文头获取到该用户的Cookie,从里面找到所需要的东西

    作用

    1、记住密码,下次自动登录。

    2、购物车功能。

    3、记录用户浏览数据,进行商品(广告)推荐。

    缺陷

    ①Cookie会被附加在每个HTTP请求中,所以无形中增加了流量。

    ②由于在HTTP请求中的Cookie是明文传递的,所以安全性成问题。(除非用HTTPS)

    ③Cookie的大小限制在4KB左右。对于复杂的存储需求来说是不够用的。

    Session

    简介

    Session代表服务器与浏览器的一次会话过程,这个过程是连续的,也可以时断时续的。Session是一种服务器端的机制,Session 对象用来存储特定用户会话所需的信息。

    Session由服务端生成,保存在服务器的内存、缓存、硬盘或数据库中。

    工作原理

    1、创建Session

    当用户访问到一个服务器,如果服务器启用Session,服务器就要为该用户创建一个SESSION,在创建这个SESSION的时候,服务器首先检查这个用户发来的请求里是否包含了一个SESSION ID,如果包含了一个SESSION ID则说明之前该用户已经登陆过并为此用户创建过SESSION,那服务器就按照这个SESSION ID把这个SESSION在服务器的内存中查找出来(如果查找不到,就有可能为他新创建一个),如果客户端请求里不包含有SESSION ID,则为该客户端创建一个SESSION并生成一个与此SESSION相关的SESSION ID。这个SESSION ID是唯一的、不重复的、不容易找到规律的字符串,这个SESSION ID将被在本次响应中返回到客户端保存,而保存这个SESSION ID的正是COOKIE,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。

    2、使用Session

    我们知道在IE中,我们可以在工具的Internet选项中把Cookie禁止,那么会不会出现把客户端的Cookie禁止了,那么SESSIONID就无法再用了呢?找了一些资料说明,可以有其他机制在COOKIE被禁止时仍然能够把Session id传递回服务器。

    经常被使用的一种技术叫做URL重写,就是把Session id直接附加在URL路径的后面一种是作为URL路径的附加信息,表现形式为: http://…./xxx;jSession=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764;

    另一种是作为查询字符串附加在URL后面,表现形式为: http://…../xxx?jSession=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764

    还有一种就是表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把Session id传递回服务器

    作用

    1、判断用户是否登录。

    2、购物车功能。

    Get与Post的区别

    GET在浏览器回退时是无害的,而POST会再次提交请求。

    GET产生的URL地址可以被Bookmark,而POST不可以。

    GET请求会被浏览器主动cache,而POST不会,除非手动设置。

    GET请求只能进行url编码,而POST支持多种编码方式。

    GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

    GET请求在URL中传送的参数是有长度限制的,而POST没有。

    对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

    GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

    GET参数通过URL传递,POST放在Request body中

    session与cookie的区别

    1、存放位置不同

    Cookie保存在客户端,Session保存在服务端。

    2 、存取方式的不同

     Cookie中只能保管ASCII字符串,假如需求存取Unicode字符或者二进制数据,需求先进行编码。Cookie中也不能直接存取Java对象。若要存储略微复杂的信息,运用Cookie是比拟艰难的。

    而Session中能够存取任何类型的数据,包括而不限于String、Integer、List、Map等。Session中也能够直接保管Java Bean乃至任何Java类,对象等,运用起来十分便当。能够把Session看做是一个Java容器类。

    3、安全性(隐私策略)的不同

    Cookie存储在浏览器中,对客户端是可见的,客户端的一些程序可能会窥探、复制以至修正Cookie中的内容。而Session存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险。 假如选用Cookie,比较好的方法是,敏感的信息如账号密码等尽量不要写到Cookie中。最好是像Google、Baidu那样将Cookie信息加密,提交到服务器后再进行解密,保证Cookie中的信息只要本人能读得懂。而假如选择Session就省事多了,反正是放在服务器上,Session里任何隐私都能够有效的保护。

    4、有效期上的不同

    只需要设置Cookie的过期时间属性为一个很大很大的数字,Cookie就可以在浏览器保存很长时间。 由于Session依赖于名为JSESSIONID的Cookie,而Cookie JSESSIONID的过期时间默许为–1,只需关闭了浏览器(一次会话结束),该Session就会失效。

    5、对服务器造成的压力不同

    Session是保管在服务器端的,每个用户都会产生一个Session。假如并发访问的用户十分多,会产生十分多的Session,耗费大量的内存。而Cookie保管在客户端,不占用服务器资源。假如并发阅读的用户十分多,Cookie是很好的选择。

    6、 跨域支持上的不同

    Cookie支持跨域名访问,例如将domain属性设置为“.baidu.com”,则以“.baidu.com”为后缀的一切域名均能够访问该Cookie。跨域名Cookie如今被普遍用在网络中。而Session则不会支持跨域名访问。Session仅在他所在的域名内有效。

    什么是无状态?

    HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。(——cookie与session的产生由来,为了解决此问题)

      1. web开发技术
        1. 客户端开发技术

    html

    javascript

    css

    其他前端技术

        1. 服务器端开发技术

    java

    php

    python

    ajax

    其他后端技术

      1. web测试技术
        1. 软件测试原理

    原理1:测试可以证明缺陷存在,但不能证明缺陷不存在。

    测试可以证明产品是失败的,也就是说产品中有缺陷。但测试不能证明程序中没有缺陷。适当的测试可以减少测试对象中的隐藏缺陷。即使在测试中没有发现失效,也不能证明其没有缺陷。

    原理2:穷尽测试是不可能的。

    考虑所有可能输入值和它们的组合,并结合所有不同的测试前置条件进行穷尽测试是不可能的。在实际测试过程中,对软件进行穷尽测试会产生天文数字的测试用例。所以说,每个测试都只是抽样测试。因此,必须根据风险和优先级,控制测试工作量。

    原理3:测试活动应当尽早开始。

    在软件生命周期中,测试活动应当尽早开始,而且应当聚焦于定义的目标上。这样可以尽早发现缺陷。

    原理4:缺陷集群性。

    通常情况下,大多数的缺陷只存在于测试对象的极小部分中。缺陷并不是平均而是集群分布的。因此,如果在一个地方发现了很多缺陷,那么通常在附近会有更多的缺陷。在测试中,应当机动灵活地应用这个原理。

    原理5:杀虫剂悖论。

    如果同样的测试用例被一再重复地执行,会减少其有效性。先前没有发现的缺陷也不会被发现。因此,为了维持测试的有效性,战胜这种“抗性药”,应当对测试用例进行不断修改和更新。这样软件中未被测试过的部分或者先前没有被使用的输入组合就会重新执行,从而发现更多的缺陷。

    原理6:测试依赖于测试内容。

    测试必须与应用程序的运行环境和使用中固有的风险相适应。因此,没有两个系统可以以完全相同的方式进行测试。对于每个软件系统,测试出口准则等等应当根据它们使用的环境分别量体定制。安全关键系统与电子商务应用程序要求的测试是不同的。

    原理7:没有失效就是有用系统是一种谬论。

    找到失效、修正缺陷并不能保证整个系统可以满足用户的预期要求和需要。在开发过程中用户的早期介入和原型系统的使用就是为了避免问题的预防性措施。

        1. 测试技术

    测试的对象与目的

    测试目的

    软件测试是为了发现错误而执行程序的过程

    测试是为了证明程序有错,而不是证明程序无错

    一个好的测试用例在于它发现至今未发现的错误

    一个成功的测试是发现了至今未发现的错误的测试

    测试对象

    程序

    数据

    文档

    测试的原则

    尽早的介入测试,在需求设计阶段就应该开始设计。

    所有测试应该要反馈到用户需求。

    程序或系统的测试需要专门的人员负责,除了单元测试,其他测试应该交给专业人员跟进。

    设计测试用例时要考虑到合法输入和非法输入以及各种边界条件,特殊情况还要制造极端状态和意外状态(冒烟测试)。

    二八原则,80%的错误很可能起源于20%的模块中。

    对错误结果要进行一个确认过程。

    制定严格的测试计划。

    要保存测试过程中的所有文档。

    测试的停止依据

    测试超过了预定时间,则停止测试;

    执行了所有的测试用例,但并没有发现故障,则停止测试;

    使用特定的测试用例设计方案作为判断测试停止的基础;

    正面指出停止测试的具体要求,即停止测试的标准可定义为查出某一预定数目的故障;

    根据单位时间内查出故障的数量决定是否停止测试

    软件测试模型

    传统瀑布模型

     

     

    V模型

     

    W模型

     

    X模型

     

    H模型

     

    测试计划

    测试环境

    测试环境=软件+硬件+网络+数据准备+测试工具

    测试数据的筛选与准备

    软件测试策略

    提供了对测试对象进行测试的推荐方法。
    对于每种测试,都应提供测试说明,并解释其实施的原因。
    制定测试策略时所考虑的主要事项有:将要使用的技术以及判断测试何时完成的标准。
    下面列出了在进行每项测试时需考虑的事项,除此之外,测试还只应在安全的环境中使用已知的、有控制的数据库来执行。
    注意:不实施某种测试,则应该用一句话加以说明,并陈述这样的理由。例如,“将不实施该测试。该测试本项目不适用”

    测试用例的设计与编写

    等价类划分法

    边界值分析法

    错误推断法

    因果图法

    判定表驱动发

    正交试验法

    功能图法

    场景法

    白盒测试

    白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖

    目的:通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试。在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。

    原则:(1)一个模块中的所有独立路径至少被测试一次。
    (2)所有逻辑值均需测试true和false两种情况。
    (3)检査程序的内部数据结构,保证其结构的有效性。
    (4)在取值的上、下边界及可操作范围内运行所有循环。

    白盒测试方法

    静态测试

    不通过执行程序而进行测试的技术。静态分析的关键功能是检查软件的表示和描述是否一致,有无冲突或者歧义。

    动态测试

    当软件系统在模拟的或真实的环境中执行之前、之中和之后,对软件系统行为的分析。动态分析包含了程序在受控的环境下使用特定的期望结果进行正式的运行。它显示了一个系统在检查状态下是正确还是不正确。在动态分析技术中,最重要的技术是路径和分支测试。

    BUG的提交与维护

    BUG的定义

    软件的BUG,狭义概念是指软件程序的漏洞或缺陷,广义概念除此之外还包括测试工程师或用户所发现和提出的软件可改进的细节、或与需求文档存在差异的功能实现等

    BUG的由来

    1、缺乏有效沟通

    2、软件的复杂度

    3、编程错误

    4、不断变更的需求

    5、时间的压力

    BUG的优先级

    1级:紧急,需要立即解决的问题,对应严重度为致命问题

    2级:高 ,软件的主要功能错误或者造成软件崩溃,数据丢失的缺陷

    3级:中    ,影响软件功能和性能的一般缺陷

    4级:低    ,对软件的质量影响非常轻微的缺陷,多为建议性或者UI层级的问题

    BUG严重程度

    致命

    严重

    一般

    建议

    BUG的类型

    功能类、性能类、界面类、易用性类、兼容性类、其它

    功能问题、设计缺陷、界面优化、性能问题、配置相关、安装部署、安全相关、标准规范、测试脚本、文档错误、兼容问题、用户体验、其它

    单元测试

    对软件中的最小可测试单元进行检查和验证

    集成测试

    也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试

    常用两种测试技术:功能性测试、非功能性测试

    系统测试

    对整个系统的测试,将硬件、软件、操作人员看作一个整体,检验它是否有不符合系统说明书的地方

    分类:恢复测试、安全测试、压力测试

    测试报告的编写

        1. web性能

    页面级性能优化

    1. 减少 HTTP请求数

    (1). 从设计实现层面简化页面

    保持页面简洁、减少资源的使用时最直接的

    (2). 合理设置 HTTP缓存

    缓存的力量是强大的,恰当的缓存设置可以大大的减少 HTTP请求

    原则很简单,能缓存越多越好,能缓存越久越好

    (3). 资源合并与压缩

    尽可能的将外部的脚本、样式进行合并,多个合为一个。另外, CSS、 Javascript、Image 都可以用相应的工具进行压缩,压缩后往往能省下不少空间。

    (4). CSS Sprites

    合并 CSS图片,减少请求数的又一个好办法。

    (5). Inline Images

    使用 data: URL scheme的方式将图片嵌入到页面或 CSS中,如果不考虑资源管理上的问题的话,不失为一个好办法。如果是嵌入页面的话换来的是增大了页面的体积,而且无法利用浏览器缓存。使用在 CSS中的图片则更为理想一些

    (6). Lazy Load Images

    这条策略实际上并不一定能减少 HTTP请求数,但是却能在某些条件下或者页面刚加载时减少 HTTP请求数。

    2. 将外部脚本置底

    最简单可依赖的方法就是将脚本尽可能的往后挪,减少对并发下载的影响。

    3. 异步执行 inline脚本

    建议将执行时间较长的 inline脚本异步执行,异步的方式有很多种,例如使用 script元素的defer 属性(存在兼容性问题和其他一些问题,例如不能使用 document.write)、使用setTimeout ,此外,在HTML5中引入了 Web Workers的机制,恰恰可以解决此类问题。

    4. Lazy Load Javascript

    随着 Javascript框架的流行,越来越多的站点也使用起了框架。不过,一个框架往往包括了很多的功能实现,这些功能并不是每一个页面都需要的,如果下载了不需要的脚本则算得上是一种资源浪费 -既浪费了带宽又浪费了执行花费的时间。目前的做法大概有两种,一种是为那些流量特别大的页面专门定制一个专用的 mini版框架,另一种则是 Lazy Load。

    5. 将 CSS放在 HEAD中

    如果将 CSS放在其他地方比如 BODY中,则浏览器有可能还未下载和解析到 CSS就已经开始渲染页面了,这就导致页面由无 CSS状态跳转到 CSS状态,用户体验比较糟糕。除此之外,有些浏览器会在 CSS下载完成后才开始渲染页面,如果 CSS放在靠下的位置则会导致浏览器将渲染时间推迟。

    6. 异步请求 Callback

    在某些页面中可能存在这样一种需求,需要使用 script标签来异步的请求数据。

    7. 减少不必要的 HTTP跳转

    对于以目录形式访问的 HTTP链接,很多人都会忽略链接最后是否带 ’/',需要注意,这其中很可能隐藏了 301跳转,增加了多余请求。

    8. 避免重复的资源请求

    这种情况主要是由于疏忽或页面由多个模块拼接而成,然后每个模块中请求了同样的资源时,会导致资源的重复请求

    9. 精简Javascript和CSS

    精简就是将Javascript或CSS中的空格和注释全去掉,

    代码级性能

    1. Javascript

    (1). DOM

    a. HTML Collection

    需要遍历 HTML Collection的时候,尽量将它转为数组后再访问,以提高性能。即使不转换为数组,也请尽可能少的访问它,例如在遍历的时候可以将 length属性、成员保存到局部变量后再使用局部变量。

    b. Reflow & Repaint

    DOM操作还需要考虑浏览器的 Reflow和Repaint ,因为这些都是需要消耗资源的

    (2). 慎用 with

    使用 with相当于增加了作用域链长度。而每次查找作用域链都是要消耗时间的,过长的作用域链会导致查找性能下降。

    除非能肯定在 with代码中只访问 obj中的属性,否则慎用 with,替代的可以使用局部变量缓存需要访问的属性。

    (3). 避免使用 eval和 Function

    每次 eval 或 Function 构造函数作用于字符串表示的源代码时,脚本引擎都需要将源代码转换成可执行代码。这是很消耗资源的操作 —— 通常比简单的函数调用慢 100倍以上。

    eval 函数效率特别低,由于事先无法知晓传给 eval 的字符串中的内容,eval在其上下文中解释要处理的代码,也就是说编译器无法优化上下文,因此只能有浏览器在运行时解释代码。这对性能影响很大。

    Function 构造函数比 eval略好,因为使用此代码不会影响周围代码 ;但其速度仍很慢。

    此外,使用 eval和 Function也不利于Javascript 压缩工具执行压缩。

    (4). 减少作用域链查找

    这一点在循环中是尤其需要注意的问题。如果在循环中需要访问非本作用域下的变量时请在遍历之前用局部变量缓存该变量,并在遍历结束后再重写那个变量,这一点对全局变量尤其重要,因为全局变量处于作用域链的最顶端,访问时的查找次数是最多的。

    (5). 数据访问

    Javascript中的数据访问包括直接量 (字符串、正则表达式 )、变量、对象属性以及数组,其中对直接量和局部变量的访问是最快的,对对象属性以及数组的访问需要更大的开销。

    a. 对任何对象属性的访问超过 1次

    b. 对任何数组成员的访问次数超过 1次

    另外,还应当尽可能的减少对对象以及数组深度查找。

    (6). 字符串拼接

    在 Javascript中使用"+" 号来拼接字符串效率是比较低的,因为每次运行都会开辟新的内存并生成新的字符串变量,然后将拼接结果赋值给新变量。与之相比更为高效的做法是使用数组的 join方法,即将需要拼接的字符串放在数组中最后调用其 join方法得到结果。不过由于使用数组也有一定的开销,因此当需要拼接的字符串较多的时候可以考虑用此方法。

    2. CSS选择符

    3. HTML

    4. Image压缩

    优化方法

    网页内容

    减少http请求次数

    减少DNS查询次数

    避免页面跳转

    缓存Ajax

    延迟加载

    提前加载

    减少DOM元素数量

    根据域名划分内容

    减少iframe数量

    避免404

    服务器

    使用CDN

    添加Expries或Cache-Control报文头

    Gzip压缩传输文件

    配置ETags

    尽早flush输出

    使用GET Ajax请求

    避免空的图片src

    Cookie

    减少Cookie大小

    页面内容使用无cookie域名

    CSS

    将样式表置顶

    避免CSS表达式

    用<link>代替@import

    避免使用Filters

    Javascript

    将脚本置底

    使用外部Javascript和CSS

    精简Javascript和CSS

    去除重复脚本

    减少DOM访问

    使用智能事件处理

    图片

    优化图像

    优化CSS Sprite

    不要在HTML中缩放图片

    使用小且可缓存的favicon.ico

    移动客户端

    保持单个内容小于25kb

    打包组建成符合文档

        1. 安全

    SQL注入测试与防止SQL注入

    SQL注入

    SQL注入原理

    对于WEB应用来说,用户数据等都是存储在数据库中的。SQL注入就是攻击者通过构造一些恶意的SQL查询语句,让后台的数据库去解析,从而达到入侵目标网络,获取敏感信息的攻击手段

    SQL的危害

    一旦数据库被入侵的话,黑客们可以搞得事情就多了,例如(拖库),就是把你整个数据库拿下来,这就意味着你所有的用户信息泄露。这些被获取到用户信息可以可能会被倒卖,二次利用

    SQL注入的分类

    错误回显

    错误回显是通数据库的报错信息来获取一些数据库的基本信息。错误回显最基础的注入就是单引号【'】

    布尔注入

    布尔注入的思路主要是以下三点。1、提前闭合语句。2、利用OR和AND构造特殊情况,例如恒为正确。3、注释后面多余的SQL语句

    时间盲注

    盲注是不能通过直接显示的途径来获取数据库数据的方法。在盲注中,攻击者根据其返回页面的不同来判断信息(可能是页面内容的不同,也可以是响应时间不同)。

    UNION 注入

    UNION 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。所以你如果想要使用union查询来进行注入,你首先要猜测后端查询语句中查询了多少列,哪些列可以回显给用户。

    SQL注入预防

    确定SQL漏洞的方法

    1、错误提示

    如果目标Web网站开启了错误显示,攻击者就可以通过反复调整发送的参数、查看页面打印的错误信息,推测出Web网站使用的数据库和开发语言等重要信息。

    2、盲注

    除非运维人员疏忽,否则大部分的Web运营网站应该都关闭了错误提示信息,此时攻击者一般会采用盲注的技巧来进行反复的尝试判断。 我们之前的查看会员详情页面的url地址为userinfo.php?username=plhwin,此时黑客分别访问userinfo.php?username=plhwin' AND 1=1-- hack和userinfo.php?username=plhwin' AND 1=2-- hack,如果前者访问能返回正常的信息而后者不能,就基本可以判断此网站存在SQL注入漏洞,因为后者的1=2这个表达式永远不成立,所以即使username传入了正确的参数也无法通过,由此可以推断这个页面存在SQL注入漏洞,并且可以通过username参数进行注入。

    防御SQL注入的方法

    1、检查变量数据类型和格式

    只要是有固定格式的变量,在SQL语句执行前,应该严格按照固定格式去检查,确保变量是我们预想的格式

    2、过滤特殊符号

    对于无法确定固定格式的变量,一定要进行特殊符号过滤或转义处理。

    3、绑定变量,使用预编译语句

    绑定变量使用预编译语句是预防SQL注入的最佳方式,使用预编译的SQL语句语义不会发生改变,在SQL语句中,变量用问号?表示,黑客即使本事再大,也无法改变SQL语句的结构

    跨站脚本攻击(XSS)及如何测试与防范XSS

    定义

    指利用网站漏洞从用户那里恶意盗取信息。

    成因

    XSS漏洞成因是由于动态网页的Web应用对用户提交请求参数未做充分的检查过滤,允许用户在提交的数据中掺入代码,然后未加编码地输出到第三方用户的浏览器,这些攻击者恶意提交代码会被受害用户的浏览器解释执行。

    XSS生效方式

    (1)构造URL

    XSS攻击者通过构造URL的方式构造了一个有问题的页面;当其他人点击了此页面后,会发现页面出错,或者被暗中执行了某些js脚本,这时,攻击行为才真正生效。

    (2)发布内容式

    构造URL攻击方式传播范围有限,被攻击者只要有基本的安全意识就可以避免,因此这种手段的危险性比较小。相比之下,通过发表内容构造的XSS的危害就大了很多。

    在可以发表内容的论坛、讨论区、吧、博客、微博等网站上,用户发表的内容会保存起来,允许其他用户浏览。这些保存的内容显示在页面上的时候,如果没有经过正确的处理,也会把攻击者精心构造的内容显示出来,访问该内容的用户就此中招。如果该页面流传广泛,则影响会更加深远。

    (3)蠕虫式

    最暴力的方式是使用蠕虫——就是首先发一个有问题的文章,浏览者阅读时会被暗中执行恶意代码,发表一篇新的文章的,该文章也含有同样的恶意代码。这样有可能在最快时间内将攻击铺满整个网站。蠕虫式攻击将暗中偷偷摸摸的攻击行为变成了光明正大的攻城拔寨,极容易被发现和修复。

    XSS攻击实例

    (1)XSS偷取用户信息

    (2)XSS盗取Cookie

    (3)XSS钓鱼网站

    (4)XSS蠕虫攻击

    XSS的破坏方式

    (1)破坏页面结构:用户输入的内容包含了html的标签,与前面的标签等闭合,导致页面的DIV结构发生变化,页面错乱。

    (2)破坏显示内容:用户输入的内容包含了单引号或双引号,与前面的单引号或双引号匹配,导致后面的内容丢失,显示不出来。

    (3)破坏JS:用户产生的内容直接输出到js片断中,但仅转义少数字符不能保证排除攻击,所以容易导致JS被破坏

    XSS攻击 绕过过滤的一些简单方法

    1、大小写绕过

    这个绕过方式的出现是因为网站仅仅只过滤了<script>标签,而没有考虑标签中的大小写并不影响浏览器的解释所致

    2、利用过滤后返回语句再次构成攻击语句来绕过

    即我们输入一串原始值,网站将输入的原始值进行过滤,过滤后的值仍是一段可执行的代码。

    3、并不是只有script标签才可以插入代码!

    4、编码脚本代码绕过关键字过滤。

    有的时候,服务器往往会对代码中的关键字(如alert)进行过滤,这个时候我们可以尝试将关键字进行编码后再插入,不过直接显示编码是不能被浏览器执行的,我们可以用另一个语句eval()来实现。【eval()会将编码过的语句解码后再执行】

    5、组合各种方式

    在实际运用中漏洞的利用可能不会这么直观,需要我们不断的尝试,甚至组合各种绕过方式来达到目的。

    XSS预防

    XSS攻击造成的危害之所以会发生,是因为用户的输入变成了可执行的代码,因此我们要对用户的输入进行HTML转义处理,将其中的尖括号,引号,单引号等特殊字符进行转义编码,例如“〈”转义后为“<;”,“>”转义后为“>;”,“'”转义后为“&;”,“"”转义后为“";”

    DOS与DDOS及预防方法

    DOS

    DoS是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。

     DOS(Denial Service)拒绝服务式攻击,它是一种实现即简单很有效的针对服务器进行的攻 击方式,它的攻击目的就是让被攻击的主机和服务器拒绝用户正常访问,破坏系统正常运行 ,从而达到互联网用户无法连接被攻击的服务器和主机,造成服务器瘫痪。它的攻击过程,首先攻击者向被攻击的服务器发生大量带有虚假IP地址的服务请求,被攻击者在接收到请求 后返回确认信息,等待攻击者确认,此过程需要TCP的三次交换。由于攻击者发送的请求信 息是虚假的,所以被攻击服务器无法接受到信息确认,一直处于等待状态,而分配给这次请 求的资源却始终没有被释放。当被攻击者等待一定的时间后,连接会因超时而被断开,这是 攻击者再次发送新的虚假信息请求,就这样最终服务器资源被耗尽,直到瘫痪。

    DDOS

    DDOS就是控制多台电脑对同一目标进行DOS攻击。DDOS是英文Distributed Denial of Service的缩写,意即"分布式拒绝服务",DDOS的中文名叫分布式拒绝服务攻击, 俗称洪水攻击。

    DDOS(Distributed Denial Service)分布拒绝式攻击,它是在DOS基础上进行的大规模,大 范围的攻击模式,DOS只是单机和单机之间的攻击模式,而DDOS是利用一批受控制的僵尸主 机向一台服务器主机发起的攻击,其攻击的强度和造成的威胁要比DOS严重很多,更具破坏 性。首先DDOS攻击者要寻找僵尸主机,在互联网上寻找一些有后门漏洞的主机,然后入侵系  统安装控制程序,入侵的越多,控制的僵尸主机就越多,攻击源就更多,然后把入侵的主机 分配,一部分充当攻击的主要控制端,一部分充当攻击源,各负其责,在攻击者统一指挥下 对被攻击的服务器发起攻击,由于这个攻击模式是在幕后操作,所以很难被监控系统跟踪, 身份不容易被发现。

    常规防御方法

    1、确保服务器的系统文件是最新的版本,并及时更新系统补丁。

    2、关闭不必要的服务。

    3、限制同时打开的SYN半连接数目,缩短SYN半连接的time out 时间,限制SYN/ICMP流量

    4、正确设置防火墙

    5、认真检查网络设备和主机/服务器系统的日志。只要日志出现漏洞或是时间变更,那这台机器就可能遭到了攻击。

    6、限制在防火墙外与网络文件共享。这样会给黑客截取系统文件的机会,主机的信息暴露给黑客,无疑是给了对方入侵的机会。

    7、充分利用网络设备保护网络资源

    8、用足够的机器承受黑客攻击

    9、检查访问者的来源

    SSL/https

    跨站伪造请求攻击 cross site request forgeries (CSRF)及预防

    定义

    意为跨网站请求伪造,也有写为XSRF。攻击者伪造目标用户的HTTP请求,然后此请求发送到有CSRF漏洞的网站,网站执行此请 求后,引发跨站请求伪造攻击。攻击者利用隐蔽的HTTP连接,让目标用户在不注意的情况下单击这个链接,由于是用户自己点击的,而他又是合法用户拥有合法 权限,所以目标用户能够在网站内执行特定的HTTP链接,从而达到攻击者的目的。

    现状

    CSRF这种攻击方式在2000年已经被国外的安全人员提出,但在国内,直到06年才开始被关注,08年,国内外的多个大型社区和交互网站分别爆出CSRF漏洞,如:NYTimes.com(纽约时报)、Metafilter(一个大型的BLOG网站),YouTube和百度HI......而现在,互联网上的许多站点仍对此毫无防备,以至于安全业界称CSRF为“沉睡的巨人”。

    原理

    触发条件

    1.登录受信任网站A,并在本地生成Cookie。

    2.在不登出A的情况下,访问危险网站B。

    CSRF的防御

    服务端进行CSRF防御

    服务端的CSRF方式方法很多样,但总的思想都是一致的,就是在客户端页面增加伪随机数。

    (1).Cookie Hashing(所有表单都包含同一个伪随机值)

    (2).验证码

    (3).One-Time Tokens(不同的表单包含一个不同的伪随机值)

    CSRF预防策略

    (1)验证 HTTP Referer 字段

    (2)在请求地址中添加 token 并验证

    (3)在 HTTP 头中自定义属性并验证

     安全证书的意义,浏览器在证书失效提示

    意义

    所谓的网站安全证书 是通过在客户端浏览器和Web服务器之间建立一条SSL安全通道保证了双方传递信息的安全性,而且用户可以通过服务器证书验证他所访问的网站是否真实可靠。

    浏览证书失效时在浏览正规安全网站时会提示

    数据加密技术

    概念

    "加密",是一种限制对网络上传输数据的访问权的技术。原始数据(也称为明文,plaintext)被加密设备(硬件或软件)和密钥加密而产生的经过编码的数据称为密文(ciphertext)。将密文还原为原始明文的过程称为解密,它是加密的反向处理,但解密者必须利用相同类型的加密设备和密钥对密文进行解密。

    加密基本功能

    1. 防止不速之客查看机密的数据文件;

    2. 防止机密数据被泄露或篡改;

    3. 防止特权用户(如系统管理员)查看私人数据文件;

    4. 使入侵者不能轻易地查找一个系统的文件。

    加密方式

    从技术上上划分

    ①链路加密:通常把网络层以下的加密叫链路加密,主要用于保护通信节点间传输的数据,加解密由置于线路上的密码设备实现。根据传递的数据的同步方式又可分为同步通信加密和异步通信加密两种,同步通信加密又包含字节同步通信加密和位同步通信加密。

    ②节点加密:是对链路加密的改进。在协议传输层上进行加密,主要是对源节点和目标节点之间传输数据进行加密保护,与链路加密类似.只是加密算法要结合在依附于节点的加密模件中,克服了链路加密在节点处易遭非法存取的缺点。

    ③端对端加密:网络层以上的加密称为端对端加密。是面向网络层主体。对应用层的数据信息进行加密,易于用软件实现,且成本低,但密钥管理问题困难,主要适合大型网络系统中信息在多个发方和收方之间传输的情况。

    一般加密分类

    1. 根本不考虑解密问题;

    2. 私用密钥加密技术:对称式加密(Symmetric Key Encryption):对称式加密方式对加密和解密使用相同的密钥。通常,这种加密方式在应用中难以实施,因为用同一种安全方式共享密钥很难。如:RC4、RC2、DES 和 AES 系列加密算法。

    3. 公开密钥加密技术:非对称密钥加密(Asymmetric Key Encryption):非对称密钥加密使用一组公共/私人密钥系统,加密时使用一种密钥,解密时使用另一种密钥。公共密钥可以广泛的共享和透露。当需要用加密方式向服务器外部传送数据时,这种加密方式更方便。如: RSA

    4. 数字证书。(Certificate):数字证书是一种非对称密钥加密,但是,一个组织可以使用证书并通过数字签名将一组公钥和私钥与其拥有者相关联。

    数据加密应用

    1、媒体加密:DRM

    2、文件加密:文本加密、pdf、word

    3、 数据加密:ASP.NET(C#)中的数据加密

    4、硬件加密:加密狗

    加密方式

    1、  对称加密:对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码(称为对称密码)。因此,通信双方都必须获得这把钥匙,并保持钥匙的秘密。

    DES加密解密过程

    1、 生成key和IV

    2、 字符串明文转成某一代码页对应的编码字节流

    3、 加密操作

    4、 解密操作

    5、 从编码字节流转成字符串明文

    常见的对称加密算法:DES,AES,3DES等等

    2、非对称加密:非对称加密指的是:加密和解密使用不同的秘钥,一把作为公开的公钥,另一把作为私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密。

    RSA加密和解密

    RSA缺点

    A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。

    B)分组长度太大,为保证安全性,n 至少也要 600bits以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个

    RSA原理

    当n=p×q,p与q是两个大质数。只知道n的值,想要计算p和q,这是一个世界性的极为困难的数学难题。RSA的基础就是基于的n的两个质数分解难题。

    过程

    Alice选择两个大质数p和q,求得n=p×q。计算φ(n)=(p−1)×(q−1),接下来,Alice选择一个与φ(n)互质的数e,并计算e−1在模为φ(n)下的值,将计算出的值记为s。我们知道,e与φ(n)互质,所以一定存在e−1, 这一步,service 就算出了公钥和私钥,其中,公钥为(e,n),私钥为(s,n)

    接下来,Bob可以在非安全信道请求Alice获得公钥。Evl通过中间攻击,只能获得(e,n),以及密文D。假定Bob需要发送的内容为m,计算D=me(modn),然后把D发送给Alice

    Alice收到D之后,计算me(e−1)(modn)=me×e−1(modn)≡m(modn).

    其中,在不安全信道中传输的是n和e。然而,p和q只有Alice才知道,即便Eval获得了n,基于质数分解难题,他无法算出p和q,也就无法算出私钥s来揭秘被加密的消息。 且,m不能是大于n的数,当m大于n时可以拆分之后分段加密。

    常见的非对称加密算法:RSA,ECC

      1. 服务器及部署知识
        1. apache
        2. tomcat
        3. ant
        4. git
        5. jenkins
        6. maven等工具
      2. 浏览器机制
        1. 理解浏览器在处理javascript及渲染CSS的机制
        2. 了解IE与其他浏览器的差异
        3. 为什么兼容性测试时需要特别关注IE
        4. 浏览器在加载javascript,CSS有时在前面有时在后面,为什么?
        5. 加载顺序会对视觉和使用上有什么影响呢?
        6. 常见内核和对应的浏览器

    Webkit内核

    1.Safari浏览器:Safari,苹果计算机的操作系统Mac OS中浏览器,2003年,用来取代之前的Internet Explorer for Mac

    2.Chrome:Chrome的目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    Presto内核

    Opera采用的内核:该内核在2003年的Opera7中首次被使用,    一直到2013年2月,Opera浏览器宣布改为Webkit内核,    其实也是件好事,因为可以少做一点兼容性测试,省一些工夫

    Trident内核

    1. IE

    2. MaxThon 傲游浏览器(傲游1.x、2.x为IE内核,3.x为IE与Webkit双核)是一款多功能、个性化多标签浏览器。

    3.腾讯TT浏览器是一款集多线程、黑白名单、智能屏蔽、鼠标手势等功能于一体的多页面浏览器,具有快速、稳定、安全的特点。

    4.世界之窗浏览器是一款快速、安全、功能细节丰富且强大的绿色多窗口浏览器,由凤凰工作室(现变身为“北京超卓科技有限公司”)开发。

    5.360浏览器

    6.搜狗高速浏览器-这可能是当今启动最快的浏览器

    Gecko内核

    1.netscape浏览器 网景浏览器

    2.Mozilla,Mozilla名字来自Mosaic和Godzilla(怪兽哥斯拉)两个词的结合,意为“Mosaic终结者”。Mosaic是互联网历史上第一个获普遍使用的网页浏览器。

      1. web架构
        1. 软件出错时怎么个报警法?是否有详尽的log记录?
        2. 服务器缓存机制如何?
        3. 数据库如何主从同步,如何备份的?
        4. 集群如何处理session的?
      2. 其他需要掌握技能
        1. Linux

    linux系统

    RedHat的部署

    远程连接RedHat服务器

    命令分类及命令格式

    目录操作

    文件操作

    用户操作

    组管理

    文件及目录权限

    进程管理

    任务管理

    linux故障维护

    shell脚本设计与开发

    管道与变量

    标准输出输入、重定向

    条件测试、整数值|字符串比较

    测试操作、整数值|字符串的比较、逻辑测试

    if条件语句与案例分析

    while循环与案例分析

    case语句案例应用

    break语句与continue语句

    函数的案例与应用

        1. 脚本语言等
      1. SEO
        1. XML sitemap的意义,可以让搜索引擎了解你的网站地图
        2. 了解 robots.txt 和搜索引擎爬虫是如何工作的
        3. 友好的搜索引擎URL

    URL越短越好

    静态URL地址

    保持URL的一致性

        1. 重定向301和302

    301 redirect

    301代表永久性转移(Permanently Moved),301重定向是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,都建议使用301来做转址。

    302 redirect

    302代表暂时性转移(Temporarily Moved )

        1. 网页Meta信息中title,description等的重要性
      1. 用户体验
        1. 访问网站的用户操作行为是怎么样的?页面的访问频率占比如何?因为测试的精力和侧重点也要根据这个数据而定   
        2. 网站部署时是否会影响到用户使用,如何避免?
        3. 不要直接显示不友好的错误提示,是否有友好的提示信息?
        4. web应用不能泄漏用户的隐私信息
        5. 页面是在当前页打开还是另开一个tab?
        6. 页面元素的布局如何影响到用户体验的?
      2. ORACLE/SQL
        1. 基础语句

    增:insert

    删:delete

    改:update

    查:selete

        1. 限制性查询和数据的排序

    限制性查询和数据的排序

    ORDER BY

        1. 常用的SQL*PLUS语句

    DESC

    SET LINE

    Del

        1. 单行函数

    字符型函数

    单行字符型函数

    ROUND和TRUNC

        1. NULL值的处理、逻辑操作和函数嵌套

    NULL

    逻辑运算符和逻辑表达式

    运算符的优先级

        1. 分组函数

    COUNT

    AVE和SUM

    MIN和MAX

    GROUP BY

    HAVING

        1. 多表查询

    多表连接

    相等连接

        1. 子查询

    WHERE

    HAVING

    FROM

      1. 使用工具
        1. HttpWatch,基于IE的网络数据分析工具,包括网页摘要,Cookies管理,缓存管理,消息头发送/接受,字符查询,POST 数据和目录管理功能等
        2. FireBug,用途同上,基于firefox的
        3. Yslow,前端网站性能工具,显示测试结果的分析,分为等级、组件、统计信息
        4. Fiddler,强大的web前端调试工具,它能记录/拦截所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,也可用于安全测试
        5. Chrome扩展程序:浏览器兼容性检测工具,分析网站的兼容性情况
        6. ShowIP:显示访问网站的IP,web测试中你是否经常因为访问的网站IP不对,而被开发人员BS呢?它能帮助到你。
        7. 网络限速等工具:netlimiter

    注:内容来自多个地方汇总,具体来源未备注

    内容原版为xmind脑图:https://download.csdn.net/download/qq_34897661/10819415

    展开全文
  • Web测试和App测试区别

    万次阅读 多人点赞 2018-10-27 14:14:40
    WEB测试和应用测试从流程上来说,没有区别。都需要经历测试计划方案,用例设计,测试执行,缺陷管理,测试报告等相关活动。从技术上来说,WEB测试和APP测试其测试类型也基本相似,都需要进行功能测试,性能测试,...

    WEB测试和应用测试从流程上来说,没有区别。都需要经历测试计划方案,用例设计,测试执行,缺陷管理,测试报告等相关活动。从技术上来说,WEB测试和APP测试其测试类型也基本相似,都需要进行功能测试,性能测试,安全性测试,GUI测试等测试类型。
    他们的主要区别在于具体测试的细节和方法有区别,比如:性能测试,在WEB测试只需要测试响应时间这个要素,在应用测试中还需要考虑流量测试和耗电量测试
    兼容性测试:在WEB端是兼容浏览器,在应用端兼容的是手机设备而且相对应的兼容性测试工具也不相同,WEB因为是测试兼容浏览器,所以需要使用不同的浏览器进行兼容性测试(常见的是兼容IE6,IE8,铬,火狐)如果是手机端,那么就需要兼容不同品牌,不同分辨率,不同的Android版本甚至不同操作系统的兼容。(常见的兼容方式是兼容市场占 率前Ñ位的手机即可),有时候也可以使用到兼容性测试工具,但WEB兼容性工具多用IETester等工具,而应用程序兼容性测试会使用试验在这样的商业工具也可以做测试。
    安装测试:WEB测试基本上没有客户端层面的安装测试,但是应用程序测试是存在客户端层面的安装测试,就那么相关具备的测试点
    还有,应用测试基于手机设备,还有一些手机设备的专项测试。如交叉事件测试,操作类型测试,网络测试(弱网测试,网络切换)
    交叉事件测试:就是在操作某个软件的时候,来电话,来短信,电量不足提示等外部事件。
    操作类型测试:如横屏测试,测试手势
    网络测试:。包含弱网和网络切换测试需要测试弱网所造成的用户体验,重点要考虑回退和刷新是否会造成二次提交弱网络的模拟,据说可以用360wifi实现设置。
    从系统架构的层面,WEB测试只要更新了服务器端,客户端就会同步会更新。而且客户端是可以保证每一个用户的客户端完全一致的。但是APP端是不能够保证完全一致的,除非用户更新客户端如果是APP下修改了服务器端,意味着客户端用户所使用的核心版本都需要进行回归测试一遍
    还有升级测试:升级测试的提醒机制,升级取消是否会影响原有功能的使用,升级后用户数据是否被清除了。

    四大浏览器

    chrome、Firefox、Safari、IE

    展开全文
  • 专项测试之Web测试

    万次阅读 多人点赞 2019-12-23 14:19:55
    电商平台的分布式多层结构二、Web 测试测试方法1.Web 测试的总体策略2.Web 测试的范围3.Web 测试的方法3.1 功能测试3.1.1 链接3.1.2 表单3.1.3 Cookies3.1.4 设计语言测试3.1.5 文件上传3.2 性能测试3.2.1 链接...

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!

    一、电子商务站点的基本结构

    1.电商平台的标准架构

    在这里插入图片描述

    • 相关概念
      √     SEO
             ✰     Search Engine Optimization,搜索引擎优化。
             ✰     SEO 是指从自然搜索结果获得网站流量的技术和过程,是在了解搜索引擎自然排名机制的基础上,对网站进行内部及外部的调整优化,改进网站在搜索引擎中的关键词自然排名,获得更多流量,从而达成网站销售及品牌建设的目标。
      √     ERP
             ✰     Enterprise Resource Planning,企业资源计划。
             ✰     功能涵盖生产资源计划、制造、财务、销售、采购、质量管理,实验室管理,业务流程管理,产品数据管理,存货、分销与运输管理,人力资源管理和定期报告系统。
             ✰     目前,在我国 ERP 所代表的含义已经被扩大,用于企业的各类软件,已经统统被纳入 ERP 的范畴。
             ✰     它跳出了传统企业边界,从供应链范围去优化企业的资源,是基于网络经济时代的新一代信息系统,主要用于改善企业业务流程以提高企业核心竞争力。
      √     CRM
             ✰     Customer Relationship Management,客户关系管理系统。
             ✰     企业用 CRM 技术来管理与客户之间的关系,功能涵盖自动化分析销售、市场营销、客户服务以及应用等流程的软件系统。它的目标是通过提高客户的价值、满意度、赢利性和忠实度来缩减销售周期和销售成本、增加收入、寻找扩展业务所需的新的市场和渠道。CRM 是选择和管理有价值客户及其关系的一种商业策略,CRM 要求以客户为中心的企业文化来支持有效的市场营销、销售与服务流程。

    2.电商平台的分布式多层结构

    在这里插入图片描述

    二、Web 测试的测试方法

    1.Web 测试的总体策略

    在这里插入图片描述

    2.Web 测试的范围

    • 功能
    • 性能
    • 界面
    • 兼容性
    • 安全性
    • DB
    • 文档

    3.Web 测试的方法

    3.1 功能测试

    功能测试主要从链接、表单、Cookies、设计语言、数据库、文件上传等方面进行。

    3.1.1 链接

    • 也称超链接,是指从一个网页指向另一个目标的连接关系,所指向的目标可能是一个网页、相同网页上的不同位置、图片、电子邮件地址、文件、应用程序等。

    • 链接最容易出现以下几种错误
      √     错误链接
             ✰     如 URL 地址拼写错误、URL 后缀多余或缺少斜杠、URL 地址中出现的字母大小写不完全匹配、用户输入的域名拼写错误。
      √     空链接
             ✰     单击该链接时不会指向任何内容。
      √     死链接
             ✰     原来正常,后来失效的链接。
      √     孤立页面
             ✰     指没有链接指向该页面,只有知道正确的 URL 地址才能访问。

    3.1.2 表单

    • 表单是系统与用户交互最主要的界面,测试过程主要关注程序是否能正确地处理客户提交的信息,并将信息正确地反馈到客户端。

    • 测试过程中应该注意以下几方面的测试
      √     文本输入框对长度是否有限制。
      √     文本输入框对字符类型是否有限制。
      √     文本输入框模式匹配是否正确,如该文本框只能输入日期格式的数据,那么只能匹配不同的日期格式,而不能匹配其他格式的数据。
      √     各按钮实现的功能是否正确。

    3.1.3 Cookies

    • Cookies 能够让网站服务器把少量数据存储到客户端的硬盘或内存,或是从客户端的硬盘读取数据的技术。

    • Cookie 有哪些用途
      √     自动登录,登录时,选择记住用户名,下次登录会自动带出用户名来。
      √     广告精准投放,当我们用浏览器搜索过一些关键字,如:web 测试书,某手机,打开浏览器时,会推送相关浏览过的商品。

    • 查看 Cookies
      √     打开 IE,在工具栏点工具→Internet 选项→常规→(Internet 临时文件)浏览历史记录→设置,这样可以查看到 Cookies 所存位置,还可以对其进行设置。
      在这里插入图片描述

    • Cookies 的测试包含以下几个方面
      √     Cookies 的安全性
             ✰     Cookie 中最好不要存储一些敏感的信息,需要时应该对 Cookie 中的一些字段进行加密处理。
             ✰     Cookies 的过期时间是否正确;

    • Cookies 的变量名与值是否正确;

    • Cookies 是否必要,是否缺少:一是生成的 Cookie 文件是否与创建的一致,不能多也不能少,二是对于不必要的 Cookie 可以删除。

    • Cookies 的作用域是否正确合理;

    • 多个 Cookies 的作用域之间关系的测试。

    3.1.4 设计语言测试

    • Web 设计语言版本的差异可以引起客户端或服务器端严重的问题,如使用哪种版本的 HTML 等。
    • 不同的脚本语言,如 Java、JavaScript、ActiveX、VBScript 或 Perl 等,也要进行验证。
    • 关于设计语言的测试,应该注意以下几个方面
      √     不同的浏览器内核引擎不同,会导致与不同的开发语言的兼容情况不同,当前主流浏览器的内核有 Trident、Tasman、Pesto、Gecko、KHTML、 WebCore 和 WebKit。
      √     不同的设计语言与平台有不同的兼容性。
      √     不同脚本语言执行的时间也不同。
      √     嵌入其他语言的能力。脚本语言对一些操作无法实现,如读取客户端的信息,此时需要同时借助其他语言来实现。要考虑当前脚本语言对其他语言的支持程度。
      √     系统数据库可能升级,测试时需要考虑脚本语言支持数据库的完善程度。

    3.1.5 文件上传

    • 只能上传允许的附件类型;
    • 不能上传脚本或可执行文件;
    • 不能单纯以后缀名来判断文件类型;
    • 浏览好文件后,可以正常处理删除目标文件时出现的异常情况;
    • 上传超大文件时可以正常处理,比如给出提示信息等;
    • 上传的文件应该提供接口查看;
    • 上传的文件不应该直接保存于数据库中,而是将文件保存在服务器端硬盘,而在数据库中保存该文件的基本信息;
    • 文件上传到服务器端后应该被重命名,防止文件名冲突。

    3.2 性能测试

    3.2.1 链接速度测试

    链接的响应时间不能太长,一般不超过 5 秒。

    3.2.2 负载测试(Load Testing)

    测试系统能够承受的最大负载(如最大用户量、最大业务量、最大数据量等)以及性能表现。

    3.2.3 压力测试(Stress Testing)

    测试系统在一定压力下的性能表现,通常业务的错误率不能超过 5%。

    3.3 界面测试

    GUI(Graphical User Interface)即图形用户界面。

    3.3.1 格式验证

    验证 Web 页面中一些空间默认的标准定义,如默认值、项目按顺序排列等。

    3.3.2 导航条测试

    • 各页面导航条是否能正确地显示;
    • 各页面下导航条显示的内容是否正确;
    • 不同状态下(如登录与未登录),导航条显示的内容是否正确;
    • 导航条的每项内容链接是否正确。

    3.3.3 拼写和语法测试

    验证页面内容、菜单和链接、图片、表格内容的拼写和语法。

    3.3.4 页面排版测试

    • 页面标题验证;
    • 页面元素(文字、窗体、菜单、链接、公司商标等)排版验证;
    • 页面图形验证;
    • 页面版本信息验证;
    • 不同分辨率下的页面显示情况验证;
    • 页面长度验证。

    3.3.5 Tab 键测试

    Tab 顺序正确跳转。

    3.4 安全性测试

    3.4.1 基本安全测试

    • 各种登录模式的安全性验证、对口令各种要求的测试。
    • 用户权限(如功能限制、数据访问限制等)的验证。
    • Cookie 和 Session 的有效期验证等特殊机制的验证。
    • 敏感数据加密、数据存储安全性的验证。
    • 验证系统的日志文件是否得到保护。
    • 测试软件不会因在异常条件下错误操作而导致不安全状态。
    • 其他各种安全漏洞的检查,如 WSDigger 扫描。
      √     跨站点攻击 XSS
             ✰     get 方式在 URL 后输入如 name=,若弹出警告或者查看源文件中存在输入的字符串则存在漏洞。
      √     SQL 注入
             ✰     sql=‘select yhm,mm from users where username=’ +yhmTextField.getText( ) +’ and password=’ +mmTextField.getText( )’
             ✰     如用户名中输入 admin’ --后,不输入密码也可以登录。

    3.4.2 认证测试

    • 登录页面是否存在验证码,不存在说明存在漏洞。

    • 验证码和用户名、密码是否一次性、同时提交给服务器验证,如果分开提交,则存在漏洞。

    • 在服务器端,只有在验证码检验通过后才进行用户名和密码的检验,否则存在漏洞。

    • 验证码是否为图片形式且在一张图片中,不为图片形式或不在一张图片中,说明存在漏洞。

    • 请求 10 次观察验证码是否随机生成,如果存在一定的规律(例如 5 次后出现同一验证码)说明存在漏洞。

    • 观察验证码图片中背景是否存在无规律的点或线条,如果背景为纯色(例如只有白色)说明存在漏洞。

    • 验证码在认证一次后是否立即失效。

    • 服务器不能对认证错误提示准确的信息,如用户名错误、密码错误等。

    • 提供合理的锁定策略。

    • 预防认证被绕过,如 sql 注入。

    3.4.3 会话管理测试

    • 用户登录后,身份信息不再由客户端提交,而是以服务器端会话信息中保存的身份信息为准。
    • URL 中不能携带 Session ID 信息。
    • 登录后的页面有明确的"退出"或"注销"按钮,注销时会话信息要清除。

    3.4.4 权限管理测试

    • 横向越权:攻击者尝试访问与他拥有相同权限的用户的资源。
    • 纵向越权:一个低级别攻击者尝试访问高级别用户的资源。

    3.4.5 文件和目录测试

    • 不存在不需要对外开放的敏感接口或者接口进行了完善的权限控制;
    • 禁止获取敏感的目录或文件信息;
    • 所有对目录的访问均不能打印出文件列表;
    • 禁止访问和下载文档的备份;
    • 不能越权获取到不该获取的文件。
      √     如 DirBuster 扫描。

    3.5 数据库测试

    • 数据库测试是为了发现错误和缺陷而运行数据库的过程。
    • 数据库测试方法也分为白盒测试和黑盒测试。
    • 数据库黑盒测试
      √     数据库表结构是否合理;
      √     数据结构(如数据类型、长度)是否正确定义,并且需要注意数据结构与输入界面中数据的类型和长度是否一致,如果不一致,数据库则会报错;
      √     表与表之间的关系是否正确,主外键是否合理;
      √     索引的创建是否合理;
      √     存储过程功能是否完整,能否正确接受输入、输出正确结果;
      √     能否正确插入(增加)、更新、删除数据;
      √     数据库操作权限定义是否正确;
      √     能否正确处理并发操作;
      √     表级、列级完整性约束条件是否满足;
      √     数据库的处理能力、可靠性、可维护性、性能是否满足要求。
    展开全文
  • web测试的基本测试点

    千次阅读 多人点赞 2020-07-15 16:37:33
    一、什么是Web测试 如果要了解web测试,首先我们的清楚web项目是什么,一般指本b/s架构项目也就是通过浏览器进行访问的,在日常生活工作中,基于web系统的应用非常多。 打开电脑,抢火车票我们会登陆12306网站,...

    一、什么是Web测试

    如果要了解web测试,首先我们的清楚web项目是什么,一般指本b/s架构项目也就是通过浏览器进行访问的,在日常生活工作中,基于web系统的应用非常多。
     打开电脑,抢火车票我们会登陆12306网站,添置衣物我们会登陆天猫,购置电器我们会上京东... 对于这类项目的测试我们就说进行的web测试。

    二、Web测试的特点

    从系统架构来看的话,一般都是b/s架构,基于浏览器的项目,所以只要更新了服务器端,客户端就会同步更新。
    基于这种架构,web测试除了需要检查和验证功能、界面是否按照设计的要求之外,还要考虑兼容,因为是基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统的方向的兼容,不过一般还是以浏览器为主,除此之外,还要从最终用户的角度进行安全性和可用性测试,可用性测试包括接口测试性能测试。
    因此对于测试人员来说,确认和验收是一项富有挑战性的工作,我们必须充分掌握web测试的方法和技术,下面会从这6个部分来对web测试方法和技术进行详细分析。

    三、Web 功能测试

    1、链接测试
           链接是web应用系统的一个主要特征,他是在页面之间切换和指导用户去一些不知道地址的页面主要手段。链接测试可分为三个方面:
           1)测试所有链接是否按指示链接到了该链接的页面
           2)测试所链接的页面是否存在
           3)保证web应用上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问
    2、表单测试
          当用户通过表单提交信息的时候,都希望表单能正常工作,若使用表单来进行在线注册,要确保提交按钮正常,注册完成后应返回注册成功的消息。
          1)当用户使用表单进行用户注册、登陆、信息提交等操作时,我们必须测试提交内容的完整性,以校验提交给服务器的信息的正确性。
             例如:用户填写的手机号码和昵称是否满足需求中长度及类型组成要求
          2)如果表单使用了默认值,需要验证默认值得正确性
          3)如果表单只能接受指定的某些值,则也要进行测试
              例如:性别选择只能男、女,测试时可以跳过这些特定值,看系统是否会报错。
    3.数据校对
           如果系统根据业务规则需要对用户输入进行校验,需要保证这些校验功能正常工作。
           例如省份的字段可以用一个有效列表进行校验,在这种情况下,需要验证列表完整而且程序正确调用了该列表(例如在列表中添加一个测试值,确定系统能够接受这个测试值)。
           在测试表单时,该项测试和表单测试可能会有一些重复。
           Cookies通常用来存储用户信息和用户在某应用系统的操作,当一个用户使用Cokies访问了某一个应用系统时,Web服务器将发送关于用户的信息,把该信息以Cookies的形式存储在客户端计算机上,这可用来创建动态和自定义页面或者存储登陆等信息。

         如果 Web应用系统使用了Cookies,就必须检查Cookies是否能正常工作。测试的内容可包括:
         1)Cookeis是否起作用,是否按预定的时间进行保存,刷新对Cookies有什么影响等。
         2)如果在cookies 中保存了注册信息,请确认该cookie 能够正常工作而且已对这些信息已经加密。
         3)如果使用 cookie来统计次数,需要验证次数累计正确。
    4.数据库测试
           在Web应用技术中,数据库起着重要的作用,数据库为Web应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空间。
           在Web应用中,最常用的数据库类型是关系型数据库,可以使用SQL对信息进行处理。
           在使用了数据库的Web应用系统中,一般情况下,从以下两方面进行测试:
           1)对数据一 致性进行测试, 主要是用户 提交的表单信息存储到数据库后 各字段值是否一致。
           2)对输出进行测试,主要是验证从数据库查询后显示在界面的数据信息是否正确。例如12306网站的余票信息。
    5.流程测试
            最重要的是,测试人员需要对应用程序用户常见使用场景进行测试。
            尝试用户可能进行的所有操作:新增、修改、删除、查询等等。
            例如购物网站测试,需要进行注册用户(新增)、浏览商品(查询)、加入购物车下订单(新增)、删除订单(删除)、在线支付等等。

    四、Web界面测试

    界面测试可以直接参考原型图和切图设计进行界面核对。有几个常见的部分如下:
    1.导航测试
           导航描述了用户在一个页面内操作的方式,在不同的用户接口控制之间。
           例如:按钮、对话框、列表和窗口等;或在不同的连接页面之间。
           通过考虑下列问题,可以决定一个Web应用系统是否易于导航:导航是否直观?Web系统的主要部分是否可通过主页存取?Web系统是否需要站点地图、搜索引擎或其他的导航帮助?
           导航的另一个重要方面是Web应用系统的页面结构、导航、菜单、连接的风格是诸存储登否一致。确保用户凭直觉就知道Web应用系统里面是否还有内容,内容在什么地方。
    2.图形测试
           在Web应用系统中,适当的图片和动画既能起到广告宣传的作用,又能起到美化页面的功能。
           一个Web应用系统的图形可以包括图片、动画、边框、颜色、字体、背景、按钮等。
           图形测试的内容有:
            1)要确保图形有明确的用途,图片或动画不要胡乱地堆在一起,以免浪费传输时间。
                Web应用系统的图片尺寸要尽量地小,并且要能清楚地说明某件事情,一般都链接到某个具体的页面。
           2)验证所有页面字体的风格是否一致。
           3)背景颜色应该与字体颜色和前景颜色相搭配。
           4)图片的大小和质量也是一个很重要的因素,一般采用JPG或GIF压缩,最好能使图片的大小减小到30k以下。
           5)需要验证的是文字回绕是否正确。如果说明文字指向右边的图片,应该确保该段图片出现在右边。不要因为使用图片而使窗口和段落排列古怪或者出现孤行。
    3.表格测试
           1)需要验证表格是否设置正确。
           2)用户是否需要向右滚动页面才能看见产品的价格?细节放在右边是否更有效?
           3)每一栏的宽度是否是够宽, 表格里的文字是否都有折行?是否有因为某一格的内容太多,而将整行的内容拉长?
    4.整体界面测试
          整体界面是指整个Web应用系统的页面结构设计,是给用户的一个整体感。
          例如:当用户浏览Web应用系统时是否感到舒适,是否凭直觉就知道我要找的信息在什么地方?整个Web应用系统的设计风格是否一致?

    五、Web性能测试

    性能测试在该章节不做深入分析,只做大致整理。
    1.连接速度测试   
           用户连接到Web应用系统的速度根据上网方式的变化而变化,他们或许是电话拨号,或是宽带上网。
           当下载一个程序时,用户可以等较长的时间,但如果仅仅访问一个页面,若响应时间太长(例如超过5秒钟),用户就会因没有耐心等待而离开。
           另外,有些页面有超时的限制,如果响应速度太慢,用户可能还没来得及浏览内容,就需要重新登陆了。而且,连接速度太慢,还可能引起数据丢失,使用户得不到真实的页面。
           对于响应时间,业间遵循2-5-8原则。
    2.负载压力测试
           在这里的负载\压力和功能测试中的不同,他是系统测试的内容。
           基本功能已经通过后进行的,可以在集成测试阶段,亦可以在系统测试阶段进行。
           通过该项测试用以检测死机、崩损、内存泄漏问题等。因为有些存在内存泄漏问题的程序,在运行一两次时可能不会出现问题,但是如果运行了成千上万次,内存泄漏得越来越多,就会导致系统崩滑。
          使用负载测试工具loadrunner、Jmeter 等,虚拟一定数量的用户看一看系统的表现,是否满足定义中的指标。主要的测试场最如下:
          1)验证系统能否在同一时间响应大量的用户。
          2)在用户传送大量数据的时候系统能否正常响应。
          3) 正并负载情况下,系统能否长时间运行。
            可访问性对用户来说是极其重要的。如果用户得到“系统忙”的信息,他们可能放弃:并转向竞争对手。
           系统检测不仅要使用户能够正常访问站点,在很多情况下,可能会有黑客试图通过发送大量数据包来攻击服务器。
           出于安全的原因,测试人员应法知道当系统过载时,需要采取哪些措施,而不是简单地提升系统性能。

    六、Web 兼容性测试

    兼容性,因为是基于效览器的,所以一般还是以常用浏览器兼容性测试为主。
    1.平台测试
           市场上有很多不同的操作系统类型,最常见的有Windows、Unix、Macintosh、Linux等。
          Web应用系统的最终用户究竞使用哪一种操作系统,取决于用户系统的配置。这样,就可能会发生兼容性问题,同一个应用可能在某些操作系统下能正常运行,但在另外的操作系统下可能会运行失败。
         因此,在Web系统发布之前,需要在各种操作系统下对Web系统进行兼容性测试。
    2.浏览器测试
          浏览器的兼容一般是选择不同的浏览器内核进行测试(IE、 chrome、Firefox)再结合用户市场使用量高的浏览器来综合选择。
          不同浏览器使用内核及所支持的HTML (标准通用标记语言下的一个应用)等网页语言标准不同;以及用户客户端的环境不同(如分辨率不同)造成的显示效果不能达到理想效果。
           最常见的问题就是网页元素位置混乱、错位。主要测式内容如下:
           1)页面的格式,字体,输入框,下拉框,复选框, 按钮等的检查;
           2)页面显示穿插在功能进行中检查。
    3. 分辨率测试
           页面版式在640x400、600x800或1024x768 的分辨率模式下是否显示正常?字体是否太小以至于无法洳览?或者是太大?文本和图片是否对齐?

    七、Web的安全测试

    主要是测试系统在没有授权的情况下,内部或者外部用户对系统进行攻击或者恶意破坏时如何进行处理,是否仍能保证数据的安全。
           测试员可以学习一些黑客技术,来对系统进行攻击。这里不做深入分析,只做大致整理。
    1.目录设置   
          Web安全的第一步就是正确设置目录。 每个目录下应该有index.html 或main.html页面,这样就不会显示该目录下的所有内容。
          有些公司没有执行这条规则。大家可以尝试选中一幅图片,单击鼠标右键,找到该图片所在的路径“....com/objects/images”。然后在浏览器地址栏中手工输入该路径,会不会发现该站点的其他信息。例如保存过期页面记录信息。
         很多站点使用SSL进行安全传送。你知道你进入一个SSL站点是因为浏览器出现了警告消息,而且在地址栏中的HTTP变成HTTPS。
         如果开发部门使用了SSL,测试人员需要确定是否有相应的替代页面(适用于3.0以下版本的浏览器,这些浏览器不支持SSL)。
         当用户进入或离开安全站点的时候,请确认有相应的提示信息。是否有连接时间限制?超过限制时间后出现什么情况?
    2.登录   
            有些站点需要用户进行登录,以验证他们的身份。这样对用户是方便的,他们不需要每次都输入个人资料。
            你需要验证系统阻止非法的用户名/口令登录,而能够通过有效登录。
            1)用户登录是否有次数限制?
            2)是否限制从某些IP 地址登录?
            3)如果允许登录失败的次数为3,在第三次登录的时候输入正确的用户名和口令, 能通过验证吗?
            4)口令选择有规则限制吗?
            5)是否可以不登陆而直接浏览某个页面?
            6)Web应用系统是否有超时的限制,也就是说,用户登陆后在一定时间内(例如15分钟)没有点击任何页面,是否需要重新登陆才能正常使用。
     3.日志文件
             在后台,要注意验证服务器日志工作正常。
             1)日志是否记所有的事务处理?
             2)是否记录失败、错误的页面请求?
             3)是否在每次事务完成的时候都进行保存?记录IP地址吗?记录用户名吗?
    4.脚本语言
    脚本语言是常见的安全隐患。每种语言的细节有所不同。有些脚本允许访问根目录,其他只允许访问邮件服务器。但是经验丰富的黑客可以将服务器用户名和口令发送给他们自己。找出站点使用了哪些脚本语言,并研究该语言的缺陷。还要需要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。创建了一个测试交流群,如果对软件测试、接口测试、自动化测试、面试经验交流感兴趣可以加测试交流群:829792258,还会有同行一起技术交流  

    展开全文
  • APP测试的注意点(区别web测试

    千次阅读 2019-04-25 13:54:48
    做app测试的时候,梳理了一下和web测试不同的关注点。app和web依托的设备,他们的架构方式等不一样,所以测试的时候需要关注的点也就不一样,以下是我整理的app特性测试关注点。大家多多提意见,多多补充 ...
  • Web测试与App测试的区别

    万次阅读 多人点赞 2018-10-09 14:39:21
    前几天一个测试妹纸问我,web测试与app测试到底有啥区别呢,这个问题尤其是很多初入行的测试经常会问的。 其实,不管是什么类型的测试,测试方法都是类似的,这里说到的web与app之间的测试区别,主要在于应用场景的...
  • 一文搞懂Web测试与App测试的区别

    千次阅读 多人点赞 2019-01-14 21:55:53
    一文搞懂Web测试与App测试的区别 接下来,需要完成年前最后一个项目的测试,该项目需要结合Web测试和App测试,经过整理,总结分享一些工作经验给大家。 从功能测试方面讲,Web测试与App测试在测试用例设计和测试...
  • web测试要点及基本方法

    万次阅读 多人点赞 2018-04-09 22:53:34
    一、 序言在Web工程过程中,基于Web系统的测试、确认和验收是一项重要而富有挑战性的工作。基于Web的系统测试与传统的软件测试不同,它不但需要检查和验证是否按照设计的要求运行,而且还要测试系统在不同用户的...
  • Web测试需要注意的点

    万次阅读 多人点赞 2019-04-16 16:35:24
    测试用例是测试的核心,测试用例的设计是一种思维方式的体现,在用例的设计中,用的比较多的方法是边界值分析法和等价类划分法,下面主要从输入框,搜索功能,添加、修改功能,删除功能,注册、登录功能以及上传图片...
  • app测试和web测试的区别

    万次阅读 多人点赞 2020-11-20 10:16:42
    首先从系统架构来看的话,web测试只要更新了服务器端,客户端就会同步会更新。而且客户端是可以保证每一个用户的客户端完全一致的。但是app端是不能够保证完全一致的,除非用户更新客户端。如果是app下修改了服务端...
  • 软件测试面试题整理(五)之web测试

    千次阅读 2020-11-04 22:41:00
    1. web测试中,如何判断是前端的bug还是后端的bug呢? 通常可以利用抓包工具来进行分析。可以从三个方面进行分析:请求接口,传参数,响应。 1.请求接口url是否正确,如果请求的接口url错误,为前端的bug 2.传参是否...
  • Web测试方法

    千次阅读 2018-09-21 11:10:28
    最近做某项目,项目要求采用B/S架构进行系统总体构建,此次测试为面向Web的测试,现整理出面向web测试设计测试用例时需要考虑的因素。 一、功能测试 首先需要将系统和需求说明书中的功能需求进行对比,查看是否有...
  • web测试面试题

    千次阅读 2020-06-16 21:03:42
    osi的七层模型? 应用层,表示层,会话层,传输层,网络层,链路层,物理层 get请求和post的区别?...web功能测试的关注点有哪些? (1)链接测试 (2)表单测试 (3)Cookie&Session测试 (4)文件上传测试 (.
  • 测试----什么是web测试

    千次阅读 2019-06-27 21:08:05
    什么是web测试 web测试就是针对于B/S架构的系统,一般指浏览器访问服务器,比如打开淘宝购买东西就是web测试web测试包含的内容 功能测试 1.连接测试 试所有链接是否按指示链接到了该链接的页面 测试所链接的页面...
  • Web测试关注点

    千次阅读 2017-05-09 14:51:47
    Web测试关注点输入框1、字符型输入框: 字符型输入框:英文全角、英文半角、数字、空或者空格、特殊字符“~!@#¥%……&*?[]{}”特别要注意单引号和&符号。禁止直接输入特殊字符时,使用“粘贴、拷贝”功能尝试输入...
  • web测试流程,确保后台接口已测试完毕 一、需求分析,了解具体需求 二、测试准备:原型图、效果图、需求文件、测试用用例、用例评审、各种测试数据准备 三、测试环节:接受版本开始执行 1)冒烟测试:对版本质量的...
  • web测试的基本流程

    万次阅读 多人点赞 2018-05-01 13:21:33
    今天主要讲讲web测试的基本流程,同时也算是为大家慢慢普及这方面的知识和内容。1、web测试流程:(1)web测试 1)参与一个web新项目的测试前,先搜集测试相关的资料,包括原型图、各种需求文档、业务相关等需求...
  • web测试之功能测试总结

    万次阅读 多人点赞 2018-01-16 19:41:29
    经常碰到有人问我: 一个界面很多搜索条件怎么写用例? 这个下拉框测试考虑这些够吗?我怕覆盖不完整?...所以今天主要是给大家整理下功能...web测试就是基于BS架构的软件产品的测试,通俗点来说就是web网站的测试
  • Web测试常用测试点

    千次阅读 2018-06-26 16:41:55
    1.兼容性测试:浏览器(PC端)(注意浏览器的兼容模式和疾速模式):IE浏览器,Chrome,Firefox,360安全浏览器,360疾速浏览器,搜狗浏览器,QQ浏览器,百度浏览器,猎豹浏览器浏览器(移动端):是否兼容移动端...
  • web测试和手机测试的区别

    千次阅读 多人点赞 2018-09-06 15:47:16
    WEB测试和移动端测试其测试类型也基本相似,都需要进行功能测试、性能测试、安全性测试、GUI测试等测试类型。 他们的主要区别在于具体测试的细节和方法。 web项目,一般都是b/s架构,基于浏览器的,而app则是c/s的...
  • 系统测试报告(web测试)模板

    热门讨论 2010-07-15 11:00:58
    包括系统功能及性能测试的系统测试报告模板,内容比较完整,仅供参考,希望能够帮到大家。
  • APP测试/web测试/H5测试的区别

    千次阅读 2020-06-09 15:38:09
    随着手机应用的不断状态,同一款产品的移动端应用市场占相较PC端也越来越大,那么app与PC端针对这些产品的测试有什么相同与不同之处呢?笔者总结如下: 首先谈一谈相同之处。。。 一,针对同一个系统功能的测试,三...
  • Web测试和APP测试有什么区别?

    千次阅读 2018-11-03 19:43:59
    不管是传统行业的web测试,还是app测试,都离不开测试的基础知识,即是不管怎么变,测试的原理依然会融入在这两者当中。  1、Web测试和APP测试相同点   1)设计测试用例时,依然都是依据边界值分析法、等价类...
  • web测试点和app测试点

    千次阅读 多人点赞 2018-06-04 10:30:12
    web测试点:一、输入框1、字符型输入框:(1)字符型输入框:英文全角、英文半角、数字、空或者空格、特殊字“~!@#¥%……&amp;*?[]{}”特别要注意单引号和&amp;符号。禁止直接输入特殊字符时,使用“粘贴...
  • web测试之界面测试

    千次阅读 2018-01-16 19:39:04
    所谓界面测试就是指,布局是否合理、整体风格是否一致、各个控件的放置位置是否符合客户使用习惯,此外还要测试界面操作便捷性、导航简单易懂性,页面元素的可用性,界面中文字是否正确,命名是否统一,页面是否美观...
  • 内容展示https://blog.csdn.net/weixin_43468923/article/details/112177100,选择性下载,仅供学习交流参考,请勿用作商务用途。无需积分下载,若系统自动更改为需要积分下载,请在文章评论留言提醒(是文章界面,...
  • APP测试和web测试的区别

    万次阅读 多人点赞 2018-01-13 23:54:40
    单纯从功能测试的层面上来讲的话,APP 测试、web ...web测试只要更新了服务器端,客户端就会同步会更新。App项目则需要客户端和服务器都更新。性能方面: web页面主要会关注响应时间 而app则还需要关心流量、电量、CPU
  • 软件测试——web测试

    千次阅读 2019-02-23 14:42:45
    1、什么是web测试 一般是指B/S架构的项目,通过浏览器进行访问,如:天猫、淘宝、当当网等 2、web测试点 web功能测试:链接测试、表单测试、数据测试、cookies测试、数据库测试、流程测试 web界面测试:图形测试...
  • 项目介绍:B/S架构的web项目 WEB项目测试备战 ...前期准备-需求评审-设计评审-测试计划-测试架构-测试用例-环境搭建-功能测试-性能测试-安全测试-兼容测试-...1.系统的掌握web测试方法、技能和思维 2.掌握测试...
  • web测试和app测试有什么区别

    千次阅读 2019-07-08 20:17:10
    1.WEB测试和App测试从流程上来说,没有区别,都需要经历测试计划方案,用例设计、测试执行、缺陷管理、测试报告等相关活动。 2.从技术上来说,WEB测试和APP测试其测试类型也基本相似,都需要进行功能测试、性能测试...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,302,462
精华内容 520,984
关键字:

web测试