‘壹’ Web测试的经验
1.功能测试
1.1.链接衫掘携测试
链接是Web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些不知道地址的页面的主要手段。链接测试可分为三个方面。首先,测试所有链接是否按指示的那样确实链接到了该链接的页面;其次,测试所链接的页面是否存在;最后,保证Web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问。
链接测试可以自动进行,现在已经有许多工具可以采用。链接测试必须在集成测试阶段完成,也就是说,在整个Web应用系统的所有页面开发完成之后进行链接测试。
1.2.表单测试
当用户给Web应用系统管理员提交信息时,就需要使用表单操作,例如用户注册、登陆、信息提交等。在这种情况下,我们必须测试提交操作的完整性,以校验提交给服务器的信息的正确性。例如:用户填写的出生日期与职业是否恰当,填写的所属省份与所在城市是否匹配等。如果使用了默认值,还要检验默认值的正确性。如果表单只能接受指定的某些值,则也要进行测试。例如:只能接受某些字符,测试时可以跳过这些字符,看系统是否会报错。
1.3.Cookies测试
Cookies通常用来存储用户信息和用户在某应用系统的操作,当一个用户使用Cookies访问了某一个应用系统时,Web服务器将发送关于用户的信息,把该信息以Cookies的形式存储在客户端计算机上,这可用来创建动态和自定义页面或者存储登陆等信息。
如果Web应用系统使用了Cookies,就必须检查Cookies是否能正常工作。测试的内容可包括Cookies是否起作用,是否按预定的时间进行保存,刷新对Cookies有什么影响等。
1.4.设计语言测试
Web设计语言版本的差异可以引起客户端或服务器端严重的问题,例如使用哪种版本的HTML等。当在分布式环境中开发时,开发人员都不在一起,这个问题就显得尤为重要。除了HTML的版本问题外,不同的脚本或伏语言,例如Ja、JaScript、ActiveX、VBScript或Perl等也要进行验证。
1.5.数据库测试
在Web应用技术中,数据库起着重要的作用,数据库为Web应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空间。在Web应用中,最常用的数据库类型是关系型数据库,可以使用SQL对信息进行处理。
在使用了数据库的Web应用系统中,一般情况下,可能发生两散嫌种错误,分别是数据一致性错误和输出错误。南邵北大青鸟认为数据一致性错误主要是由于用户提交的表单信息不正确而造成的,而输出错误主要是由于网络速度或程序设计问题等引起的,针对这两种情况,可分别进行测试。
‘贰’ eclipse开发的jsp网站怎么放在tomcat下独立运行
要使jsp在tomcat下独立运行,需要安装合适的jdk和tomcat,下面主要介绍配置tomcat。
首先正确的安装tomcat,到这里下载http://tomcat.apache.org/whichversion.html下载,安装。完成后的目录里碧饥面conf、common、webapps三个主要目录;从上面的图可以看到,这个默认画面来戚衡自$CATALINA_HOME/webapps/ROOT/index.html。
目录说明,webapps:主要用于web应用程序部署,就是你的应用程序放在这里;conf:主要是放置tomcat的服务器的相关配置文件;common:主要是对容器全局变量的文件放置地方,如common/lib下就是放置一些需要全文配置的文件包。
新建目录:webapp/myapp,把应用放在这里,新建配置文件webapp/myapp/WEB-IN/web.xml,web.xml<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPEweb-appPUBLIC "-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd"><web-app><display-name>My Web Application<悔仔返/display-name> <!-- 显示内容标题名 --><description>A application for test</description> <!-- 描述名 --></web-app>。新建测试文件:webapp/myapp/WEB-IN/index.jsp<html><body><center>Now time is: <%=new java.util.Date()%></center></body></html>
应用部署好以后,重新启动tomcat。
测试,在浏览器url:localhost:8080/myapp/index.jsp。
上面只是简单测试,用eclipse 开发的web项目,有比较全的项目配置。
这个是一个web项目的例子。
‘叁’ 常见36种WEB渗透测试漏洞描述及解决方法-文件上传
漏洞描述:文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严或webserver相关解析漏洞未修复而造成的,如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,攻击者可通过 Web 访问的目录上传任意文件,包括网站后门文件,进而远程控制网站服务器。
解决方法:
在前后端对上传文件类型限制,如后端的扩展名检测,重命名文件,MIME类型检测以及限制上传文件的大小,或将上传文件放在安全路径下;严格限制和校验上传的文件,禁止上传恶意代码的文件。同时限制相关目录的执行权限,防范webshell攻击;对上传文件格式进行严格校验及安全扫描,防止上传恶意脚本文件;设置权限限制,禁止上传目录的执行权限;严格限制可上传的文件类型;严格限制上传的文件路径;文件扩展名服务端白名单校验;文件内容服务端校验;上传文件重命名,并隐藏上传文件路径。
‘肆’ web性能测试工具-lighthouse&&perfomance&&pagespeed
先访问需要评估的网站,比如 http://www..com,然后 generate report 即可。lighthouse 会运行一系列的测试审查这个页面,然后它会把关于页面执行的一些性能指标以报告的形式展示给你。你可以参考这份报告中的一些指标提示来提升你的网站应用。Lighthouse 能够生成一份 JSON 或 HTML 报告,比如下图:
Lighthouse 运行测评的过程有一套完整的生命周期,可以划分成三个主要流程:
Collecting(收集数据): 首先是 Collecting 流程,这一步会调用内置的驱动程序(Driver) ,其作用是通过谷歌开发工具协议( Chrome DevTools Protocol) 调起浏览器,并创建新的 tab 请求待测评的站点,通过浏览器采集站点数据并将结果(称之为 Artifacts)保存在本地临时目录。
Auditing(分析数据): 然后进入 Auditing 流程,读取 Artifacts 数据,根据内置的评判策略逐条进行检查并计算出各项的数字形式得分。
Report(生成报告): 最后进行 Report 流程,将评分结果按照 PWA、性能、无障碍访问、最佳实践等纬度进行划分,以 JSON、HTML 等格式输出。
如下图:
使用 Lighthouse 对网站进行测评后,我们会得到一份评分报告,它包含了性能(Performance),访问无障碍(Accessibility),最佳实践(Best Practice),搜索引擎优化(SEO),PWA(Progressive Web App)五个部分:
性能评分的分值区间是0到100,如果出现0分,通常是在运行 Lighthouse 时发生了错误,满分100分代表了网站已经达到了98分位值的数据,而50分则是75分位值的数据。
影响评分的性能指标:性能测试结果会分成 Metrics,Diagnostic,Opportunities 三部分,但只有 Metrics 部分的指标项会对分数产生直接影响。
Lighthouse 会衡量以下 Metrics 性能指标项:
首次内容绘制(First Contentful Paint)。即浏览器首次将任意内容(如文字、图像、canvas 等)绘制到屏幕上的时间点。
首次有效绘制(First Meaningful Paint)。衡量了用户感知页面的主要内容(primary content)可见的时间。对于不同的站点,首要内容是不同的,例如:对于博客文章,标题及首屏文字是首要内容,而对于购物网站来说,图片也会变得很重要。
首次 CPU 空闲(First CPU Idle)。即页面首次能够对输入做出反应的时间点,其出现时机往往在首次有效绘制完成之后。该指标目前仍处于实验阶段。
可交互时间(Time to Interactive)。指的是所有的页面内容都已经成功加载,且能够快速地对用户的操作做出反应的时间点。该指标目前仍处于实验阶段。
速度指标(Speed Index)。衡量了首屏可见内容绘制在屏幕上的速度。在首次加载页面的过程中尽量展现更多的内容,往往能给用户带来更好的体验,所以速度指标的值约小越好。
输入延迟估值(Estimated Input Latency)。这个指标衡量了页面对用户输入行为的反应速度,其基准值应低于 50ms。
Metrics 部分的指标项会直接影响分数,可以作为我们的主要参考点。
另外的两部分中, Opportunities 指的是优化机会,它提供了详细的建议和文档,来解释低分的原因,帮助我们具体进行实现和改进。 Diagnostics 指的是现在存在的问题,为进一步改善性能的实验和调整给出了指导。这两者不会纳入分数的计算。
每一项性能指标对评分的贡献都有其计算逻辑,Lighthouse 会将原始的性能值映射成为 0-100 之间的数字。
例如,FMP(First Meaningful Paint)的原始值是从页面初始化开始到主要内容渲染成功的耗时,根据真实站点的数据,顶级性能的站点的 FMP 值约为 1220ms,这个值会被映射成 Lighthouse 的 99 分。
针对不同的评分,Lighthouse 用了不同的颜色进行标注,分值区间和颜色的对应关系如下:
0 - 49(慢):红色
50 - 89(平均值): 橙色
90 - 100(快): 绿色
各个指标对性能评分的贡献并不相同,权重较大的指标,对性能评分的影响更大一些。各指标权重分配情况可参考: https://docs.google.com/spreadsheets/d//edit#gid=0
访问无障碍评分的分值由相关指标的加权平均值计算而来。可以在 评分详情 查阅每项指标的具体权重。同理,较大权重的指标项对分数的影响较大。
无障碍性的每个指标项测试结果为pass或者fail,与性能指标项的计算方式不同,当页面只是部分通过某项指标时,页面的这项指标将不会得分。例如,如果页面中的一些元素有屏幕阅读器友好的命名,而其他的元素没有,那么这个页面的 screenreader-friendly-names 指标项得分为0。
最佳实践评分的分数区间为0-100。影响这项评分的指标项的权重都是相同的。
比如:推荐使用 https,跨域的跳转链接需要使用 rel 标识,不能使用废弃的 API等等。
比如:图片元素使用 alt 属性等等提高搜索引擎搜索排名,便于搜索引擎能找到你这个网站。
Lighthouse 使用 PWA 基准检查项列表(Baseline PWA Checklist)进行测评,测评结果将这些指标项分成了四个类别,共包含12个自动测试项和3个手动测试项,其中各个自动测试项的评分权重是相同的。PWA 的评测指标对我们来说非常重要,我们可以从这四个类别详细了解一下基准指标项。
快速可靠:
页面在移动网络条件下能够快速加载。
在离线条件下页面能够返回状态码200。这里我们可以通过 Service Worker 来实现离线可用。
start_url 在离线条件下返回状态码200。start_url 是前面章节我们提到过的 manifest.json 中的一个属性,它指定了用户打开该 PWA 时加载的 URL。
可安装:
始终使用 HTTPS。
注册 Service Worker 来缓存页面以及 start_url。
使用 manifest 文件来实现安装 PWA 的需求,浏览器能够主动通知用户将应用添加到桌面,增加留存率。
PWA 优化:
将 HTTP 流量重定向到 HTTPS。
配置自定义启动画面。
设置地址栏主题颜色。
页面内容针对视口大小自适应,对移动用户的展示更友好。
使用了
当 JavaScript 文件不可用时,提供降级措施,页面能显示基本内容而不出现白屏。
手动测试项:
站点跨浏览器可用,如主流浏览器 Chrome, Edge, Firefox 及 Safari 等。
页面间切换流畅,即使在较差的网络环境下,切换动画也应该简洁顺畅,这是提高用户感知体验的关键。
保证每个页面都有独一无二的 URL,能够在新的浏览器窗口打开,且方便在社交媒体上进行分享。
安装成功后,浏览器右上角显示:
F12后,点击pagespeed->start analyzing
参考:https://www.cnblogs.com/xiaohuochai/p/9182710.html
‘伍’ WEB标准的标准测试
页面校验地址 http://validator.w3.org/
CSS文档校验 http://jigsaw.w3.org/css-validator/
XHTML 1.0 标准规格 : The Extensible HyperText Markup Language
W3C标准测试网址 http://validator.w3.org/
测试时一定要有文件类别宣告还有指定文件编码
<meta http-equiv=Content-Type content=text/html; charset=gb2312 />
才能顺利进行测试动作,开始打造一个标准的网站! 1.XHTML 1.0文件类别宣告的正确写法 (不可小写)
过度标准(外语全称:Transitional)
公共标识符 称为:“-//W3C//DTD XHTML 1.0 Transitional//EN”。
<!DOCTYPE html
PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN
>
框架标准(外语全称:Frameset)
公共标识符 称为:“-//W3C//DTD XHTML 1.0 Frameset//EN”。
<!DOCTYPE html
PUBLIC -//W3C//DTD XHTML 1.0 Frameset//EN
>
严格标准(外语全称:Strict) 包含以上须注意的问题,还有其他更严格的标准
公共标识符 称为:“-//W3C//DTD XHTML 1.0 Strict//EN”。
<!DOCTYPE html
PUBLIC -//W3C//DTD XHTML 1.0 Strict//EN
>
2.头文件问题
所有的网页头文件都一律都改为标准形式,写法如下: <head><metahttp-equiv=content-typecontent=text/html;charset=gb2312/><metahttp-equiv=content-languagecontent=zh-cn/><metaname=keywordscontent=.../><metaname=descriptioncontent=.../><title>...</title></head>3.不允许使用target=_blank
在HTML4.01可以使用target=_blank,但XHTML1.0是不被允许的.
我使用了一个HTML4.0的新属性:rel,这个属性用来说明链接和包含此链接页面的关系,以及链接打开的目标。
原来这样写的代码: 打开一个新窗口
现在要写成这样:打开一个新窗口
这是符合strict标准的方法。当然还必须配合一个javascript才有效。
javascript完整的代码JS如下: function外部链接()//万国码unicodejavascript{if(!document.getElementsByTagName)return;varanchors=document.getElementsByTagName(a);for(vari=0;i<anchors.length;i++){varanchor=anchors;if(anchor.getAttribute(href)&&anchor.getAttribute(rel)==external)anchor.target=_blank;}}window.onload=外部链接;你可以把它保存成一个.js文件(比如外部链接.js),然后通过外部联接方法调用:
<script type=text/javascript src=外部链接.js></script>
4.XHTML 1.0要求所有的标签必须关闭
所有没有成对的空标签必须以 />结尾
和这就是成对
错误
<hr>
正确
<hr />
错误 <input type=text name=name>
正确 <input type=text name=name />
错误 <meta ...>
正确 <meta ... />
错误 <link rel=stylesheet type=text/css href=style.css>
正确 <link rel=stylesheet type=text/css href=style.css />
错误 <img src=bg.gif border=0 alt=说明文字>
正确 <img src=bg.gif border=0 alt=说明文字 />
5.所有标签元素名称都使用小写
错误 <HTML> <TITLE> <HEAD> <BODY>
正确 <html> <title> <head> <body>
错误 <IMG SRC=BG.GIF BORDER=0 ALT=说明文字>
正确 <img src=bg.gif border=0 alt=说明文字 />
错误 <UL><LI></LI></UL>
正确 <ul><li></li></ul>
以上只是举例,是所有标签元素名称都必须是小写
6.同一个id选择器不可重复使用
一个网页中id=xx同一个选择器不能重复使用,若需要重复请用class=xx
7.标签必须是一对
[font][/font]
8.正确的标签顺序
错误文字
正确文字
9.JavaScript写法
Javascript我们通常会写为
错误 <script language=javascript>
W3C标准必须为程式指定类型type=text/javascript,所以要写为
正确 <script type=text/javascript>
或者 <script language=javascript type=text/javascript>
载入外部.js独立档案的写法
正确 <script type=text/javascript src=script.js></script>
10.绝对不可省略双引号或单引号
错误 style=font-size:9pt
正确 style=font-size:9pt
错误 <img src=bg.gif width=140 height=30 alt=text />
正确 <img src=bg.gif width=140 height=30 alt=text />
错误 text
正确 text
11.图片标签加上文字说明alt=说明
错误 <img src=bg.gif height=50 border=0 />
正确 <img src=bg.gif height=50 border=0 alt=说明文字 />
12.背景音乐不允许使用 bgsound 标签
我只好用JavaScript解决这个问题。javascript完整的代码如下:
<!-- Begin
var MSIE=navigator.userAgent.indexOf(MSIE);
var NETS=navigator.userAgent.indexOf(Netscape);
var OPER=navigator.userAgent.indexOf(Opera);
if((MSIE>-1) || (OPER>-1)) {
document.write(<BGSOUND SRC=背景音乐地址 LOOP=INFINITE>);
} else {
document.write(<EMBED SRC=背景音乐地址 AUTOSTART=TRUE );
document.write(HIDDEN=true VOLUME=100 LOOP=TRUE>);
}
// end -->
你可以把它保存成一个.js文件(比如bjmusic.js),然后通过外部联接方法调用:
<script type=text/javascript src=bjmusic.js></script>
13. 标签的争议
<embed>是Netscape的私有标签,W3C 从HTML3.2 HTML 4.01 到 XHTML 1.0 中都没有这个标签,所以使用的页面是不能通过标准测试。
W3C推荐使用 <object> 标签,用<object>插入flash影片的代码可以写为:
<object type=application/x-shockwave-flash data=index.swf width=400 height=200>
</object>
但这样的写法可能IE5/IE6 Win浏览器版本会出现问题。
标签因为广大的受到运用,不再标准范围引起很大的争议,想要解决这个问题,只能等IE浏览器对<object>有更好的支持或者W3C愿意收录标签。
14. 不允许使用框架标签<IFRAME>
这次又要用JavaScript解决问题了。javascript完整的代码如下:
function ifr(url,w,h){document.write('<iframe id=ifr name=ifr width='+w+' height='+h+' border=0 frameborder=0 scrolling=no src='+url+'></iframe>');}
把它保存成一个.js文件(比如ifr.js),然后通过外部联接方法调用:
<script type=text/javascript src=ifr.js></script>
在你需要插入框架的地方写以下代码即可:
<script type=text/javascript>ifr('需插入的网页地址','567','485');</script>
函数ifr()使用说明:ifr('这里写地址','这里写宽度','这里写长度',)
15.google广告问题
google广告的代码是不符合W3C标准的,我只好又把它转成JS调用,但GOOGLE政策里是写着不允许修改代码的,
关于这点我正在写信给GOOGLE询问中,应该很快会有答案。
我的JS文件(google.js)代码如下:
document.writeln(<script type= ext/javascript><!--);
document.writeln(google_ad_client = pub-0538745384335317;);
document.writeln(google_ad_width = 125;);
document.writeln(google_ad_height = 125;);
document.writeln(google_ad_format = 125x125_as;);
document.writeln(google_ad_type = ext_image;);
document.writeln(//2007-06-29: www.ybj86.cn);
document.writeln(google_ad_channel = 4751988107;);
document.writeln(google_color_border = 1a1a1a;);
document.writeln(google_color_bg = 1a1a1a;);
document.writeln(google_color_link = d0eb6a;);
document.writeln(google_color_text = ffffff;);
document.writeln(google_color_url = 8ad459;);
document.writeln(google_ui_features =
c:6;);
document.writeln(//-->);
document.writeln(</script>);
document.writeln(<script type= ext/javascript);
document.writeln( src=http://pagead2.googlesyndication.com/pagead/show_ads.js>);
document.writeln(</script>)
各位朋友可以按照自己的情况修改,网上也有把HTML代码转为JS代码的地方。
最后在需要挂广告的地方放入代码 <script type=text/javascript src=google.js></script>
其他需注意的地方:
16.注解文字不可包含--符号
错误 <!-- OEC--SPACE -->
正确 <!-- OECSPACE -->
17.正确使用CSS样式表
一定要放在<head></head>之间
<link rel=stylesheet type=text/css href=style.css />
<style type=text/css>
<!--
body{font-size:9pt;}
-->
</style>
错误 <style>
正确 <style type=text/css>
18.使用表格常犯的错误
我们在做表格通常会指定宽与高,例如: 内容 这样做是没有办法通过,W3C建议使用CSS来控制标签元素的高度
.table{
height:55px;
} TEXT 但是若使用太多表格,在CSS一一指定不同高,也不是好方法
其实很简单将高度height属性指定在储存格就可以了通过测试 TEXT 但这不是w3c希望的标准,建议能够使用div代替不必要的table
19.非标签一部分的符号以编码表示
表单内包含以下符号也必须用编码表示
< 以 < 表示
> 以 > 表示
& 以 & 表示
程式中的连结 & 也要改用 &
错误 <a href=foo.cgi?chapter=1&ion=2>
正确 <a href=foo.cgi?chapter=1&ion=2>
20.所有属性都必须有值
XHTML1.0规定所有属性都必须有值,若没有就必须重复属性作为值
错误 <input type=radio value=v1 checked name=s1 />
正确 <input type=radio value=v1 checked=checked name=s1 />
错误 <option selected>S1</option>
正确 <option selected=selected>S1</option>
错误
正确