浏览器的兼容性测试基础知识
什么是模塊解析
首先。你要明白http模塊四個類是干嘛的,http四大類:http.ClientRequest 類,http.Server 類,http.ServerResponse 類,http.IncomingMessage 類.
兩個關(guān)鍵函數(shù)
request :這是客戶端專用的創(chuàng)建http會話的工具。他的回調(diào)函數(shù)其實就是response事件的回調(diào)函數(shù)。但是這個回調(diào)函數(shù)接受的參數(shù)是incomingmessage,這個英語很形象,來電信息,那么我們就知道這是從服務(wù)器傳進來的,然后,我們就可以利用incomingmessage里面的工具,對他進行反饋。
createserver,就是服務(wù)器專用的工具函數(shù)了,他的回調(diào)函數(shù)其實是觸發(fā)了http.server類里的request事件。他的req接受的是incomingmessage,來電信息,對于服務(wù)器而言你客戶端就是來電信息。同樣服務(wù)器需要發(fā)話。它用的就是serverresponse類發(fā)送會話處理的。那么服務(wù)器一個接受信息后,用incoming來處理,發(fā)送用serresponse進行處理。
然后server類是對服務(wù)器本身進行服務(wù)拓展。clientResponse是客戶端自身處理,還有對服務(wù)器進行發(fā)送信息,進行處理。
- http.Server 類:僅僅對服務(wù)器本身能力。不對發(fā)送信息進行處理。也不對接受信息進行處理。
- http.ClientRequest類:對客戶端本身能力,也對發(fā)送信息進行處理。但不對接受的信息進行處理。(觸發(fā)close事件,也是在request內(nèi)部設(shè)定好了。)
- http.ServerResponse 類:服務(wù)器對發(fā)送信息進行處理。
- http.IncomingMessage 類.:客戶端和服務(wù)端的接受信息處理類。
所以,你可以把http的客戶端和服務(wù)端分成三部分,一部分;本身。一部分:發(fā)送會話處理。最后一部分:接受會話:處理。
舉例理解
假設(shè),我先打開服務(wù)器
1.服務(wù)器的listen方式就開始執(zhí)行了。創(chuàng)建服務(wù)器,但是不使用回調(diào)函數(shù),回調(diào)函數(shù)要等客戶端發(fā)送信息。request事件。
2.客戶端開始鏈接。他就是一個tcp包裝過的,但是他的回調(diào)函數(shù)(response),也要等服務(wù)器發(fā)送信息。先出發(fā)soket事件。然后,可以使用clientresponse中的一些函數(shù)進行傳送信息。主要兩個(write和end,write發(fā)送信息,觸發(fā)服務(wù)器data事件。end,觸發(fā)服務(wù)器的end事件。)
3.服務(wù)器的request事件,接受到了信號。對req,來自客戶端。用incoming進行加工。根據(jù)data事件和end事件。
然后發(fā)送信息,使用serverresponse。end和write相同的觸發(fā)的是客戶端的事件。要交互嗎。客戶端和服務(wù)器。
接受到信息后觸發(fā)end事件過后,那么這個會話他就結(jié)束了。
線程和進程區(qū)別
線程具有許多傳統(tǒng)進程所具有的特征,故又稱為輕型進程(Light—Weight Process)或進程元;而把傳統(tǒng)的進程稱為重型進程(Heavy—Weight Process),它相當于只有一個線程的任務(wù)。在引入了線程的操作系統(tǒng)中,通常一個進程都有若干個線程,至少包含一個線程。
根本區(qū)別:進程是操作系統(tǒng)資源分配的基本單位,而線程是處理器任務(wù)調(diào)度和執(zhí)行的基本單位
-
資源開銷:每個進程都有獨立的代碼和數(shù)據(jù)空間(程序上下文),程序之間的切換會有較大的開銷;線程可以看做輕量級的進程,同一類線程共享代碼和數(shù)據(jù)空間,每個線程都有自己獨立的運行棧和程序計數(shù)器(PC),線程之間切換的開銷小。
-
包含關(guān)系:如果一個進程內(nèi)有多個線程,則執(zhí)行過程不是一條線的,而是多條線(線程)共同完成的;線程是進程的一部分,所以線程也被稱為輕權(quán)進程或者輕量級進程。
-
內(nèi)存分配:同一進程的線程共享本進程的地址空間和資源,而進程之間的地址空間和資源是相互獨立的
-
影響關(guān)系:一個進程崩潰后,在保護模式下不會對其他進程產(chǎn)生影響,但是一個線程崩潰整個進程都死掉。所以多進程要比多線程健壯。
-
執(zhí)行過程:每個獨立的進程有程序運行的入口、順序執(zhí)行序列和程序出口。但是線程不能獨立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個線程執(zhí)行控制,兩者均可并發(fā)執(zhí)行
CPU運行的本質(zhì)?
CPU 是由許多晶體管組成的電子部件,從功能方面上來看,CPU 內(nèi)部由寄存器,控制器,運算器和時鐘四個部分組成,他們各自的功能如下:
寄存器:可以用來暫存指令、數(shù)據(jù)等處理對象。
控制器:負責把內(nèi)存上的指令讀入寄存器,并根據(jù)指令的執(zhí)行結(jié)果來控制整個系統(tǒng)。
運算器:運算器負責運算送入運算器的數(shù)據(jù)
時鐘:負責發(fā)出 CPU 開始計時的時鐘信號,CPU 在時鐘信號的驅(qū)使下才能工作。
所以 CPU 的工作流程是根據(jù) PC 指針寄存器存儲的下一條即將執(zhí)行的指令的地址,使得指令存儲器中的指令能夠有序的進入指令寄存器,然后,控制單元從指令寄存器中取得相應(yīng)的指令,并對其進行指令解析,判斷當前指令要執(zhí)行的操作,以及根據(jù)指令解析的內(nèi)容控制邏輯運算單元操作數(shù)的來源和邏輯運算單元運算結(jié)果的存儲位置,從而完成指令要求 CPU 執(zhí)行的運算。
主流瀏覽器和版本
一、瀏覽器的結(jié)構(gòu):
① 用戶界面(UI):包括菜單欄、工具欄、地址欄、后退/前進按鈕、書簽?zāi)夸浀?#xff0c;也就是能看到的除了顯示頁面的主窗口之外的部分;
② 瀏覽器引擎(Rendering engine):也被稱為瀏覽器內(nèi)核、渲染引擎,主要負責取得頁面內(nèi)容、整理信息(應(yīng)用CSS)、計算頁面的顯示方式,然后會輸出到顯示器或者打印機;
③ JS解釋器:也可以稱為JS內(nèi)核,主要負責處理javascript腳本程序,一般都會附帶在瀏覽器之中,例如chrome的V8引擎;
④ 網(wǎng)絡(luò)部分:主要用于網(wǎng)絡(luò)調(diào)用,例如:HTTP請求,其接口與平臺無關(guān),并為所有的平臺提供底層實現(xiàn);
⑤ UI后端:用于繪制基本的窗口部件,比如組合框和窗口等;
⑥ 數(shù)據(jù)存儲:保存類似于cookie、storage等數(shù)據(jù)部分,HTML5新增了web database技術(shù),一種完整的輕量級客戶端存儲技術(shù)。
注:IE瀏覽器只為每個瀏覽器窗口啟用單獨的進程,而chrome瀏覽器卻為每個tab頁面啟用單獨的進程,也就是說每個tab都有獨立的渲染引擎實例。
IE瀏覽器(Internet explorer)2、火狐瀏覽器(Firefox)3、谷歌瀏覽器(Chrome)4、蘋果瀏覽器(Safari)5、歐朋瀏覽器(Opera)
1、Trident 代表作:IE
介紹:元老級內(nèi)核之一,由微軟開發(fā),并于1997年10月首次在ie 4.0中使用,憑借其windows壟斷優(yōu)勢,Trident市場占有率一直很高。然而壟斷并非,沒有競爭就沒有進步,長期以往,Trident內(nèi)核一度停滯不前,更新緩慢,甚至一度與W3C標準脫節(jié)。2011年,從ie 9開始,Trident開始支持HTML5和CSS 3,因此我們也經(jīng)常會看到有些網(wǎng)站在瀏覽時會提示用戶(在Internet Explorer 9.0+以上瀏覽效果最佳)。前端程序員做瀏覽器兼容一般也不再會考慮ie 8之前的瀏覽器了。
2、Gcko 代表作:Mozilla 火狐
介紹:元老級內(nèi)核之一,由Netscape公司Mozilla組織開發(fā)。1998年,Netscape在于IE瀏覽器競爭失利之后,成立了非正式組織Mozilla,由其開發(fā)新一代內(nèi)核,后命名為“Gecko”。FireFox也是這班人開發(fā)出來了,因此這也就是Mozilla一直使用的內(nèi)核。
Gecko的特點是代碼完全公開,因此其開發(fā)程度很高,全世界的程序員都可以為其編寫代碼,增加功能。
3、Webkit 代表作:Safari蘋果 & 谷歌舊版本
介紹:這是蘋果公司開發(fā)的內(nèi)核,也是其旗下產(chǎn)品Ssfari瀏覽器使用的內(nèi)核。Webkit引擎包含了WebCode排版引擎和JavaScriptCode解析引擎,分別是從KDE的KHTML和KJS衍生而來,它們都是自由軟件,在GPL條約下授權(quán),同時支持BSD系統(tǒng)開發(fā)。
Chrome、360極速瀏覽器以及搜狗高速瀏覽器也使用Webkit作為內(nèi)核(在腳本理解方面,Chorome使用自己研發(fā)的V8引擎)。
4、Blink 代表作:谷歌 & Opera
介紹:這是由Google和Opera Software開發(fā)的瀏覽器排版引擎,Google計算將這個渲染引擎作為Chromium計劃的一部分,并且在2013年4月公布了這一消息。這一渲染引擎是開源引擎Webkit中WebCore組件的一個分支,并且在Chrome(28及往后版本)、Opera(15及往后版本)瀏覽器中使用
兼容性測試的測試點
1.測試軟件是否能在不同的操作系統(tǒng)平臺上兼容,或測試軟件是否能在同一操作平臺的不同版本上兼容
2.軟件本身能否向前或向后兼容
主要指的是能否兼容不同版本的數(shù)據(jù)
3.測試軟件能否與其他相關(guān)的軟件兼容
例如殺毒軟件,文字處理軟件,辦公軟件之間的兼容性
4.被測軟件與標準外設(shè)的兼容
例如打印機
5.程序與運行支撐平臺版本之間的兼容性
例如是否可以兼容不同的JDK版本,或不同的framework版本等
6.程序與應(yīng)用服務(wù)器之間的兼容性
是否支持不同的應(yīng)用服務(wù)器產(chǎn)品,或支持同一應(yīng)用服務(wù)器的不同版本
7.各個瀏覽器之間的兼容性
主要是指的B/S架構(gòu)中,與瀏覽器各種內(nèi)核之間的兼容性問題
8.各種屏幕分辨率之間的兼容性
9.不同的網(wǎng)絡(luò)環(huán)境中的兼容性
10.數(shù)據(jù)庫之間的兼容性
不同的數(shù)據(jù)庫之間的數(shù)據(jù)遷移問題
11.不同版本程序數(shù)據(jù)文件之間的兼容性
同一數(shù)據(jù)庫在不同版本的軟件上是否能夠遷移
12.整機的兼容性
例如在本機能安裝使用,在其他配置機器能否正常使用
13.其他軟件的數(shù)據(jù)兼容性
即別的軟件中的數(shù)據(jù)文件能否經(jīng)進行處理
14.低版本軟件生成的文件,高版本軟件是否能夠打開
15.如果是C/S系統(tǒng),能否支持低版本的客戶端程序訪問高版本的服務(wù)器端或者是否支持高版本的服務(wù)器端程序訪問低版本的服務(wù)器端
16.如果是C/S系統(tǒng),是否允許不同版本的客戶端與同一個服務(wù)器進行通信
17.如果是C/S系統(tǒng),是否允許不同版本的客戶端之間進行通信
18.當前軟件系統(tǒng)生成的文件或數(shù)據(jù)是否可以在其他軟件中被打開
19.是否支持同時安裝或運行兩個不同版本的軟件
20.不同版本的軟件系統(tǒng)是否能夠支持以往的數(shù)字證書或硬件加密狗等安全校驗文件
21.新版本的系統(tǒng)是否和老的應(yīng)用插件相兼容
總結(jié)
以上是生活随笔為你收集整理的浏览器的兼容性测试基础知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Geotools与OGC(一)
- 下一篇: qq 电脑版导出聊天记录 用ie 浏览器