軟件測試面試-螞蟻金融

【螞蟻金服】javascript

1、自我介紹html

2、Tcp和udp:java

         https://images2015.cnblogs.com/blog/750327/201608/750327-20160822155942292-808499898.png

1.鏈路層(數據鏈路層/網絡接口層):包括操做系統中的設備驅動程序、計算機中對應的網絡接口卡web

2.網絡層(互聯網層):處理分組在網絡中的活動,好比分組的選路數據庫

3.運輸層:主要爲兩臺主機上的應用提供端到端的通訊編程

4.應用層:負責處理特定的應用程序細節瀏覽器


3、TCP三次握手和四次分手安全

三次握手服務器

  1. 客戶端發送SYN信號,表示告訴服務器,我要創建鏈接
  2. 服務器返回ACK=1和SYN=1給客戶端,表示我已經接收到了客戶端的請求,並接收了請求。
  3. 客戶端收到來自服務端響應後,知道服務端已經接受鏈接請求,再次發送ACK給服務器,確認服務端的SYN,其實也就是一個確認的再確認。

四次握手網絡

  1. 主動方A發送一個FIN(終止信號)給被動方B,表示要終結主動方A到被動方B的鏈接;
  2. 被動方B收到了FIN信號,返回ACK信號給主動方,表示從主動方到被動方的鏈接關閉了,也就是主動方不能再發送數據給被動方。
  3. 被動方B在發送完數據後,給主動方A發送一個FIN信號,請求要終結被動方B到主動方A的鏈接;

主動方A收到了FIN信號,返回ACK信號給被動方B,表示從被動方B到主動方A的鏈接關閉了,也就是被動方不能再發送數據給主動方


4、Dns的做用

DNS(Domain Name System,域名系統),萬維網上做爲域名和IP地址相互映射的一個分佈式數據庫,可以使用戶更方便的訪問互聯網,而不用去記住可以被機器直接讀取的IP數串

DNS系統:經過域名,最終獲得該域名對應的IP地址的過程叫作域名解析(或主機名解析),DNS協議運行在UDP協議之上,使用端口號53
5、接口和抽象類的區別

一、接口

接口是抽象方法的集合。若是一個類實現了某個接口,那麼它就繼承了這個接口的抽象方法。這就像契約模式,若是實現了這個接口,那麼就必須確保使用這些方法。接口只是一種形式,接口自身不能作任何事情

二、抽象類

抽象類是用來捕捉子類的通用特性的 。它不能被實例化,只能被用做子類的超類。抽象類是被用來建立繼承層級裏子類的模板


6、怎麼理解測試這項工做的

就是利用測試工具按照測試方案和流程對產品進行功能和性能測試,甚至根據須要編寫不一樣的測試工具,設計和維護測試系統,對測試方案可能出現的問題進行分析和評估。執行測試用例後,須要跟蹤故障,以確保開發的產品適合需求。使用人工或者自動手段來運行或測試某個系統的過程,其目的在於檢驗它是否知足規定的需求或弄清預期結果與實際結果之間的差異


7、Qtp怎麼使用的

QTP:QuickTest Professional,關鍵字驅動(如控件)的功能測試工具,可以對各類編程語言開發的軟件進行功能測試,能夠用VBScript腳本語言編寫程序

執行計劃的步驟

建立測試腳本:按照計劃錄製腳本並保存

加強測試腳本

執行測試

分析測試結果

http://www.javashuo.com/article/p-caweufbh-ga.html


8、寫測試用例

測試用例主要由8部分構成:所屬的模塊、名稱、編號、等級、描述、預製條件、操做步驟、預期結果


9、Linux

經常使用命令:


10、軟件測試裏的元素定位

非xPath方式和xPath方式
11、TestNG怎麼使用???

一、Selenium是瀏覽器自動化工具,主要用來Web的自動化測試

TestNG是一個設計用來簡化普遍的測試需求的測試框架

編寫測試的過程:

編寫測試的業務邏輯並在代碼中插入TestNG Annotation

將測試信息添加到testng.xml文件或者build.xml中

運行TestNG

注:TestNG設計的出發點,不只僅是單元測試,並且能夠用於集成測試。設計目標的不一樣,對比junit的只適合用於單元測試

二、測試信息尤爲是測試數據再也不寫死在測試代碼中,好處就是修改測試數據時不須要修改代碼/編譯了,從而有助於將測試人員引入單元測試/集成測試

三、註解:

@BeforeSuite: 被註釋的方法將在全部測試運行前運行
@AfterSuite:被註釋的方法將在全部測試運行後運行
@BeforeTest: 被註釋的方法將在測試運行前運行
@AfterTest: 被註釋的方法將在測試運行後運行
@BeforeGroups: 被配置的方法將在列表中的gourp前運行。這個方法保證在第一個屬於這些組的測試方法調用前當即執行。
@AfterGroups: 被配置的方法將在列表中的gourp後運行。這個方法保證在最後一個屬於這些組的測試方法調用後當即執行。
@BeforeClass: 被註釋的方法將在當前類的第一個測試方法調用前運行。
@AfterClass: 被註釋的方法將在當前類的全部測試方法調用後運行。
@BeforeMethod: 被註釋的方法將在每個測試方法調用前運行。
@AfterMethod: 被註釋的方法將在每個測試方法調用後運行。
屬性:
@alwaysRun 對於每一個bufore方法(beforeSuite, beforeTest, beforeTestClass 和 beforeTestMethod, 可是不包括 beforeGroups)

若是設置爲true,被配置的方法將老是運行而無論它屬於哪一個組。

對於after方法(afterSuite, afterClass, ...): 若是設置爲true,被配置的方法甚至在一個或多個先調用的方法失敗或被忽略時也將運行。
@dependsOnGroups 這個方法依賴的組列表
@dependsOnMethods 這個方法依賴的方法列表
@enabled 這個類的方法是否激活
@groups 這個類或方法所屬的分組列表
@inheritGroups 若是設置爲true,這個方法被屬於在類級別被@Test annotation指定的組
@DataProvider 標記一個方法用於爲測試方法提供數據。

被註釋的方法必須返回Object[][], 其中每一個Object[]能夠指派爲這個測試方法的參數列表。從這個DataProvider接收數據@Test方法須要使用一個和當前註釋相同名稱的dataProvider名稱

@name 這個DataProvider的名稱
@Factory 標記方法做爲一個返回對象的工廠,這些對象將被TestNG用於做爲測試類。這個方法必須返回Object[]
@Parameters描述如何傳遞參數給@Test方法

value 用於填充這個方法的參數的變量列表
@Test 標記一個類或方法做爲測試的一部分
@ alwaysRun 若是設置爲true,這個測試方法將老是運行,甚至當它依賴的方法失敗時
@ dataProvider 這個測試方法的data provider的名稱
@ dataProviderClass 用於查找data provider的類。
 若是不指定,將在當前測試方法所在的類或者它的基類上查找data provider。
 若是這個屬性被指定, 則data provider方法須要是指定類的static方法。
@ dependsOnGroups 當前方法依賴的組列表
@ dependsOnMethods 當前方法依賴的方法列表
@ description 當前方法的描述
@ enabled 當前類的方法/方法是否被激活
@ expectedExceptions 測試方法指望拋出的異常列表。若是沒有異常或者拋出的不是列表中的任何一個,當前方法都將標記爲失敗.
@ groups 當前類/方法所屬的組列表
@ invocationCount 當前方法被調用的次數
@ successPercentage 當前方法指望的成功率
@ sequential 若是設置爲true,當前測試類上的全部方法保證按照順序運行。甚至測試們在parallel="true"的狀況下.
@ 這個屬性只能用於類級別,若是用於方法級別將被忽略。
@ timeOut 當前方法允許花費的最大時間,單位毫秒。
@ threadPoolSize 當前方法的線程池大小。方法將被多線程調用,次數由invocationCount參數指定

注意:若是invocationCount沒有指定則這個屬性將被忽略

https://blog.csdn.net/lykangjia/article/details/56485295

 

12、事務(DB)

四大特性:數據庫事務(Database Transaction) ,是指做爲單個邏輯工做單元執行的一系列操做,要麼徹底地執行,要麼徹底地不執行。原子性:指事務包含的全部操做要麼所有成功,要麼所有失敗回滾

  1. 一致性:指事務必須使數據庫從一個一致性狀態變換到另外一個一致性狀態,也就是說一個事務執行以前和執行以後都必須處於一致性狀態。
  2. 隔離性:當多個用戶併發訪問數據庫時,好比操做同一張表時,數據庫爲每個用戶開啓的事務,不能被其餘事務的操做所幹擾,多個併發事務之間要相互隔離。
  3. 持久性:指一個事務一旦被提交了,那麼對數據庫中的數據的改變就是永久性的,即使是在數據庫系統遇到故障的狀況下也不會丟失提交事務的操做。

事務

不考慮事務的隔離性,會發生的幾種問題:

  1. 髒讀:指在一個事務處理過程當中讀取了另外一個未提交的事務中的數據
  2. 不可重複讀:指在對於數據庫中的某個數據,一個事務範圍內屢次查詢卻返回了不一樣的數據值,這是因爲在查詢間隔,被另外一個事務修改並提交了
  3. 虛讀(幻讀)

事務非獨立執行時發生的一種現象。例如事務T1對一個表中全部的行的某個數據項作了從「1」修改成「2」的操做,這時事務T2又對這個表中插入了一行數據項,而這個數據項的數值仍是爲「1」而且提交給數據庫。

MySQL數據庫爲咱們提供的四種隔離級別:

① Serializable (串行化):可避免髒讀、不可重複讀、幻讀的發生。

② Repeatable read (可重複讀):可避免髒讀、不可重複讀的發生。

③ Read committed (讀已提交):可避免髒讀的發生。

④ Read uncommitted (讀未提交):最低級別,任何狀況都沒法保證

 


十3、假如你如今來測試登錄這個模塊的話,你怎麼測試

(1)基本功能測試點

  1. 輸入正確的用戶名和密碼登陸成功
  2. 輸入錯誤的用戶名密碼登陸失敗
  3. 用戶名正確,密碼錯誤,是否提示輸入密碼錯誤?
  4. 用戶名錯誤,密碼正常,是否提示輸入用戶名錯誤?
  5. 用戶名和密碼都錯誤,是否有相應提示?
  6. 用戶名密碼爲空時,是否有相應提示?
  7. 若是用戶未註冊,提示請先註冊,而後進行登陸
  8. 已經註銷的用戶登陸失敗,提示信息友好?
  9. 密碼框是否加密顯示?
  10. 用戶名是否支持中文、特殊字符?
  11. 用戶名是否有長度限制?
  12. 密碼是否支持中文,特殊字符?
  13. 密碼是否有長度限制?
  14. 密碼是否區分大小寫?
  15. 密碼爲一些簡單經常使用字符串時,是否提示修改?如:123456
  16. 密碼存儲方式?是否加密?
  17. 登陸功能是否須要輸入驗證碼?
    1. 驗證碼有效時間?
    2. 驗證碼輸入錯誤,登陸失敗,提示信息是否友好?
    3. 輸入過時的驗證可否登陸成功?
    4. 驗證碼是否容易識別?
    5. 驗證碼換一張功能是否可用?點擊驗證碼圖片是否能夠更換驗證碼?
  18. 用戶體系:好比系統分普通用戶、高級用戶,不一樣用戶登陸系統後可的權限不一樣。
  19. 若是使用第三方帳號(QQ,微博帳號)登陸,那麼第三方帳號與本系統的帳號體系對應關係如何保存?首次登陸須要極權等

(2)頁面測試

  1. 登陸頁面顯示是否正常?文字和圖片可否正常顯示,相應的提示信息是否正確,按鈕的設置和排列是否正常,頁面是否簡潔壯觀等。
  2. 頁面默認焦點是否認位在用戶名的輸入框中
  3. 首次登陸時相應的輸入框是否爲空?或者若是有默認文案,當點擊輸入框時默認方案是否消失?
  4. 相應的按鈕如登陸、重置等,是否可用;頁面的前進、後退、刷新按鈕是否可用?
  5. 快捷鍵Tab,Esc,Enter 等,可否控制使用
  6. 兼容性測試:不一樣瀏覽器,不一樣操做系統,不一樣分辨率下界面是否正常

(3)安全測試

  1. 不登陸:瀏覽器中直接輸入登陸後的地址,看是否能夠直接進入
  2. 登陸成功後生成的Cookie,是不是httponly (不然容易被腳本盜取)
  3. 用戶名和密碼是否經過加密的方式,發送給Web服務器 
  4. 用戶名和密碼的驗證,應該是用服務器端驗證, 而不能單單是在客戶端用javascript驗證
  5. 用戶名和密碼的輸入框,應該屏蔽SQL 注入攻擊
  6. 用戶名和密碼的的輸入框,應該禁止輸入腳本 (防止XSS攻擊)
  7. 錯誤登錄的次數限制(防止暴力破解)
  8. 考慮是否支持多用戶在同一機器上登陸;
  9. 考慮一用戶在多臺機器上登陸
  1. 性能測試
  1. 單用戶登陸系統的響應時間是否符合"3-5-8"原則
  2. 用戶數在臨界點時併發登陸是否還能符合"3-5-8"原則
  3. 壓力:大量併發用戶登陸,系統的響應時間是多少?系統會出現宕機、內存泄露、cpu飽和、沒法登陸嗎?
  4. 穩定性: 系統可否處理併發用戶數在臨界點之內連續登陸N個時的場景?
  1. 其餘測試
  1. 連續輸入3次或以上錯誤密碼,用記是否被鎖必定時間(如:15分鐘)?時間內不容許登陸,超出時間點是否能夠繼續登陸。
  2. 用戶session過時後,從新登陸是否還能從新返回這前session過時的頁面?
  3. 用戶名和密碼輸入框是事支持鍵盤快捷鍵?如:撤銷、複製、粘貼等等
  4. 是否容許同名用戶同時登陸進行操做?考慮web和app同時登陸
  5. 手機登陸時,是否先判斷網絡可用?
  6. 手機登陸時,是否先判斷app存在新版本?
  7. 是否支持單點登陸?
  8. 是否有埋點接口

十4、你是測試工程師,如何保證軟件的質量

從兩個角度:1.質量是全員質量,公司每一個成員都有責任參與質量保證。2.從測試角度來保證質量,測試也分爲多個層次。

一、質量管理

(1)代碼質量:開發經過單元測試保證

(2)讓用戶參與UAT測試,保證用戶體驗(使用質量)

(3)引入QA,保存過程環節質量

(4)系統測試工程師保證系統質量知足需求

二、質量保證

(1)測試策略:質量是多維度的,功能測試、性能測試、兼容性測試等多種測試類型的結合

(2)用例質量:採用合適的用例方法,如何進行需求分析,用例評審

(3)執行質量:如何保證執行深度(界面、關聯模塊、數據庫、日誌)與廣度(系統測試類型

(4)缺陷質量:Bug評審,引入合適的Bug流程

(5)過程質量:合理的軟件測試流程,測試過程監控

相關文章
相關標籤/搜索