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