TA的每日心情 | 开心 2022-11-16 14:46 |
---|
签到天数: 5 天 连续签到: 1 天 [LV.2]测试排长
|
WEB客户端技术
Web客户端的主要作用之一就是用来发送HTTP请求并接收服务器响应。也就是说,只要能达成这一目的的任何工具或程序,都可作为Web的客户端来对待,而不能仅限于浏览器。比如我们可以使用CURL工具来处理HTTP请求和响应,也可以使用编程语言(只要能支持网络编程的程序设计语言均可,如JAVA, C#, C++, C, PHP等,并且不难,后续章节将具体介绍如何使用Java来处理HTTP协议)。也正因为如此,对Web系统的测试变得不再简单,我们不能单纯只是考虑在标准的网页浏览器中进行测试,还需要考虑到用户完全有可能绕开浏览器界面,而直接使用其它工具或者自己编写程序来完成请求的发送和响应的接收。这对Web系统的安全性提出了挑战,需要我们在设计系统时考虑到这些因素,因为服务器在处理请求时是不管请求的来源是否合法的,当然,它也没法管。这是网络体系结构的设计所决定的。
基于以上的分析,我们既然可以使用其它工具或者自己编写程序来处理HTTP请求和响应,那是不是就意味着我们可以开发出自己的浏览器来呢?理论上来说是这样的,因为处理HTTP请求和响应本身就是浏览器的重要工作之一。但是开发的一个浏览器的技术瓶颈并不在对协议本身的处理上,而在于对响应的解析和对Javascript脚本的解析处理,这牵涉到浏览器的另一大技术核心:渲染引擎。我们评价一个浏览器的好与坏,也主要是在对浏览器的渲染引擎进行评价。我们可以看到,每家厂商的浏览器的主要功能都差不多,但是处理速度却不一样,并且对标准的支持也不尽相同,其核心就在于渲染引擎的不一样。我们也许会经常听到浏览器厂商在做宣传时会写上“XXX浏览器搭载了最新版页面渲染引擎,速度大幅提升”之类的广告词,在原因也就在此。
网页浏览器的页面渲染引擎负责取得网页的内容(HTML、XML、图像等等)、整理排版(例如CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要页面渲染引擎。当前比较流行的页面渲染引擎有如下几种:
1、 Trident页面渲染引擎
IE浏览器所使用的内核,也是很多浏览器所使用的内核,通常被称为IE内核。基于Trident内核的浏览器非常多,这是因为Trident内核提供了丰富的调用接口。老的Trident内核(比如常说的IE6内核)一直是不遵循W3C标准的,但是由于它的市场份额最大,所以后果就是大量的网站只支持老的Trident内核,依据W3C标准写的网页在老的Trident内核下面又出现偏差。目前可供调用的最新版的Trident内核是IE9所用的内核,相较之前的版本对W3C标准的支持增强了很多。
Trident内核的浏览器:
IE6、IE7、IE8(Trident 4.0)、IE9(Trident 5.0)、IE10(Trident 6.0);
世界之窗1、世界之窗2、世界之窗3;
360安全浏览器1、360安全浏览器2、360安全浏览器3、360安全浏览器4、360安全浏览器5;
傲游1、傲游2;搜狗浏览器1;腾讯TT;阿云浏览器(早期版本)、百度浏览器(早期版本)、瑞星安全浏览器、Slim Browser;
GreenBrowser、爱帆浏览器(12 之前版本)、115浏览器、155浏览器;
闪游浏览器、N氧化碳浏览器、糖果浏览器、彩虹浏览器、瑞影浏览器、勇者无疆浏览器、114浏览器、蚂蚁浏览器、飞腾浏览器、速达浏览器、佐罗浏览器;
2、 Gecko页面渲染引擎
Netscape6启用的内核,现在主要由Mozilla基金会进行维护,是开源的浏览器内核,目前最主流的Gecko内核浏览器是Mozilla Firefox,所以也常常称之为火狐内核。因为Firefox的出现,IE的霸主地位逐步被削弱,Chrome的出现则是加速了这个进程。非Trident内核的兴起正在改变着整个互联网,最直接的就是推动了编码的标准化,也使得微软在竞争压力下不得不改进IE。不过比较可惜的是,虽然是开源的,也开发了这么多年,基于Gecko的浏览器并不多见,除了一些简单的改动(坑爹的X浏览器)或者是重新编译(绫川ayakawa、tete009),深度定制或者增强型外壳的还比较少见。另外就是有一些其它软件借用了Gecko内核,比如音乐管理软件SongBird。
常见的Gecko内核的浏览器
Mozilla Firefox、Mozilla SeaMonkey
Epiphany(早期版本)、Flock(早期版本)、K-Meleon
3、 KHTML页面渲染引擎和WebKit框架
KHTML,是HTML页面渲染引擎之一,由KDE所开发。KHTML拥有速度快捷的优点,但对错误语法的容忍度则比Mozilla产品所使用的Gecko引擎小。苹果电脑于2002年采纳了KHTML,作为开发Safari浏览器之用。 WebCore及WebKit引擎均是KHTML的衍生产品; WebKit是 Mac OS X v10.3及以上版本所包含的软件框架,WebKit是Mac OS X的Safari网页浏览器的基础。
使用KHTML页面渲染引擎的浏览器有:Safari,Konqueror, Google Chrome等。Google Chrome即将启用自己的渲染引擎Blink。
4、 Presto页面渲染引擎
Presto是一个由Opera Software开发的浏览器页面渲染引擎,应用于Opera 7.0~9.60版,它取代了旧版Opera中所使用的Elektra页面渲染引擎,包括加入动态功能,例如网页或其部分可随着DOM及Script语法的事件而重新排版。
使用Presto页面渲染引擎的浏览器有:Opera,任天堂DS浏览器。
5、 其它页面渲染引擎
使用Java软件平台的HotJava,Opera Mini,UCWEB。
使用Tasman渲染的Internet Explorer for Mac,SN for Mac OS X。
使用纯文字界面的Lynx,inks,w3m。
以上都是排版引擎,接下来说说JavaScript引擎。顾名思义,JavaScript引擎就是用来渲染JavaScript的。为什么要单独拿出来说呢?因为它涉及到跑分。经常看见很多文章在报道说哪个浏览器更快,其实大部分说的就是JavaScript的渲染速度,而不是页面的载入速度。在网速许可的情况下,其实各个浏览器的页面载入速度差别不大(Opera逊色一些)。那是不是说对比JavaScript的渲染速度其实没有意义?也不是这么说,因为现在JavaScript在页面中的比重会越来越大,越来越多的动态页面开始大量借助JavaScript,比如现在主流的SNS、邮箱、网页游戏,所以JavaScript的渲染速度也是一个很重要的指标。JavaScript的渲染速度越快,动态页面的展示也越快。Opera在JavaScript引擎的跑分上面一直都是很牛的,一般来说最新测试版之间PK,Opera基本都会夺冠。
1、 Chakra
查克拉,IE9启用的新的JavaScript引擎。
2、 SpiderMonkey/TraceMonkey/JaegerMonkey
SpiderMonkey应用在Mozilla Firefox 1.0-3.0,TraceMonkey应用在Mozilla Firefox 3.5-3.6版本,JaegerMonkey应用在Mozilla Firefox 4.0及后续的版本。
3、 V8
应用于Chrome、傲游3。
4、 Nitro
应用于Safari 4及后续的版本。
5、 Linear A/Linear B/Futhark/Carakan
Linear A应用于Opera 4.0-6.1版本,Linear B应用于Opera 7.0~9.2版本,Futhark应用于Opera 9.5-10.2版本,Carakan应用于Opera 10.5及后续的版本。
6、 KJS
KHTML对应的JavaScript引擎。
可见,Web客户端是如此的丰富繁杂,这对Web系统测试提出了很大的挑战,特别是兼容性和可用性测试,当然还包含安全性测试。我们不单要熟悉每种渲染引擎和相应浏览器的特性,还需要了解它们之间的各种差异,便于设计出适合用户使用的兼容性好,安全性高的系统。
|
|