1、軟生存周期及其模型是什麼?
一般分為計劃、開發、維護這三個周期,測試模型一般是w模型

優點:
開發伴随着整個開發周期,需求和設計同樣要測試;
更早的介入測試,可以發現初期的缺陷,修複成本低;
分階段工作,友善項目整體管理。
缺點:
開發和測試依然是線性的關系,需求的變更和調整,依然不友善;
如果沒有文檔,根本無法執行w模型;對于項目組成員的技術要求更高!
2、軟體測試方法有哪些分類?
3.單元測試、內建測試、系統測試的側重點是什麼?
單元測試是在軟體開發過程中要進行的最低級别的測試活動,在單元測試活動中,軟體的獨立單元将在與程式的其他部分相隔離的情況下進行測試,測試重點是系統的子產品,包括子程式的正确性驗證等。
內建測試,也叫組裝測試或聯合測試。在單元測試的基礎上,将所有子產品按照設計要求,組裝成為子系統或系統,進行內建測試。實踐表明,一些子產品雖然能夠單獨地工作,但并不能保證連接配接起來也能正常的工作。程式在某些局部反映不出來的問題,在全局上很可能暴露出來,影響功能的實作。測試重點是子產品間的銜接以及參數的傳遞等。
系統測試是将經過測試的子系統裝配成一個完整系統來測試。它是檢驗系統是否确實能提供系統方案說明書中指定功能的有效方法。測試重點是整個系統的運作以及與其他軟體的相容性。
4.什麼是樁子產品?
比如對函數A做單元測試時,被測的函數單元下還包括了一個函數B,為了更好的錯誤,定位錯誤,就要為函數B寫樁,來模拟函數B的功能,保證其正确。
5.什麼是靜态測試?
通過運作程式測試軟體稱為動态測試.通過評審文檔、閱讀代碼等方式測試軟體稱為靜态測試,在動态測試中,通常使用白盒測試和黑盒測試從不同的角度設計測試用例,查找軟體代碼中的錯誤.
靜态測試方法是指不運作被測程式本身,僅通過分析或檢查源程式的文法、結構、過程、接口等來檢查程式的正确性。對需求規格說明書、軟體設計說明書、源程式做結構分析、流程圖分析、符号執行來找錯。靜态方法通過程式靜态特性的分析,找出欠缺和可疑之處,例如不比對的參數、不适當的循環嵌套和分支嵌套、不允許的遞歸、未使用過的變量、空指針的引用和可疑的計算等。靜态測試結果可用于進一步的查錯,并為測試用例選取提供指導。
6.什麼是回歸測試?
回歸測試的目的是在程式有修改的情況下,保證原有功能正常的一種測試政策和方法。
說白了就是,我們測試人員在對程式進行測試時發現bug,然後返還程式員修改,程式員修改後釋出新的軟體包或新的軟體更新檔包給我們測試人員,我們就要重新對這個程式測試,已保證程式在修正了以前bug的情況下,正常運作,且不會帶來新的錯誤的這樣一個過程。 一般情況下是不需要全面測試的,而是根據修改的情況進行有效的測試。
7.白盒測試有哪幾種方法?
白盒測試也稱結構測試或邏輯驅動測試,它是知道産品内部工作過程,可通過測試來檢測産品内部動作是否按照規格說明書的規定正常進行,按照程式内部的結構測試程式,檢驗程式中的每條通路是否都有能按預定要求正确工作,而不顧它的功能,白盒測試的主要方法有邏輯驅動、基路測試等,主要用于軟體驗證。“白盒”法全面了解程式内部邏輯結構、對所有邏輯路徑進行測試。“白盒”法是窮舉路徑測試。
8.軟體的缺陷等級應如何劃分?
軟體缺陷的等級可以用嚴重性和優先級來描述;
嚴重性:衡量缺陷對客戶滿意度影響的滿意程度,分為
1,緻命錯誤,可能導緻本子產品以及其他相關的子產品異常,當機等問題;
2.嚴重錯誤,問題局限在本子產品,導緻子產品功能失常或異常退出;
3.一般錯誤,子產品功能部分失效;
4.建議子產品,有問題提出人對測試子產品的改進建議;
優先級:缺陷被修複的緊急程度;
1.立即解決(P1級):缺陷導緻系統功能幾乎不能使用或者測試不能繼續,需立即修複;
2.高優先級(P2級):缺陷嚴重,影響測試,需優先考慮;
3.正常排隊(P3級):缺陷需要正常排隊等待修複;
4.低優先級(P4級):缺陷可以在有時間的時候被糾正;
9.白盒與黑盒的差別?
任何工程産品(注意是任何工程産品)都可以使用以下兩種方法之一進行測試。
黑盒測試:已知産品的功能設計規格,可以進行測試證明每個實作了的功能是否符合要求。 白盒測試:已知産品的内部工作過程,可以通過測試證明每種内部操作是否符合設計規格要求,所有内部成分是否以經過檢查。
軟體的黑盒測試意味着測試要在軟體的接口處進行。這種方法是把測試對象看做一個黑盒子,測試人員完全不考慮程式内部的邏輯結構和内部特性,隻依據程式的需求規格說明書,檢查程式的功能是否符合它的功能說明。是以黑盒測試又叫功能測試或資料驅動測試。黑盒測試主要是為了發現以下幾類錯誤:
1、是否有不正确或遺漏的功能?
2、在接口上,輸入是否能正确的接受?能否輸出正确的結果?
3、是否有資料結構錯誤或外部資訊(例如資料檔案)通路錯誤?
4、性能上是否能夠滿足要求?
5、是否有初始化或終止性錯誤?
軟體的白盒測試是對軟體的過程性細節做細緻的檢查。這種方法是把測試對象看做一個打開的盒子,它允許測試人員利用程式内部的邏輯結構及有關資訊,設計或選擇測試用例,對程式所有邏輯路徑進行測試。通過在不同點檢查程式狀态,确定實際狀态是否與預期的狀态一緻。是以白盒測試又稱為結構測試或邏輯驅動測試。白盒測試主要是想對程式子產品進行如下檢查:
1、對程式子產品的所有獨立的執行路徑至少測試一遍。
2、對所有的邏輯判定,取“真”與取“假”的兩種情況都能至少測一遍。
3、在循環的邊界和運作的界限内執行循環體。
4、測試内部資料結構的有效性,等等。
白盒測試中的邏輯覆寫包括語句覆寫、判定覆寫、條件覆寫、判定/條件覆寫、條件組合覆寫和路徑覆寫。六種覆寫标準發現錯誤的能力呈由弱到強的變化:
1.語句覆寫每條語句至少執行一次。
2.判定覆寫每個判定的每個分支至少執行一次。
3.條件覆寫每個判定的每個條件應取到各種可能的值。
4.判定/條件覆寫同時滿足判定覆寫條件覆寫。
5.條件組合覆寫每個判定中各條件的每一種組合至少出現一次。
6.路徑覆寫使程式中每一條可能的路徑至少執行一次
10.軟體測試應該劃分幾個階段?簡述各個階段應重點測試的點?各個階段的含義?
大體上來說可分為單元測試,內建測試,系統測試,驗收測試,每個階段又分為以下五個步驟: 測試計劃,測試設計,用例設計,執行結果,測試報告
初始測試集中在每個子產品上,保證源代碼的正确性,該階段成為單元測試,主要用白盒測試方法。 接下來是子產品內建和內建以便組成完整的軟體包。內建測試集中在證明和程式構成問題上。主要采用黑盒測試方法,輔之以白盒測試方法。
軟體內建後,需要完成确認和系統測試。确認測試提供軟體滿足所有功能、性能需求的最後保證。确認測試僅僅應用黑盒測試方法。
11.什麼是單元測試、內建測試、系統測試、驗收測試?
單元測試是對軟體中的基本組成機關進行的測試,如一個子產品、一個過程等等。它是軟體動态測試的最基本的部分,也是最重要的部分之一,其目的是檢驗軟體基本組成機關的正确性。
內建測試是在軟體系統內建過程中所進行的測試,其主要目的是檢查軟體機關之間的接口是否正确。
系統測試是對已經內建好的軟體系統進行徹底的測試,以驗證軟體系統的正确性和性能等滿足其規約所指定的要求,檢查軟體的行為和輸出是否正确并非一項簡單的任務,它被稱為測試的“先知者問題”。
驗收測試旨在向軟體的購買者展示該軟體系統滿足其使用者的需求。它的測試資料通常是系統測試的測試資料的子集.
請你回答一下什麼是α測試和β測試,以及什麼時候用到他們
α測試:在受控的環境中進行,由使用者在開發者的場所進行,并且在開發者對使用者的指導下進行測試,開發者負責記錄發現的錯誤和使用中遇到的問題
β測試:在開發者不能控制的環境中的真實應用,由軟體的最終使用者們在一個或多個客戶場所下進行,由使用者記錄在測試中遇到的一系列問題,并定期報給開發者。
12.單元測試、內建測試、系統測試的側重點是什麼?
單元測試是在軟體開發過程中要進行的最低級别的測試活動,在單元測試活動中,軟體的獨立單元将在與程式的其他部分相隔離的情況下進行測試,測試重點是系統的子產品,包括子程式的正确性驗證等。
13.設計用例的方法、依據有那些?
白盒測試用例設計有如下方法:基本路徑測試\邊界值分析\覆寫測試\循環測試\資料流測試\程式插樁測試\變異測試.這時候依據就是詳細設計說明書及其代碼結構
黑盒測試用例設計方法:基于使用者需求的測試\功能圖分析方法\等價類劃分方法\邊界值分析方法\錯誤推測方法\因果圖方法\判定表驅動分析方法\正交實驗設計方法.依據是使用者需求規格說明書,詳細設計說明書。
14.請你分别介紹一下單元測試、內建測試、系統測試、驗收測試、回歸測試
1、單元測試:完成最小的軟體設計單元(子產品)的驗證工作,目标是確定子產品被正确的編碼,使用過程設計描述作為指南,對重要的控制路徑進行測試以發現子產品内的錯誤,通常情況下是白盒的,對代碼風格和規則、程式設計和結構、業務邏輯等進行靜态測試,及早的發現和解決不易顯現的錯誤。
2、內建測試:通過測試發現與子產品接口有關的問題。目标是把通過了單元測試的子產品拿來,構造一個在設計中所描述的程式結構,應當避免一次性的內建(除非軟體規模很小),而采用增量內建。
自頂向下內建:子產品內建的順序是首先內建主子產品,然後按照控制層次結構向下進行內建,隸屬于主子產品的子產品按照深度優先或廣度優先的方式內建到整個結構中去。
自底向上內建:從原子子產品開始來進行構造和測試,因為子產品是自底向上內建的,進行時要求所有隸屬于某個給頂層次的子產品總是存在的,也不再有使用穩定測試樁的必要。
3、系統測試:是基于系統整體需求說明書的黑盒類測試,應覆寫系統所有聯合的部件。系統測試是針對整個産品系統進行的測試,目的是驗證系統是否滿足了需求規格的定義,找出與需求規格不相符合或與之沖突的地方。系統測試的對象不僅僅包括需要測試的産品系統的軟體,還要包含軟體所依賴的硬體、外設甚至包括某些資料、某些支援軟體及其接口等。是以,必須将系統中的軟體與各種依賴的資源結合起來,在系統實際運作環境下來進行測試。
4、回歸測試:回歸測試是指在發生修改之後重新測試先前的測試用例以保證修改的正确性。理論上,軟體産生新版本,都需要進行回歸測試,驗證以前發現和修複的錯誤是否在新軟體版本上再次出現。根據修複好了的缺陷再重新進行測試。回歸測試的目的在于驗證以前出現過但已經修複好的缺陷不再重新出現。一般指對某已知修正的缺陷再次圍繞它原來出現時的步驟重新測試。
5、驗收測試:驗收測試是指系統開發生命周期方法論的一個階段,這時相關的使用者或獨立測試人員根據測試計劃和結果對系統進行測試和接收。它讓系統使用者決定是否接收系統。它是一項确定産品是否能夠滿足合同或使用者所規定需求的測試。驗收測試包括Alpha測試和Beta測試。
Alpha測試:是由使用者在開發者的場所來進行的,在一個受控的環境中進行。
Beta測試:由軟體的最終使用者在一個或多個使用者場所來進行的,開發者通常不在現場,使用者記錄測試中遇到的問題并報告給開發者,開發者對系統進行最後的修改,并開始準備釋出最終的軟體。
15.請你回答一下單元測試、內建測試、系統測試、驗收測試、回歸測試這幾步中最重要的是哪一步
這些測試步驟分别在軟體開發的不同階段對軟體進行測試,我認為對軟體完整功能進行測試的系統測試很重要,因為此時單元測試和內建測試已完成,能夠對軟體所有功能進行功能測試,能夠覆寫系統所有聯合的部件,是針對整個産品系統進行的測試,能夠驗證系統是否滿足了需求規格的定義,是以我認為系統測試很重要。
16.請回答內建測試和系統測試的差別,以及它們的應用場景主要是什麼?
1、計劃和用例編制的先後順序:從V模型來講,在需求階段就要制定系統測試計劃和用例,HLD的時候做內建測試計劃和用例,有些公司的具體實踐不一樣,但是順序肯定是先做系統測試計劃用例,再做內建。
2、用例的粒度:系統測試用例相對很接近使用者接受測試用例,內建測試用例比系統測試用例更詳細,而且對于接口部分要重點寫,畢竟要內建各個子產品或者子系統。
3、執行測試的順序:先執行內建測試,待內建測試出的問題修複之後,再做系統測試。
應用場景:
內建測試:完成單元測試後,各子產品聯調測試;集中在各子產品的接口是否一緻、各子產品間的資料流和控制流是否按照設計實作其功能、以及結果的正确性驗證等等;可以是整個産品的內建測試,也可以是大子產品的內建測試;內建測試主要是針對程式内部結構進行測試,特别是對程式之間的接口進行測試。內建測試對測試人員的編寫腳本能力要求比較高。測試方法一般選用黑盒測試和白盒測試相結合。
系統測試:針對整個産品的全面測試,既包含各子產品的驗證性測試(驗證前兩個階段測試的正确性)和功能性(産品送出個使用者的功能)測試,又包括對整個産品的健壯性、安全性、可維護性及各種性能參數的測試。系統測試測試軟體《需求規格說明書》中提到的功能是否有遺漏,是否正确的實作。做系統測試要嚴格按照《需求規格說明書》,以它為标準。測試方法一般都使用黑盒測試法。
17.請說一下手動測試與自動化測試的優缺點
手工測試缺點:
1、重複的手工回歸測試,代價昂貴、容易出錯。
2、依賴于軟體測試人員的能力。
手工測試優點:
1、測試人員具有經驗和對錯誤的猜測能力。
2、測試人員具有審美能力和心理體驗。
3、測試人員具有是非判斷和邏輯推理能力。
自動化測試的優點:
1、對程式的回歸測試更友善。這可能是自動化測試最主要的任務,特别是在程式修改比較頻繁時,效果是非常明顯的。由于回歸測試的動作和用例是完全設計好的,測試期望的結果也是完全可以預料的,将回歸測試自動運作,可以極大提高測試效率,縮短回歸測試時間。
2、可以運作更多更繁瑣的測試。自動化的一個明顯的好處是可以在較少的時間内運作更多的測試。
3、可以執行一些手工測試困難或不可能進行的測試。比如,對于大量使用者的測試,不可能同時讓足夠多的測試人員同時進行測試,但是卻可以通過自動化測試模拟同時有許多使用者,進而達到測試的目的。
4、更好地利用資源。将繁瑣的任務自動化,可以提高準确性和測試人員的積極性,将測試技術人員解脫出來投入更多精力設計更好的測試用例。有些測試不适合于自動測試,僅适合于手工測試,将可自動測試的測試自動化後,可以讓測試人員專注于手工測試部分,提高手工測試的效率。
5、測試具有一緻性和可重複性。由于測試是自動執行的,每次測試的結果和執行的内容的一緻性是可以得到保障的,進而達到測試的可重複的效果。
6、測試的複用性。由于自動測試通常采用腳本技術,這樣就有可能隻需要做少量的甚至不做修改,實作在不同的測試過程中使用相同的用例。
7、增加軟體信任度。由于測試是自動執行的,是以不存在執行過程中的疏忽和錯誤,完全取決于測試的設計品質。一旦軟體通過了強有力的自動測試後,軟體的信任度自然會增加。
自動化測試的缺點:
1、不能取代手工測試
2、手工測試比自動測試發現的缺陷更多
3、對測試品質的依賴性極大
4、測試自動化不能提高有效性
5、測試自動化可能會制約軟體開發。由于自動測試比手動測試更脆弱,是以維護會受到限制,進而制約軟體的開發。
6、工具本身并無想像力
18.你覺得自動化測試有什麼意義,都需要做些什麼
自動化測試的意義在于
1、可以對程式的新版本自動執行回歸測試
2、可以執行手工測試困難或者不可能實作的測試,如壓力測試,并發測試,
3、能夠更好的利用資源,節省時間和人力
執行自動化測試之前首先判斷這個項目是不是和推廣自動化測試,然後對項目做需求分析,指定測試計劃,搭建自動化測試架構,設計測試用例,執行測試,評估
19.請你說一下如何寫測試用例
1、測試人員盡早介入,徹底了解清楚需求,這個是寫好測試用例的基礎
2、如果以前有類似的需求,可以參考類似需求的測試用例,然後還需要看類似需求的bug情況
3、清楚輸入、輸出的各種可能性,以及各種輸入的之間的關聯關系,了解清楚需求的執行邏輯,通過等價類、邊界值、判定表等方法找出大部分用例
4、找到需求相關的一些特性,補充測試用例
5、根據自己的經驗分析遺漏的測試場景
6、多總結類似功能點的測試點,才能夠寫出品質越來越高的測試用例
7、書寫格式一定要清晰
20.請問你覺得測試項目具體工作是什麼?
搭建測試環境
撰寫測試用例
執行測試用例
寫測試計劃,測試報告
測試,并送出BUG表單
跟蹤bug修改情況
執行自動化測試,編寫腳本,執行,分析,報告
進行性能測試,壓力測試等其他測試,執行,分析,調優,報告
21.請你說一下設計測試用例的方法
黑盒測試:
1.等價類劃分
等價類劃分是将系統的輸入域劃分為若幹部分,然後從每個部分選取少量代表性資料進行測試。等價類可以劃分為有效等價類和無效等價類,設計測試用例的時候要考慮這兩種等價類。
2.邊界值分析法
邊界值分析法是對等價類劃分的一種補充,因為大多數錯誤都在輸入輸出的邊界上。邊界值分析就是假定大多數錯誤出現在輸入條件的邊界上,如果邊界附件取值不會導緻程式出錯,那麼其他取值出錯的可能性也就很小。
邊界值分析法是通過優先選擇不同等價類間的邊界值覆寫有效等價類和無效等價類來更有效的進行測試,是以該方法要和等價類劃分法結合使用。
3.正交試驗法
正交是從大量的試驗點中挑選出适量的、有代表性的點。正交試驗設計是研究多因素多水準的一種設計方法,他是一種基于正交表的高效率、快速、經濟的試驗設計方法。
4.狀态遷移法
狀态遷移法是對一個狀态在給定的條件内能夠産生需要的狀态變化,有沒有出現不可達的狀态和非法的狀态,狀态遷移法是設計足夠的用例達到對系統狀态的覆寫、狀态、條件組合、狀态遷移路徑的覆寫。
5.流程分析法
流程分析法主要針對測試場景類型屬于流程測試場景的測試項下的測試子項進行設計,這是從白盒測試中路徑覆寫分析法借鑒過來的一種很重要的方法。
6.輸入域測試法
輸入域測試法是針對輸入會有各種各樣的輸入值的一個測試,他主要考慮 極端測試、中間範圍測試,特殊值測試 。
7.輸出域分析法
輸出域分析法是對輸出域進行等價類和邊界值分析,确定是要覆寫的輸出域樣點,反推得到應該輸入的輸入值,進而構造出測試用例,他的目的是為了達到輸出域的等價類和邊界值覆寫。
8.判定表分析法
判定表是分析和表達多種輸入條件下系統執行不同動作的工具,他可以把複雜的邏輯關系和多種條件組合的情況表達的即具體又明确;
9.因果圖法
因果圖是用于描述系統輸入輸出之間的因果關系、限制關系。因果圖的繪制過程是對被測系統的外部特征的模組化過程,根據輸入輸出間的因果圖可以得到判定表,進而規劃出測試用例。
10.錯誤猜測法
錯誤猜測法主要是針對系統對于錯誤操作時對于操作的處理法的猜測法,進而設計測試用例
11.異常分析法
異常分析法是針對系統有可能存在的異常操作,軟硬體缺陷引起的故障進行分析,分析發生錯誤時系統對于錯誤的處理能力和恢複能力依此設計測試用例。
白盒測試:
白盒測試也稱為結構測試或邏輯驅動測試,是針對被測單元内部是如何進行工作的測試。它根據程式的控制結構設計測試用例,主要用于軟體或程式驗證。白盒測試法檢查程式内部邏輯結構,對所有的邏輯路徑進行測試,是一種窮舉路徑的測試方法,但即使每條路徑都測試過了,但仍然有可能存在錯誤。因為:窮舉路徑測試無法檢查出程式本身是否違反了設計規範,即程式是否是一個錯誤的程式;窮舉路徑測試不可能檢查出程式因為遺漏路徑而出錯;窮舉路徑測試發現不了一些與資料相關的錯誤。
白盒測試需要遵循的原則有:1. 保證一個子產品中的所有獨立路徑至少被測試一次;2. 所有邏輯值均需要測試真(true)和假(false);兩種情況;3. 檢查程式的内部資料結構,保證其結構的有效性;4. 在上下邊界及可操作範圍内運作所有循環。
常用白盒測試方法:
靜态測試:不用運作程式的測試,包括代碼檢查、靜态結構分析、代碼品質度量、文檔測試等等,它可以由人工進行,充分發揮人的邏輯思維優勢,也可以借助軟體工具(Fxcop)自動進行。
動态測試:需要執行代碼,通過運作程式找到問題,包括功能确認與接口測試、覆寫率分析、性能分析、記憶體分析等。
6.路徑覆寫使程式中每一條可能的路徑至少執行一次。
22.請你說一下app性能測試的名額
1、記憶體:記憶體消耗測試節點的設計目标是為了讓應用不占用過多的系統資源,且及時釋放記憶體,保障整個系統的穩定性。當然關于記憶體測試,在這裡我們需要引入幾個概念:空閑狀态、中等規格、滿規格。
空閑狀态指打開應用後,點選home鍵讓應用背景運作,此時應用處于的狀态叫做空閑;中等規格和滿規格指的是對應用的操作時間的間隔長短不一,中等規格時間較長,滿規格時間較短。
記憶體測試中存在很多測試子項,清單如下:
●空閑狀态下的應用記憶體消耗;
●中等規格狀态下的應用記憶體消耗;
●滿規格狀态下的應用記憶體消耗;
●應用記憶體峰值;
●應用記憶體洩露;
●應用是否常駐記憶體;
●壓力測試後的記憶體使用。
2、CPU:
使用Android提供的view plaincopy在CODE上檢視代碼片派生到我的代碼片
adbshell dumpsys CPUinfo |grep packagename >/address/CPU.txt來擷取;
使用top指令view plaincopy在CODE上檢視代碼片派生到我的代碼片
adbshell top |grep packagename>/address/CPU.txt來擷取。
3、流量:
網絡流量測試是針對大部分應用而言的,可能還有部分應用會關注網速、弱網之類的測試。
流量測試包括以下測試項:
應用首次啟動流量提示;
應用背景連續運作2小時的流量值;
應用高負荷運作的流量峰值。
4、電量:
●測試手機安裝目标APK前後待機功耗無明顯差異;
●常見使用場景中能夠正常進入待機,待機電流在正常範圍内;
●長時間連續使用應用無異常耗電現象。
5、啟動速度:
第一類:首次啟動--應用首次啟動所花費的時間;
第二類:非首次啟動--應用非首次啟動所花費的時間;
第三類:應用界面切換--應用界面内切換所花費的時間。
6、滑動速度、界面切換速度
7、與伺服器互動的網絡速度
23.請你說一說app測試的工具
功能測試自動化
a) 輕量接口自動化測試
jmeter,
b) APP UI層面的自動化
android:UI Automator Viewer,Android Junit,Instrumentation,UIAutomator,
iOS:基于Instrument的iOS UI自動化,
性能測試
a) Web前端性能測試
網絡抓包工具:Wireshark
網頁檔案大小
webpagetest
pagespeed insight
chrome adb
b) APP端性能測試
Android記憶體占用分析:MAT
iOS記憶體問題分析:ARC模式
Android WebView性能分析:
iOS WebView性能分析
c) 背景服務性能測試
負載,壓力,耐久性
可拓展性,基準
工具:apacheAB,Jmeter,LoadRunner,
專項測試
a) 相容性測試
手工測試:作業系統,分辨率,rom,網絡類型
雲平台:testin,腳本編寫,Android。
b) 流量測試
Android自帶的流量管理,
iOS自帶的Network
tcpdump抓包
WiFi代理抓包:Fiddler
流量節省方法:壓縮資料,json優于xml;WebP優于傳統的JPG,PNG;控制通路的頻次;隻擷取必要的資料;緩存;
c) 電量測試
基于測試裝置的方法,購買電量表進行測試。
GSam Battery Monitoe Pro
iOS基于Instrument Energy工具
d) 弱網絡測試
手機自帶的網絡狀況模拟工具
基于代理的弱網絡的模拟:
工具:windows:Network Delay Simulator
Mac:Network Link Conditioner
23.請你說一說web測試和app測試的不同點
系統架構方面:
web項目,一般都是b/s架構,基于浏覽器的
app項目,則是c/s的,必須要有用戶端,使用者需要安裝用戶端。
web測試隻要更新了伺服器端,用戶端就會同步會更新。App項目則需要用戶端和伺服器都更新。
性能方面:
web頁面主要會關注響應時間
而app則還需要關心流量、電量、CPU、GPU、Memory這些。
它們服務端的性能沒差別,都是一台伺服器。
相容方面:
web是基于浏覽器的,是以更傾向于浏覽器和電腦硬體,電腦系統的方向的相容
app測試則要看分辨率,螢幕尺寸,還要看裝置系統。
web測試是基于浏覽器的是以不必考慮安裝解除安裝。
而app是用戶端的,則必須測試安裝、更新、解除安裝。除了正常的安裝、更新、解除安裝還要考慮到異常場景。包括安裝時的中斷、弱網、安裝後删除安裝檔案 。
此外APP還有一些專項測試:如網絡、适配性。
24.請問你怎麼測試網絡協定
協定測試包括四種類型的測試
1、一緻性測試:檢測協定實作本身與協定規範的符合程度
2、互操作性測試:基于某一協定檢測不同協定實作間互操作互通信的能力
3、性能測試:檢測協定實作的性能名額,比如資料傳輸速度,連接配接時間,執行速度,吞吐量,并發度,
4、健壯性測試:檢測協定是現在各種惡劣環境下運作的能力,比如注入幹擾封包,通信故障,信道被切斷
請進行測試用例設計:一串數字,閏年的判别
測試用例 | 輸入 | 預期輸出 |
被 4 整除, 但是不被100 整除的年份 | 2008 | 閏年 |
被 4 整除, 同時被100 整除的年份,且被 400 整除的年份 | 2000 | |
被 4 整除, 同時被100 整除的年份,但是不被400 整除的年份 | 1900 | 不是閏年 |
偶數, 不被4 整除的年份 | 2022 | |
奇數年份 | 1999 | |
年份大于9999 | 10000 | 請輸入正确的年份 |
年份小于0 |
25.請你說一說簡單使用者界面登陸過程都需要做哪些分析
一、功能測試
1.輸入正确的使用者名和密碼,點選送出按鈕,驗證是否能正确登入。
2.輸入錯誤的使用者名或者密碼,驗證登入會失敗,并且提示相應的錯誤資訊。
3.登入成功後能否能否跳轉到正确的頁面
4.使用者名和密碼,如果太短或者太長,應該怎麼處理
5.使用者名和密碼,中有特殊字元(比如空格),和其他非英文的情況
6.記住使用者名的功能
7.登陸失敗後,不能記錄密碼的功能
8.使用者名和密碼前後有空格的處理
9.密碼是否非明文顯示顯示,使用星号圓點等符号代替。
10.牽扯到驗證碼的,還要考慮文字是否扭曲過度導緻辨認難度大,考慮顔色(色盲使 用者),重新整理或換一個按鈕是否好用
11.登入頁面中的注冊、忘記密碼,登出用另一帳号登陸等連結是否正确
12.輸入密碼的時候,大寫鍵盤開啟的時候要有提示資訊。
13.什麼都不輸入,點選送出按鈕,檢查提示資訊。
二、界面測試
1.布局是否合理,testbox和按鈕是否整齊。
2.testbox和按鈕的長度,高度是否複合要求。
3. 界面的設計風格是否與UI的設計風格統一。
4. 界面中的文字簡潔易懂,沒有錯别字。
三、性能測試
1.打開登入頁面,需要的時間是否在需求要求的時間内。
2.輸入正确的使用者名和密碼後,檢查登入成功跳轉到新頁面的時間是否在需求要求的時間内。
3.模拟大量使用者同時登陸,檢查一定壓力下能否正常登陸跳轉。
四、安全性測試
1.登入成功後生成的Cookie,是否是httponly (否則容易被腳本盜取)。
2.使用者名和密碼是否通過加密的方式,發送給Web伺服器。
3.使用者名和密碼的驗證,應該是用伺服器端驗證, 而不能單單是在用戶端用javascript 驗證。
4.使用者名和密碼的輸入框,應該屏蔽SQL注入攻擊。
5.使用者名和密碼的的輸入框,應該禁止輸入腳本 (防止XSS攻擊)。
6.防止暴力破解,檢測是否有錯誤登陸的次數限制。
7. 是否支援多使用者在同一機器上登入。
8. 同一使用者能否在多台機器上登入。
五、可用性測試
1. 是否可以全用鍵盤操作,是否有快捷鍵。
2. 輸入使用者名,密碼後按回車,是否可以登陸。
3. 輸入框能否可以以Tab鍵切換。
六、相容性測試
1.不同浏覽器下能否顯示正常且功能正常(IE,6,7,8,9, Firefox, Chrome, Safari,等)。
2.同種浏覽器不同版本下能否顯示正常且功能正常。
2.不同的平台是否能正常工作,比如Windows, Mac。
3.移動裝置上是否正常工作,比如Iphone, Andriod。
4.不同的分辨率下顯示是否正常。
七、本地化測試
1. 不同語言環境下,頁面的顯示是否正确。
26.請對這個系統做出測試用例:一個系統,多個攝像頭,抓拍車牌,識别車牌,上傳網上,網上展示
功能:
1.每個攝像頭都能抓拍車牌;
2.每個攝像頭抓拍到的車牌能正常交給系統處理;
3.系統能夠正确識别車牌;
4.系統能夠将識别出的車牌上傳;
5.上傳至網絡的車牌能夠正常展示出來;
1.使用正常的車牌,保持車牌靜止,檢查每個攝像頭是否能抓拍車牌;
2.使用類似非車牌的寫有字的紙闆,檢查每個攝像頭是否抓拍;
3.使用正常的車牌,保持車牌較高速移動,檢查每個攝像頭是否能抓拍車牌;
4.在多種情況下檢查每個攝像頭抓拍到的車牌能否正常交給系統處理,如臨時斷電、斷網後能否正常将資料交給系統;
5.使用抓拍到的正常的車牌,交由系統處理,檢查系統能否識别車牌;
6.使用非車牌的其他圖檔,交由系統處理,檢查系統能否識别;
7.在多種情況下檢查系統能否将正常識别出的車牌進行上傳,如臨時斷電、斷網後未上傳資料是否能繼續上傳;
8.構造非車牌的其他内容的資料,檢查系統能否将異常内容進行上傳;
9.檢查上傳至網絡的車牌能否正常展示出來;
10.上傳非車牌的其他内容的資料,檢查能否正常顯示出來。
二、性能測試
1.同時向一個攝像頭展示多個靜止的車牌,檢查攝像頭能否抓拍到多個車牌;
2.同時向一個攝像頭展示多個較高速運動的車牌,檢查攝像頭能否抓拍到多個車牌;
3.抓拍後,檢查系統識别車牌的時間是否在需求要求的時間内;
4.模拟大量抓拍照片同時交由系統處理,檢查一定壓力下系統能否正常識别車牌;
5.模拟大量車牌同時上傳,檢查一定壓力下能否上傳成功。
三、安全性測試
1.檢查是否能夠通過給車牌加裝飾物等方法,使攝像頭無法抓拍或抓拍後系統無法正常識别車牌。
27.如果做一個杯子的檢測,你如何測試
1.功能
(1)水倒水杯容量的一半
(2)水倒規定的安全線
(4)水杯容量刻度與其他水杯一緻
(5)蓋子擰緊水倒不出來
(6)燙手驗證
2.性能
(1)使用最大次數或時間
(2)掉地上不易損壞
(3)蓋子擰到什麼程度水倒不出來
(4)保溫時間長
(5)杯子的耐熱性
(6)杯子的耐寒性
(7)長時間放置水不會漏
(8)杯子上放置重物達到什麼程度杯子會被損壞
3.界面
(1)外觀完整、美觀
(2)大小與設計一樣(高、寬、容量、直徑)
(3)拿着舒服
(4)材質與設計一樣
(5)杯子上的圖案掉落
(6)圖案遇水溶解
4.安全
(1)杯子使用的材質毒或細菌的驗證
(2)高溫材質釋放毒性
(3)低溫材質釋放毒性
5.易用性
(1)倒水友善
(2)喝水友善
(3)攜帶友善
(4)使用簡單,容易操作
(5)防滑措施
6.相容性
(1)杯子能夠容納果汁、白水、酒精、汽油等。
7.震動測試
(1)杯子加包裝(有填充物),六面震動,檢查産品是否能應對鐵路/公路/航空運輸。
8.可移植性
(1)杯子在不同地方、溫度環境下都可以正常使用。
28.如何對一個頁面進行測試
1、UI測試:頁面布局、頁面樣式檢查、控件長度是否夠長;顯示時,是否會被截斷;支援的快捷鍵,Tab鍵切換焦點順序正确性等。
2、功能測試:頁面上各類控件的測試範圍,測試點。結合控件的實際作用來補充檢查點: 比如, 密碼框是否*顯示, 輸入是否做trim處理等。
3、安全測試:輸入特殊字元,sql注入,腳本注入測試。背景驗證測試,對于較重要的表單 ,繞過js檢驗背景是否驗證;資料傳輸是否加密處理,比如, 直接請求轉發,位址欄直接顯示發送字元串?
4、相容性測試
5、性能測試
29.請問你有沒有寫過web測試,怎麼寫的?
Web測試主要從下面幾個大方向考慮
功能測試,主要做連結測試,表單測試,cookies測試,設計語言測試等
性能測試,考慮連接配接速度測試,以及負載測試,例如:Web應用系統能允許多少個使用者同時線上?如果超過了這個數量,會出現什麼現象?Web應用系統能否處理大量使用者對同一個頁面的請求?還有壓力測試
可用性測試,比如導航測試,圖形測試,内容測試,整體界面測試等
相容性測試,市場上有很多不同的作業系統類型,最常見的有Windows、Unix、Macintosh、Linux等。Web應用系統的最終使用者究竟使用哪一種作業系統,取決于使用者系統的配置。這樣,就可能會發生相容性問題,同一個應用可能在某些作業系統下能正常運作,但在另外的作業系統下可能會運作失敗。是以,在Web系統釋出之前,需要在各種作業系統下對Web系統進行相容性測試。
安全性測試,
(1)現在的Web應用系統基本采用先注冊,後登陸的方式。是以,必須測試有效和無效的使用者名和密碼,要注意到是否大小寫敏感,可以試多少次的限制,是否可以不登陸而直接浏覽某個頁面等。
(2)Web應用系統是否有逾時的限制,也就是說,使用者登陸後在一定時間内(例如15分鐘)沒有點選任何頁面,是否需要重新登陸才能正常使用。
(3)為了保證Web應用系統的安全性,日志檔案是至關重要的。需要測試相關資訊是否寫進了日志檔案、是否可追蹤。
(4)當使用了安全套接字時,還要測試加密是否正确,檢查資訊的完整性。
(5)伺服器端的腳本常常構成安全漏洞,這些漏洞又常常被黑客利用。是以,還要測試沒有經過授權,就不能在伺服器端放置和編輯腳本的問題。
30.請問你遇到過哪些印象深刻的bug,接口測試出現bug的原因有哪些?
接口測試常見的bug有以下幾個:
特殊值處理不當導緻程式異常退出或者崩潰
類型邊界溢出,導緻資料獨處和寫入不一緻
取值邊界外未傳回正确的錯誤資訊
權限未處理,可以通路其他使用者的資訊
邏輯校驗不完善,可以利用漏洞擷取非正當利益
狀态處理不當,導緻邏輯出現錯誤
數組類型item個數為0或者item重複時程式異常退出
31.你在做項目中有做過壓力測試嗎,怎麼做
1、首先對要測試的系統進行分析,明确需要對那一部分做壓力測試,比如秒殺,支付
2、如何對這些測試點進行施壓
第一種方式可以通過寫腳本産生壓力機器人對伺服器進行發包收報操作
第二點借助一些壓力測試工具比如Jmeter,LoadRunner
3、如何對這些測試點進行正确的施壓
需要用壓力測試工具或者其他方法錄制腳本,模拟使用者的操作
4、對測試點設計多大的壓力比較合适?
需要明确壓力測試限制的數量,即使用者并發量
5、測試結束後如何通過這些資料來定位性能問題
通過測試可以得到吞吐量,平均響應時間等資料,這個資料的背後是整個背景處理邏輯綜合作用的結果,這時候就可以先關注系統的CPU,記憶體,然後對比吞吐量,平均響應時間達到瓶頸時這些資料的情況,然後就能确認性能問題是系統的哪一塊造成的
32.請問你在項目中關于功能測試和接口測試是怎麼做的
功能測試:
首先制定測試計劃,然後進行測試設計,将在測試計劃階段指定的測試活動分解,進而細化,為若幹個可執行程式的子測試過程,然後執行測試,按照測試計劃使用測試用例對待測項目進行逐一的,詳細的排查分析評估,最後對測試結果進行統計和分析,
接口測試也是屬于功能測試,是以跟我們以往的功能測試流程并沒有太大差別,測試流程依舊是:1.測試接口文檔(需求文檔) 2.根據接口文檔編寫測試用例(用例編寫完全可以按照以往規則來編寫,例如等價類劃分,邊界值等設計方法)3. 執行測試,檢視不同的參數請求,接口的傳回的資料是否達到預期。
33.python怎麼打開檔案?
Python打開檔案f = open('your_file.txt','r')
就可以打開一個檔案進行操作。第二個參數為對檔案的操作方式,’w’是寫檔案,已存在的同名檔案會被清空,不存在則會建立一個;’r’是讀取檔案,不存在會報錯;’a’是在檔案尾部添加内容,不存在會建立檔案,存在則直接在尾部進行添加;還有’wb’是寫二進制檔案;’rb’是讀取二進制檔案,比如圖檔之類的。
34.請你說一說http和https差別
HTTPS和HTTP的差別主要如下:
1、https協定需要到ca申請證書,一般免費證書較少,因而需要一定費用。
2、http是超文本傳輸協定,資訊是明文傳輸,https則是具有安全性的ssl加密傳輸協定。
3、http和https使用的是完全不同的連接配接方式,用的端口也不一樣,前者是80,後者是443。
4、http的連接配接很簡單,是無狀态的;HTTPS協定是由SSL+HTTP協定建構的可進行加密傳輸、身份認證的網絡協定,比http協定安全。
35.請你說一說get和post差別
1.get是從伺服器上擷取資料,post是向伺服器傳送資料。
2.get是把參數資料隊列加到送出表單的ACTION屬性所指的URL中,值和表單内各個字段一一對應,在URL中可以看到。post是通過HTTP...
3.對于get方式,伺服器端用Request.QueryString擷取變量的值,對于post方式,伺服器端用Request.Form擷取...
4.get傳送的資料量較小,不能大于2KB。post傳送的資料量較大,一般被預設為不受限制。但理論上,IIS4中最大量為80KB,IIS5...
5.get安全性非常低,post安全性較高。但是執行效率卻比Post方法好。
36.請你說一下tcp與udp的差別,
TCP和UDP差別在于:
1、TCP提供面向對象的連接配接,通信前要建立三次握手機制的連接配接,UDP提供無連接配接的傳輸,傳輸前不用建立連接配接
2、TCP提供可靠的,有序的,不丢失的傳輸,UDP提供不可靠的傳輸
3、TCP提供面向位元組流的傳輸,它能将資訊分割成組,并在接收端将其充足,UDP提供面向資料報的傳輸,沒有分組開銷
4、TCP提供擁塞控制,流量控制機制,UDP沒有
37.請你說說HTTP狀态碼
1xx表示請求已收到繼續處理,
2xx表示成功,
3xx表示資源重定向,
4xx表示用戶端請求出錯,
5xx表示伺服器端出錯
38.請你說一下tcp/ip四層網絡協定
TCP/IP四層網絡協定分别是應用層,網絡層,傳輸層,資料鍊路層
39.請你介紹下session
Session:在web開發中,伺服器可以為每個使用者建立一個會話對象(session對象),預設情況下一個浏覽器獨占一個session對象,是以在需要儲存使用者資料時,伺服器程式可以把使用者資料寫到使用者浏覽器獨占的session中,當使用者使用浏覽器通路其他程式時,其他程式可以從使用者的session中取出該使用者的資料,為使用者服務,其實作原理是伺服器建立session出來後,會把session的id号,以cookie的形式回寫給客戶機,這樣隻要客戶機的浏覽器不關,再去通路伺服器時,都會帶着session的id号去,伺服器發現客戶機浏覽器帶session id過來了,就會使用記憶體中與之對應的session服務。
40.Session和cookie的差別:
1、cookie是把使用者的資料寫給使用者浏覽器
2、session是把使用者的資料寫到使用者獨占的session中
3、session對象由伺服器建立,開發人員可以調用request對象的getsession方法得到session對象
41.請你寫一下mysql删除語句
1.drop語句。可以用來删除資料庫和表。
用drop語句來删除資料庫:drop database db;
用drop語句來删除表:drop table tb;
2.delete語句。用來删除表中的字段。
delete from tb where id=1;
如果delete語句中沒有加入where就會把表中的所有記錄全部删除:
3.用truncate來删除表中的所有字段:
truncate table tb;
42.Python3 程序、線程
線程是依附在程序裡面的,沒有程序就沒有線程
一個程序預設提供一條線程,程序可以建立多個線程
一個線程裡面可以有多個協程
程序之間不共享全局變量
線程之間共享全局變量,需要注意資源競争的問題。解決手段:互斥鎖或線程同步
建立程序的資源開銷要比建立線程的資源開銷大
程序是作業系統資源配置設定的基本機關,線程是CPU排程的基本機關
線程不能夠獨立執行,必須依存在程序中
多程序開發比單程序多線程開發穩定性要強
多程序、多線程根據CPU核數不一樣可能是并行的,但是協程是在一個線程中執行的,是以是并發的