<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] <details> <summary>一、為什么要做接口測試?</summary> <br /> 到底什么是接口測試,我們為什么要做接口測試?這是很多初入行的小伙伴的一個疑問,講理論的你可能看不進去,接下來講個實際案例,如下圖一個提現功能 ![](https://box.kancloud.cn/f5521d47d7f95cd18b6df1eaab4e5edc_358x225.png) 比如這個輸入框,平常拿到這個web頁面,會對輸入框做用例設計: * 輸入一個負數(如:-100),點提交 * 輸入金額為0(如:0),點提交 * 輸入金額為0-100的數(如:20),點提交 * 輸入金額為100(如:100),點提交 * 輸入金額大于100(如:108),點提交 * 輸入1位小數(如:10.1),點提交 * 輸入2位小數(如:10.12),點提交 * 輸入3位小數(如:10.123),點提交 按照這個等價類,邊界值用例測完,頁面上不能輸入負數和大于3位數小數點,然后就可以上線了。 然而。。。突然有一天數據庫里面插入了一個提現金額為負數(-100),于是整個部門炸鍋了,首先找到測試(背鍋)去復現問題,測試在頁面上反復輸入負數,無法提交,認為沒問題啊! 首先前端開發對輸入框是做了限制的,前端的web開發肯定沒問題,這個鍋前端開發MM不背。那么如果別人用戶不通過你的web頁面,直接發請求提交了呢? 納尼!!!不通過頁面也能提交。。。這就是我們接下來要提到的接口測試了。 </details> <br /> <details> <summary>二、你平常做接口測試的過程中發現過哪些bug?</summary> <br /> 這個問題其實回到起來很簡單,只要做過接口測試的,總能發現幾個BUG吧,把你平常發現的bug說2-3個就可以了。 面試官出這個題,主要是想知道你是不是真的做過接口測試,畢竟現在很多小伙伴簡歷都是寫的假的(你要不寫估計面試機會都沒有,沒辦法,為了生存,能理解) 比如上面說的,提現輸入框,在頁面上輸入負數,肯定是無法提交過去(前端頁面會判斷金額),如果我不走前端,直接用接口工具發請求,輸入一個負數過去。 (假設服務端沒做提現金額數據判斷) 余額=當前余額(100)-提現金額(-100),那么提現-100,余額就變成200了,也就是越提現,余額越大了 **可以用接口工具去直接請求接口,也可以fiddler抓包,抓到接口后修改金額為負數** 所以,接口測試的必要性就體現出來了: 1.可以發現很多在頁面上操作發現不了的bug 2.檢查系統的異常處理能力 3.檢查系統的安全性、穩定性 4.前端隨便變,接口測好了,后端不用變 5.可以測試并發情況,一個賬號,同時(大于2個請求)對最后一個商品下單,或不同賬號,對最后一個商品下單 6.可以修改請求參數,突破前端頁面輸入限制(如金額) </details> <br /> <details> <summary>三、平常你是怎么測試接口的?</summary> <br /> **通過性驗證:** 首先肯定要保證這個接口功能是好使的,也就是正常的通過性測試,按照接口文檔上的參數,正常傳入,是否可以返回正確的結果。 **參數組合:** 現在有一個操作商品的接口,有個字段type,傳1的時候代表修改商品,商品id、商品名稱、價格有一個是必傳的,type傳2的時候是刪除商品, 商品id是必傳的,這樣的,就要測參數組合了,type傳1的時候,只傳商品名稱能不能修改成功,id、名稱、價格都傳的時候能不能修改成功。 **接口安全:** 1、繞過驗證,比如說購買了一個商品,它的價格是300元,那我在提交訂單時候,我把這個商品的價格改成3元,后端有沒有做驗證,更狠點,我把錢改成-3,是不是我的余額還要增加? 2、繞過身份授權,比如說修改商品信息接口,那必須得是賣家才能修改,那我傳一個普通用戶,能不能修改成功,我傳一個其他的賣家能不能修改成功 3、參數是否加密,比如說我登陸的接口,用戶名和密碼是不是加密,如果不加密的話,別人攔截到你的請求,就能獲取到你的信息了,加密規則是否容易破解。 4、密碼安全規則,密碼的復雜程度校驗 **異常驗證:** 所謂異常驗證,也就是我不按照你接口文檔上的要求輸入參數,來驗證接口對異常情況的校驗。比如說必填的參數不填,輸入整數類型的,傳入字符串類型,長度是10的,傳11,總之就是你說怎么來,我就不怎么來,其實也就這三種,必傳非必傳、參數類型、入參長度。 **性能測試:** 接口并發情況,如上面提到的:一個賬號,同時(大于2個請求)對最后一個商品下單,或不同賬號,對最后一個商品下單 接口響應時間,響應時間太長了,肯定需要優化,一般都是毫秒級別 ![](https://img.kancloud.cn/7a/2d/7a2d746eb19823ec70acba6305173d17_808x883.png) </details> <br /> <details> <summary>四、平常用什么工具測接口的</summary> <br /> **接口測試工具很多,首先postman** ![](https://img.kancloud.cn/5c/8a/5c8a249272c1b118f7b9533587a515f8_899x284.png) **其次用jmeter** ![](https://img.kancloud.cn/17/26/17269da26cbf0a89a0ce6c620ae42e3d_904x400.png) ![](https://img.kancloud.cn/45/e6/45e63c8f8393fd3363b01e396c7348de_907x203.png) </details> <br /> <details> <summary>五、webService接口是如何測試的</summary> <br /> **webService接口用SoapUI** ![](https://img.kancloud.cn/89/1d/891d85a4826b111638573f083fdccf9f_905x491.png) </details> <br /> <details> <summary>六、沒有接口文檔,如果做接口測試?</summary> asdsadasd </details> <br /> <details> <summary>七、在手工接口測試或者自動化接口測試的過程中,上下游接口有數據依賴如何處理?</summary> <br /> 沒有接口文檔,那還能咋辦,瞎測唄!一個公司的開發流程里面,如果接口文檔都沒有,是無法展開接口測試的,你都不知道這個接口干什么的,也不知道具體每個字段代表什么意思,那還測啥呢? --當然,你肯定不能回答面試官不測(心理mmp,臉上笑嘻嘻),接下來就是扯犢子時間 **1.沒有接口文檔,那就需要先跟開發溝通,然后整理接口文檔(本來是開發寫的,沒辦法,為了唬住面試官,先說自己整理了) 2.沒有接口文檔,可以抓包看接口請求參數,然后不懂的跟開發溝通** 本題主要靠情商,通俗來說就是忽悠能力,先唬住面試官了再說,進去了也是瞎測測,隨時做好背鍋的準備 </details> <br /> <details> <summary>八、在手工接口測試或者自動化接口測試的過程中,上下游接口有數據依賴如何處理?</summary> ``` 用一個全局變量來處理依賴的數據,比如登錄后返回token,其它接口都需要這個token, 那就用全局變量來傳token參數 ``` </details> <br /> <details> <summary>九、依賴于第三方數據的接口如何進行測試?</summary> <br /> 這個標準答案是:mock 接著面試官會問你,如果mock的,然后你就順著坑繼續挖,搭建mock服務,參考下面這篇【 mock-server之moco】\[【[https://www.cnblogs.com/yoyoketang/p/9348552.html】](https://www.cnblogs.com/yoyoketang/p/9348552.html%E3%80%91)\] * * * **前言** mock除了用在單元測試過程中,還有一個用途,當前端開發在開發頁面的時候,需要服務端提供API接口 此時服務端沒開發完成,或者說沒搭建測試環境,這個時候前端開發會自己mock一個api服務端,自己給自己提供調用接口的返回數據 mock-server用途就是開發在開發的過程中,需要依賴一部分的接口,但是對方沒有提供或者環境等等情況 **環境準備** * 1.moco-runner-0.12.0-standalone.jar * 2.java 版本1.8.0\_20 **Moco環境搭建** 1.moco是一個開源的框架,在github上可以下載到,[github源碼地址](https://github.com/dreamhead/moco) 目前最新版是moco-runner-0.12.0-standalone.jar,[【點這里下載】](http://central.maven.org/maven2/com/github/dreamhead/moco-runner/0.12.0/moco-runner-0.12.0-standalone.jar) 2.下載完成后,保存到電腦本地的一個目錄,然后在同一目錄下新建一個yoyo.json文件,里面寫入如下內容: ![](https://images2018.cnblogs.com/blog/1070438/201807/1070438-20180722214156818-1965096606.png) ~~~ [ { "response" : { "text" : "Hello World! yoyoketang" } } ] ~~~ 3.接下來啟動moco服務,打開moco-runner-0.12.0-standalone.jar所在的文件夾目錄(E:\\moco),地址欄左上角輸入cmd,回車打開cmd窗口 > java -jar moco-runner-0.12.0-standalone.jar http -p 6666 -c yoyo.json ![](https://images2018.cnblogs.com/blog/1070438/201807/1070438-20180722214502559-744357518.png) 出現如下結果就是啟動成功了 ~~~ E:\moco>java -jar moco-runner-0.12.0-standalone.jar http -p 6666 -c yoyo.json 22 七月 2018 21:44:36 [main] INFO Server is started at 6666 22 七月 2018 21:44:37 [main] INFO Shutdown port is 62459 ~~~ 4.打開火狐瀏覽器(谷歌瀏覽器貌似打不開)地址欄輸入:[http://localhost:6666/](http://localhost:6666/)看到如下界面,說明mock-server環境搭建成功 ![](https://images2018.cnblogs.com/blog/1070438/201807/1070438-20180722215306573-938017371.png) **遇到的問題** 1.剛開始jdk版本是1.6的,啟動一直報錯,報錯信息如下:Unsupported major.minor version 51.0 ![](https://images2018.cnblogs.com/blog/1070438/201807/1070438-20180722215359540-424925543.png) 2.百度搜了下,找到問題原因了,jdk版本和jar包不匹配導致。比如本機的JDK為1.6,但是項目編譯時用的JDK為1.7那么就會出現這個異常, 因為本機JDK版本較低不能執行編譯版本為高版本的Class文件,各JDK版本對應的錯誤編號如下: J2SE 8 = 52, J2SE 7 = 51, J2SE 6.0 = 50, J2SE 5.0 = 49, JDK 1.4 = 48, JDK 1.3 = 47, JDK 1.2 = 46, JDK 1.1 = 45 **官方文檔** 1.更多參考資料,查閱官方文檔,[【點這里查看官方文檔】](https://github.com/dreamhead/moco) ![](https://img.kancloud.cn/f8/a6/f8a60d8d9c63c232ad1f949689f2e4ca_1068x574.png) </details> <br /> <details> <summary>十、當一個接口出現異常時候,你是如何分析異常的?</summary> <br /> 1.抓包,用fiddler工具抓包,或者瀏覽器上f12,app上的話,那就用fiddler設置代理,去看請求報文和返回報文了 2.查看后端日志,xhell連上服務器,查看日志 </details> <br /> <details> <summary>十一、如何模擬弱網測試</summary> <br /> fiddler和charles都可以模擬弱網測試,平常說的模擬丟包,也是模擬弱網測試 </details> <br /> <details> <summary>十二、如何分析一個bug是前端還是后端的?</summary> <br /> 平常提bug的時候,前端開發和后端開發總是扯皮,不承認是對方的bug 這種情況很容易判斷,先抓包看請求報文,對著接口文檔,看請求報文有沒問題,有問題就是前端發的數據不對 請求報文沒問題,那就看返回報文,返回的數據不對,那就是后端開發的問題咯 </details> <br />
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看