乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      記一次面試經(jīng)歷 · TesterHome

       huowufenghuang 2019-02-15

      背景

      2018年的冬天很冷,整個行業(yè)都不景氣,很多公司面臨裁員、倒閉。我們公司也沒能逃過此劫,公司融資不到位欠薪2個月,實在沒有辦法,樓主也開始加入找工作的大軍。在招聘網(wǎng)站上投了好幾個自己感興趣的公司,也僅僅收到一個面試邀請,面試結(jié)果也不理想,被刷了。在這里給大家分享下面試題。

      面試題

      面試主要考察了以下幾個方面:

      • 對敏捷開發(fā)的理解
      • 測試流程
      • BUG管理
      • 用例設(shè)計
      • UI自動化,接口自動化
      • 持續(xù)集成
      • 算法題
      • Linux命令
      • 性能測試

      回答

      1. 對敏捷開發(fā)的理解

      雖然目前公司處于敏捷開發(fā)的模式中,但平時自己也只是服從公司的流程,沒有仔細去思考過敏捷開發(fā)。所以這個問題回答的也不好。

      維基百科: 敏捷軟件開發(fā)(英語:Agile software development),又稱敏捷開發(fā),是一種從1990年代開始逐漸引起廣泛關(guān)注的一些新型軟件開發(fā)方法,是一種應(yīng)對快速變化的需求的一種軟件開發(fā)能力。它們的具體名稱、理念、過程、術(shù)語都不盡相同,相對于“非敏捷”,更強調(diào)程序員團隊與業(yè)務(wù)專家之間的緊密協(xié)作、面對面的溝通(認為比書面的文檔更有效)、頻繁交付新的軟件版本、緊湊而自我組織型的團隊、能夠很好地適應(yīng)需求變化的代碼編寫和團隊組織方法,也更注重軟件開發(fā)過程中人的作用。

      個人理解:

      • 實施敏捷開發(fā)的流程:要去所有人參加需求評審,功能分卡,估點,每日站會,迭代回顧

      • 為了能夠響應(yīng)快速變化的需求或頻繁的交付,必須依賴完善的自動化工具鏈,從單元測試---接口自動化---UI自動化---部署---線上監(jiān)控 整套的流程實現(xiàn)自動化

      • 測試驅(qū)動開發(fā),在編寫功能實現(xiàn)代碼前編寫單元測試代碼(實施上來講比較困難,開發(fā)能夠完成單元測試就不錯了)

      • 持續(xù)集成,原則是盡量使用master分支進行開發(fā),頻繁地集成,即使編譯報錯也能夠迅速定位修復(fù)。杜絕多分支的開發(fā)方式,合并分支是一個繁瑣的工作,容易產(chǎn)生眾多沖突問題,對測試也增加了工作量

      • 注重面對面的溝通,減少冗余的文檔

      • 重構(gòu)貫穿整個開發(fā)流程,每次check代碼時對代碼進行重構(gòu),使代碼盡量簡單,優(yōu)美,可擴展,完善的單元測試是你重構(gòu)的保障

      • 定時進行Code Review

      2. 測試流程和BUG管理

      根據(jù)自己公司實際情況回答

      3. UI自動化和接口自動化

      • 簡單的問了下框架的架構(gòu)

      • UI自動化怎么處理界面展示延遲的問題?
        Robotium查找元素默認20s等待時間

      • HTTP常見狀態(tài)碼

      • 接口自動化中怎么測試重定向的接口?(記不清了)
        不懂。這個沒答上來

      4. 持續(xù)集成

      • 自動化測試多久構(gòu)建一次?如何搭建jenkins?代碼管理使用的是什么?jenkins上如何配置ssh的方式從git拉取代碼?

      5. 算法題

      題目:完成一個函數(shù),實現(xiàn)功能為判斷一個字符串是否是一個合法的ip地址
      輸入:任意字符串
      輸出:如果是一個合法ip地址,返回true;否則,返回false
      舉例:輸入10.0.0.1,輸出true;輸入aaaa,輸出false
      要求:
      1.可以用c/c++/java/php/python等任意熟悉語言,但不能使用正則表達式等已有算法;
      2.根據(jù)等價類和邊界值劃分等測試方法,對寫好的代碼羅列出測試點并完成單元測試用例的代碼部分

      分析:此題考察了基本網(wǎng)絡(luò)知識,代碼能力,用例設(shè)計能力

      合法IP地址當(dāng)時寫的是0.0.0.0~255.255.255.255 其實錯了,應(yīng)該是1.0.0.0~255.255.255.255

      0.0.0.0表示的是所有IP的一個集合,不算真正意義上的IP地址


      import unittest

      # 舉例:輸入10.0.0.1,輸出true;輸入aaaa,輸出false
      # 1.0.0.0 ~ 255.255.255.255

      def assert_ip(ip_str):

      # 字符串切割
      ip_list = ip_str.strip().split('.')
      if len(ip_list) != 4:
      print('列表元素不等于4')
      return False
      try:
      # 0開始的IP不合法
      if int(ip_list[0]) == 0:
      print('以0開始不合法')
      return False
      for ip in ip_list:
      if len(ip) > 1 and ip.startswith('0'):
      print('長度大于1不能以0開始')
      return False
      if 0 <= int(ip) <= 255:
      pass
      else:
      print('大小不在0-255')
      return False
      except Exception as e:
      print(e)
      return False
      return True


      class TestIp(unittest.TestCase):

      def test_01(self):
      ip1 = '10.0.0.1'
      self.assertTrue(assert_ip(ip1))

      def test_02(self):
      ip2 = '0.0.0.0'
      self.assertFalse(assert_ip(ip2))

      def test_03(self):
      ip3 = '255.255.255.255'
      self.assertTrue(assert_ip(ip3))

      def test_04(self):
      ip4 = '255.255.255.256'
      self.assertFalse(assert_ip(ip4))

      def test_05(self):
      ip5 = '0.0.0.1'
      self.assertFalse(assert_ip(ip5))

      def test_06(self):
      ip6 = '-1.2.3.4'
      self.assertFalse(assert_ip(ip6))

      def test_07(self):
      ip7 = ''
      self.assertFalse(assert_ip(ip7))

      def test_08(self):
      ip8 = '0.2.11'
      self.assertFalse(assert_ip(ip8))

      def test_09(self):
      ip9 = '10.0.0.0.1'
      self.assertFalse(assert_ip(ip9))

      def test_10(self):
      ip10 = 'aa.bb.cc.dd'
      self.assertFalse(assert_ip(ip10))

      def test_11(self):
      ip11 = '1 192.168.1.1 '
      self.assertFalse(assert_ip(ip11))

      def test_12(self):
      ip12 = '1.00.0.0'
      self.assertFalse(assert_ip(ip12))

      def test_13(self):
      ip13 = 'aaaaa'
      self.assertFalse(assert_ip(ip13))

      if __name__ == '__main__':

      unittest.main()

      單元測試點:

      1. IP不含字符’ . ’
      2. IP切割字符串后列表大小 =4 < 4 >4 的三種情況
      3. 字符串中包含空格(左右空格,中間空格)
      4. 輸入字符串為空
      5. 輸入合法IP 10.0.0.1
      6. 輸入合法IP 1.0.0.0
      7. 輸入合法IP 255.255.255.255
      8. 輸入非法IP 0.0.0.1
      9. 輸入非法IP 255.255.255.256
      10. 輸入非法IP -1.2.3.4
      11. 輸入字符串中包含非數(shù)字aa.10.11.dd
      12. 輸入特殊字符串 .@ddj.%^&111.1.
      13. 輸入非法IP 172.16.01.06

      面試官又讓我分析unittest源碼...我表示沒看過...GG(我簡歷可沒寫精通unittest~~~)

      于是又讓我用正則表達來寫,心中一群草泥馬飄過,雖說平時會使用正則,但都是百度現(xiàn)成的,真要自己寫都點難度。。。

      網(wǎng)上找的:

      ^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$


      import re

      def assert_ip_by_re(ip_str):
      pattern = '^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.' \
      '(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.' \
      '(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.' \
      '(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$'
      re_compile = re.compile(pattern)
      if re_compile.match(ip_str):
      return True
      else:
      return False
      • 拓展 使用第三方庫IPy

      注意:IPy不會處理0.0.0.0這種IP,認為是合法的。類似 198.01.003.001 這種輸入,會自動舍去前面的0,也認為是合法的。


      import IPy

      def assert_ip(address):
      try:
      IPy.IP(address)
      return True
      except Exception as e:
      return False

      6. Linux命令

      • 打印日志文件所有有username的行

      cat xxx.log | gerp 'username' 忽略大小寫cat xxx.log | gerp -i 'username'

      • 獲取當(dāng)前目錄下占用磁盤空間最大的3個文件或目錄

      當(dāng)時沒寫出來,只知道可以用ls head命令,平時用sort命令太少了

      ls -al | sort -rnk 5 | head -3

      sort -n是按照數(shù)字大小排序,-r是以相反順序,-k是指定需要排序的欄位,-t指定欄位分隔符(不寫默認是空格和\t)

      • 查看CPU 內(nèi)存占用命令

      top

      • adb常用命令

      7. 性能測試

      沒做過,略

      8. 用例設(shè)計

      對客戶端重構(gòu)登錄模塊進行用例設(shè)計,只有用戶名,密碼和登錄。不考慮其他功能。

      這個題雖然簡單,但我答得沒條理,上來就開始陳述我的測試用例,只考慮了功能方面,沒有養(yǎng)成多維度系統(tǒng)得用例設(shè)計習(xí)慣,估計也是這個原因面試掛了。。。
      重新整理用例:

      • 功能性
        輸入框的字符長度限制、特殊字符處理、密碼輸入顯示*、不輸入用戶名和密碼點擊登錄是否調(diào)用接口?只輸入用戶名、只輸入密碼?錯誤用戶名、錯誤密碼?登錄成功后是否有其他配置項拉???登錄按鈕防重按?

      • 安全性
        密碼是否加密傳輸?SQL注入?

      • 易用性
        錯誤提示是否友好?UI界面風(fēng)格?

      • 兼容性
        app升級后老用戶是否能登錄成功?新用戶登錄?

      總結(jié)

      從最近找工作發(fā)現(xiàn)測試的要求是越來越高了,需要會的技能也越來越多,功能、自動化、性能、安全、寫測試工具、測試平臺...甚至運維的活也要測試來干 - -! 只能說路漫漫其修遠兮~ 繼續(xù)找窩。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多