理論:
問:什麼是版本控制,常用的版本控制系統有哪些?
答:版本控制(Revision control)是一種軟體工程技巧,籍以在開發的過程中,確保由不同人所編輯的同一檔案都
得到更新。
Git(讀音爲/gɪt/。)是一個開源的分佈式版本控制系統,可以有效、高速的處理從很小到非常大的項目版本管理。
Git 是 Linus Torvalds 爲 了 幫 助 管 理 Linux 內 核 開 發 而 開 發 的 一 個 開 放 源 碼 的 版 本 控 制 軟 件 。
https://git-scm.com/doc
SVN 是 Subversion 的簡稱,是一個開放源代碼的版本控制系統,相較於 RCS、CVS,它採用了分支管理系統,
它 的 設 計 目 標 就 是 取 代 CVS 。 互 聯 網 上 很 多 版 本 控 制 服 務 已 從 CVS 遷 移 到 Subversion
問:你在測試中發現了一個 bug ,但是開發經理認爲這不是一個 bug ,你應該怎樣解決。
答:1、將問題提交到缺陷管理庫裏面進行備案。
2、要獲取判斷的依據和標準:
根據需求說明書、產品說明、設計文檔等,確認實際結果是否與計劃有不一致的地方,提供缺陷是否確認的直接依據;
如果沒有文檔依據,可以根據類似軟件的一般特性來說明是否存在不一致的地方,來確認是否是缺陷;
根據用戶的一般使用習慣,來確認是否是缺陷;
3、與設計人員、開發人員和客戶代表等相關人員探討,確認是否是缺陷;
4、合理的論述,向測試經理說明自己的判斷的理由,注意客觀、嚴謹,不參雜個人情緒。
等待測試經理做出最終決定,如果仍然存在爭議,可以通過公司政策所提供的渠道,向上級反映,並有上級做出決定
問:目前主要的測試用例設計方法是什麼?
答:白盒測試:邏輯覆蓋,循環覆蓋,基本邏輯覆蓋
黑盒測試:邊界值分析法,等價類分析法,錯誤猜測法,因果圖法,狀態圖法,隨機測試法,場景法等等
問:軟件測試劃分爲幾個階段
答:軟件測試按階段劃分可以分爲單元測試、集成測試、系統測試和驗收測試幾
個階段
問:測試人員在軟件開發過程中的任務是什麼?
1.尋找bug
2.避免軟件開發過程的缺陷
3.衡量軟件的品質
4.關注用戶的需求
5.確保軟件的質量
問:黑盒測試和白盒測試的優缺點有哪些
答:黑盒測試的優點是比較簡單,不需要了解程序內部的代碼實現,從用戶的角度出發,很容易的知道用戶會用到哪些功能,會遇到哪些問題,基於軟件開發文檔,所以也知道軟件實現了文檔的那些功能
缺點是:不可能覆蓋所有的代碼,覆蓋率比較低,大概只能達到總代碼的百分之30,自動化的複用性比較低
白盒測試的優點:幫助軟件測試人員增大代碼的覆蓋率,提高代碼的質量,發現代碼隱藏的問題
缺點是:程序運行有很多不同的路徑,不可能測試所有的路徑,測試基於代碼,只能測試開發人員做的對不對,而不能知道設計的正確與否,比較容易漏掉一些功能需求,系統比較龐大時,測試開銷會非常的大
問:如何測試一個 紙杯?
功能度:用水杯裝水看漏不漏;水能不能被喝到
安全性:杯子有沒有毒或細菌
可靠性:杯子從不同高度落下的損壞程度
可移植性:杯子在不同的地方、溫度等環境下是否都可以正常使用
兼容性:杯子是否能夠容納果汁、白水、酒精、汽油等
易用性:杯子是否燙手、是否有防滑措施、是否方便飲用
用戶文檔:使用手冊是否對杯子的用法、限制、使用條件等有詳細描述
疲勞測試:將杯子盛上水(案例一)放 24 小時檢查泄漏時間和情況;盛上汽油(案例二)
放 24 小時檢查泄漏時間和情況等
壓力測試:用根針並在針上面不斷加重量,看壓強多大時會穿透
問:測試計劃編寫的六要素?
答:why——爲什麼要進行這些測試
what—測試哪些方面,不同階段的工作內容
when—測試不同階段的起止時間
where—相應文檔,缺陷的存放位置,測試環境等
who—項目有關人員組成,安排哪些測試人員進行測試
how—如何去做,使用哪些測試工具以及測試方法進行測試。
問:編寫測試計劃的目的是?
答:使測試工作順利進行;使項目參與人員溝通更舒暢;使測試工作更加系統化。
問:項目版本執行過程中,測試人員如何把控測試進度?
答:在項目的系統測試過程中,測試負責人要及時瞭解測試進度,跟蹤 BUG 提交、修復及驗證情況以及系統的拷
機情況。
在開發初期階段,測試組執行 BBFV 時,很多模塊、功能點的開發完成進度和原計劃會存在一定的偏差,就需
要測試負責人動態的刷新 WBS 計劃,根據實際的開發進度調整測試計劃。
在開發階段,存在版本編譯不出來導致無法測試,開發人員修復代碼太隨意導致版本穩定性反覆,需求變更過
大導致後端測試開發變更嚴重等現象,會導致測試工作無法正常進行。就需要測試負責人及時反饋出來,根據項目
本身的特點進行對應的處理。
當測試進度出現延期時,要及時確認問題原因,如果是問題協查導致,則需及時與研發人員進行溝通協商,看
問題是否必須在測試環境進行排查,若爲必現問題可與研發協商要求其在自己環境進行排查,若必須佔用測試環境,
則需及時調整測試計劃,若因此可能影響版本的發佈,則應及時與 SE 確認
若發現有較多 BUG未解決,則應主動聯繫 SE 及研發人員召開 BUG會確定問題的解決時間。若發現有較多 BUG
未驗證,則應提醒項目組的測試人員及時進行驗證,對於一些拷機或非必現的 BUG,建議測試人員在此 BUG 上現
做拷機標記,連續拷機一週未再復現的做關閉處理,若再次復現則繼續進行排查。
疑難問題的跟控:比較難復現的問題,怎麼去嘗試復現。比較難定位的問題,怎麼驅動、反饋給 SE,協調開發
人員定位問題。比較難處理的問題,怎麼跟控反饋進度等
每天下班前需確認拷機內容,每天上班第一件事需確認拷機結果,只有這樣才能保證拷機的效果,實現拷機的
真正意義。
問:黑盒測試、白盒測試、單元測試、集成測試、系統測試、驗收測試的區別與聯
系?
答:黑盒測試:把測試對象當成一個黑盒子,測試人員完全不考慮邏輯結構和內部特性, 只依據程式的需求說明書
來檢查程式的功能是否滿足它的功能說明。
白盒測試:把測試對象當成一個透明的盒子,允許測試人員利用程序內部邏輯結構及 相關信息,設計或選擇測
試用例,對程式所有邏輯路徑進行測試。
單元測試:白盒測試的一種,對軟件設計中的單元模塊進行測試。
集成測試:在單元測試的基礎上,對單元模塊之間的連接和組裝進行測試。
系統測試:在所有都考慮的情況下,對系統進行測試。
驗收測試:第三方進行的確認軟件滿足需求的測試。
問:在沒有產品說明書和需求文檔的情況下能夠進行黑盒測試的設計嗎?
答:能,可以通過其他工作內容去替代產品說明書和需求文檔根據客戶的功能點整理測試需求追溯表,根據開發人員的 Software Specification List 整理功能測試點
開展項目跨部門討論會,主要整理對功能點的理解和認識
測試人員整理用例需求疑問提交項目組或者產品
項目內部的用例品勝
郵件客戶代表確認部分爭議問題
項目的 Demo 和部分已經開發的系統
參考同行業和競爭對手的類似產品
交叉模塊之間的測試
諮詢客戶或相關者
問:單元測試的策略有哪些,主要內容有哪些?
答:邏輯覆蓋,循環覆蓋,同行評審,桌前檢查,代碼走查,代碼評審,靜態數據流分析
問:白盒測試邏輯覆蓋有哪幾種覆蓋標準,覆蓋率最高的是什麼
答:語句覆蓋,分支覆蓋,條件覆蓋,路徑覆蓋,分支條件覆蓋,覆蓋率最高的是路徑覆蓋
問:測試結束的標準是什麼?
答:第一類標準:測試超過了預定時間,則停止測試。
第二類標準:執行了所有的測試用例,但並沒有發現故障,則停止測試。
第三類標準:使用特定的測試用例設計方案作爲判斷測試停止的基礎
第四類標準:正面指出停止測試的具體要求,即停止測試的標準可定義爲查出某一預訂 數目的故障。
第五類標準:根據單位時間內查出故障的數量決定是否停止測試
問:什麼是測試用例,測試用例的基本要素?
答:測試用例是爲某個特殊目標而編制的一組測試輸入、執行條件以及預期結果,以便測試某個程序路徑或覈實是
否滿足某個特定需求。
測試用例的基本元素: 測試索引,測試環境,測試輸入,測試操作,預期結果,評價標準。
問:一個身份證號碼輸入框,怎麼設計用例?
答:校驗身份證號規則的有效性(包括地址碼、生日期碼、順序碼和校驗碼
校驗 15 位身份證號和 18 位身份正好都是可用的
校驗末位是 X 的情況
校驗不足 15 位、16-17 位和大於 18 位的情況
如果是必輸項,校驗不輸入的時候會不會有正確的提示
如果不是必輸項,則要校驗不輸入的時候流程能否正常進行
校驗輸入非數字的情況,是否會有正確提示信息(包括大小寫字母、漢字、特殊字符和標點符號)
校驗輸入全角的數字的時候,系統是否會識別(這個得根據需求確定是否可以使用全角的數字)
Linux 基礎:
問:查看某端口號?
答:netstat -anp | grep port_number
問:查看某進程號?
答:ps -ef | grep ps_name
問:如何查詢出 tomcat 的進程並殺掉這個進程,寫出 linux 命令?
答:ps -ef | grep tomcat
kill -9 tomcat_port
問:常用的10個linux命令
答:cd cd… find gred cp mv top mkdir touck cat rm
問:動態查看日誌文件?
答:tail -f log_file
問:查看系統硬盤空間的命令?
答:df -aTh
問.查看當前機器 listen 的所有端口?
答:netstat -tlnp
MYSQL:
問:數據庫怎麼優化查詢效率?
答:1.分表分庫,主從
2.對查詢進行優化,要儘量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引
3.應儘量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描
4.應儘量避免在 where 子句中使用!= 或<> 操作符,否則將引擎放棄使用索引而進行全表掃描
5.、Update 語句,如果只更改 1、2 個字段,不要 Update 全部字段,否則頻繁調用會引起明顯的性能消耗,
同時帶來大量日誌
問:數據庫的優化?
答:1.優化索引、SQL 語句、分析慢查詢;
2.使用緩存,把經常訪問到的數據而且不需要經常變化的數據放在緩存中,能節約磁盤 IO
3.主從分離讀寫;採用主從複製把數據庫的讀操作和寫入操作分離開來;
4.分庫分表
5.不採用全文索引;
6.增加索引
WEB相關:
問: 描述用瀏覽器訪問 www.baidu.com 的過程?
答:先要解析出 baidu.com 對應的 ip 地址:
要先使用 arp 獲取默認網關的 mac 地址
組織數據發送給默認網關(ip 還是 dns 服務器的 ip,但是 mac 地址是默認網關的 mac 地址) 默認網關擁有轉發數據的能力,把數據轉發給路由器
路由器根據自己的路由協議,來選擇一個合適的較快的路徑轉發數據給目的網關
目的網關(dns 服務器所在的網關),把數據轉發給 dns 服務
dns 服務器查詢解析出 baidu.com 對應的 ip 地址,並原路返回請求這個域名的 client
得到了 baidu.com 對應的 ip 地址之後,會發送 tcp 的 3 次握手,進行連接
使用 http 協議發送請求數據給 web 服務器
web 服務器收到數據請求之後,通過查詢自己的服務器得到相應的結果,原路返回給瀏覽器
瀏覽器接收到數據之後通過瀏覽器自己的渲染功能來顯示這個網頁
瀏覽器關閉 tcp 連接,即 4 次揮手結束,完成整個訪問過程
問:瞭解的常用瀏覽器有哪些?
答:IE,Chrome,Safari,Firefox,Opera
問:Http和Https的區別
答:1、https協議需要到CA (Certificate Authority,證書頒發機構)申請證書,一般免費證書較少,因而需要一定費用。(原來網易官網是http,而網易郵箱是https。)
2、http是超文本傳輸協議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協議。
3、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,後者是443。
4、http的連接很簡單,是無狀態的。Https協議是由SSL+Http協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。(無狀態的意思是其數據包的發送、傳輸和接收都是相互獨立的。無連接的意思是指通信雙方都不長久的維持對方的任何信息。)
問:cookie和session的區別
答:1、Cookie和Session都是會話技術,Cookie是運行在客戶端,Session是運行在服務器端。
2、Cookie有大小限制以及瀏覽器在存cookie的個數也有限制,Session是沒有大小限制和服務器的內存大小有關。
3、Cookie有安全隱患,通過攔截或本地文件找得到你的cookie後可以進行攻擊。
4、Session是保存在服務器端上會存在一段時間纔會消失,如果session過多會增加服務器的壓力。
APP相關
問:1. 簡述 Android 四大組件?
答:Android 的四大組件包括:Activity、Service、BroadcasReceiver、ContentProvider
問: 當點擊 APP 圖標啓動程序,說明將要發生那些過程?
答:1.點擊桌面 app 圖標,Launcher 進程採用 Binder IPC 向 system_server 進程發起 startActivity 請求;
2.system_server 進程收到請求後,向 zygote 進程發送創建進程的請求(zygote 進程是 Android 系統的第一個
進程,zygote 意爲受精卵,所有進程都是由它孵化而來)
3.zygote 進程 fork 出新的子進程,即 App 進程;
4.App 進程,通過 Binder IPC 向 system_server 進程發起 attachApplication 請求
5.system_server 進程收到請求後,進行一系列的準備工作,通過 Binder IPC 向 App 進 程 發 送
scheduleLaunchActivity 請求
6.App 的 binder 線程(Application Thread)在收到請求後,通過 handler 向主線程發送 LAUNCH_ACTIVITY
消息
7.主線程收到 Message 後,通過發射機制創建目標 Activity,並回調 Activity.onCreate()方法
問:APP 測試的內容主要包括哪些,如何開展?
答:功能測試:
1.業務邏輯正確性測試:依據:產品文檔->測試用例編寫
兼容性測試:
1.系統版本:Android:官方版本,定製版本;IOS:官方提供版本
2.分辨率:720 * 1280 1080* 1920
3.網絡情況:2g 3g 4g 5g Wi-Fi
異常測試
1.熱啓動應用:應用在後臺長時間待機;應用在後臺待機過程中,手機重啓
2.網絡切換和中斷恢復:網絡切換;中斷恢復:
3.電話信息中斷恢復
升級,安裝,卸載測試
1.升級測試:臨近版本升級(1.0->1.1);跨版本(1.0->…->2.2)
2.安裝測試:首次安裝;覆蓋安裝(同版本,不同版本覆蓋);卸載後安裝
3.卸載測試:首次卸載;卸載安裝後在卸載
健壯性測試
1.手機資源消耗:cpu,內存
2.流量消耗:圖片,數據,視頻
3.電量測試
4.崩潰恢復
問:針對 App 的安裝功能,寫出測試點?
1.正常安裝測試,檢查是否安裝成功。
2.APP 版本覆蓋測試。例如:先安裝一個 1.0 版本的 APP,再安裝一個高版本(1.1 版本)的 APP,檢查是否被覆
蓋。
3.回退版本測試。例如:先裝一個 2.0 版本的 APP,再安裝一個 1.0 版本的 APP,正常情況下版本是可以回退的。
4.安裝時內存不足,彈出提示。
5.根據安裝手冊操作,是否正確安裝。
6.安裝過程中的意外情況(強行斷電、斷網、來電話了、查看信息)等等,檢查會發生的情況。
7.通過‘同步軟件’,檢查安裝時是否同步安裝了一些文件。
8.在不同型號、系統、屏幕大小、分辨率上的手機進行安裝。
9.安裝時是否識別有 SD 卡,並默認安裝到 sd 卡中。
10.安裝完成後,能否正常啓動應用程序。
11.安裝完成後,重啓手機能否正常啓動應用程序。
12.安裝完成後,是否對其他應用程序造成影響。
13.安裝完成後,能否添加快捷方式。
14.安裝完成後,殺毒軟件是否會對其當做病毒處理。
15.多進程進行安裝,是否安裝成功。
16.在安裝過程中,所有的提示信息必須是英文或者中文,提示信息中不能出現代碼、符號、亂碼等。
17.安裝之後,是否自動啓動程序。
18.是否支持第三方安裝。
19.在安裝中點擊取消。
卸載
1.用自己的卸載程序進行卸載,檢查是否卸載乾淨。
2.用第三方工具,檢查是否卸載乾淨。
3.在卸載過程中,點擊取消按鈕,看是否正常退出卸載程序,檢查軟件是否還能繼續正常使用。
4.卸載過程中,出現意外(比如手機關機,沒電,查看信息,接打電話),程序是否還能運行。
5.在卸載過程中,突然重啓設備,再次訪問程序,是否還能運行。
6.在沒用使用程序時,刪除目錄文件,看程序是否能運行。
7.在使用過程中,直接刪除目錄文件,程序是否還能運行。
8.不同系統、硬件環境、網絡環境下進行卸載。
9.卸載成功後,是否對其他程序有影響。
10.卸載後再次安裝,是否正常使用。
11.在卸載過程中,所有的提示信息必須是英文或者中文,提示信息中不能出現代碼、符號、亂碼等。
更新
1.當客戶端有新版本時,提示更新。
2.非強制更新,可以取消更新,舊版本正常使用,下次使用軟件時,仍然會出現更新提示。
3.強制更新,強制更新而用戶沒有更新時,退出客戶端,下次啓動,依然提示更新。
4.不卸載更新,檢查是否可以更新。
5.不卸載更新,檢查資源同名文件如圖片等是否更新成最新版本。
6.非 wifi 網絡下,提示是否更新,取消就加入待下載,wifi 下自動更新。
問:常用的ADB命令?
答:adb --help / adb :看見幫助信息
adb start-server:啓動 adb 服務
adb kill-server:關閉 adb 服務
adb devices:查看手機設備號
adb shell getprop ro.build.version.release:獲取系統版本
adb push 電腦 手機
adb pull 手機 電腦
adb logcat | grep(unix) 包名
adb logcat | findstr(win) 包名
adb shell :進入 shell 命令行,可以操作 Linux 命令
adb shell dumpsys window windows | grep mFocusedApp:獲取包名 啓動名(win:adb shell dumpsys window
windows | findstr mFocusedApp)
adb install 路徑/apk 文件:安裝 apk 到手機上
adb uninstall 包名:卸載 app 從手機上
adb shell am start -W 包名/啓動名:app 啓動時間
問:在查看 logcat 命令日誌時候怎麼內容保存到本地文件?
答:輸出重定向:logcat >> log_file_name
問:APP閃退,可能是什麼原因導致的
答:緩存垃圾過多,安卓的特性,如果長時間不清理垃圾文件,會導致越來越卡,就會出現閃退的情況
運行的內存過多,導致內存不足
版本的兼容問題。版本過低的話會導致不兼容造成閃退