<pre id="ff7yo"></pre>

      <form id="ff7yo"><legend id="ff7yo"></legend></form>
        <nav id="ff7yo"><listing id="ff7yo"></listing></nav><nav id="ff7yo"></nav>

        <nav id="ff7yo"><listing id="ff7yo"></listing></nav>
        <small id="ff7yo"></small><nav id="ff7yo"><dd id="ff7yo"></dd></nav>
      1. <nav id="ff7yo"></nav>
          <form id="ff7yo"></form><nav id="ff7yo"></nav>
          <nav id="ff7yo"></nav>
          <sub id="ff7yo"></sub>
          更多課程 選擇中心

          軟件測試培訓
          達內IT學院

          400-111-8989

          如何把一個小功能做到沒有bug?

          • 發布:軟件測試培訓
          • 來源:軟件測試問答
          • 時間:2017-08-15 16:26

          編程界有句很流行的話經常被程序員引用來懟產品,老板等人:不能確保軟件中沒有bug,世界一流的公司微軟,谷歌等開發出來的軟件也會有bug。但是一個小功能能不能做到沒有bug呢?本文為大家講述一個功能從產生到上線的愛恨情仇。這是我到新公司之后做的第一個需求,組長問我這個給你一周能不能做完?我認真看了一下PRD和UI文檔,拍了拍胸脯保證說一天就夠了。

          大致描述下需求:我們項目中集成了攜程的訂機票服務,對于經常出差的人,可能會經常往返兩個或多個地方,比如公司在北京,但是會經常去上海和杭州出差再回來。如果在我們集成的定機票頁面定機票的話,需要每次都輸入出發地和目的地,然后查詢。為了優化這一體驗,我們為用戶提供創建和保存行程的功能,之后用戶只需要點擊之前創建的行程(比如北京到上海),我們就自動為填充出發地和目的地然后查詢。主要涉及兩個頁面,草圖如下:

          說明:

          1,行程管理頁面(后面統一簡稱頁面一)用于管理常用行程,可以添加和刪除,直接點擊行程就打開行程添加和修改頁面,可對行程重新編輯;

          2,行程添加和修改頁面(后面統一簡稱頁面二)顧名思義用于創建或者修改行程。如果是點擊“添加新的行程”跳轉過來的,則行程名稱,出發地,目的地都是空的,需要你自己創建;如果是點擊某個行程跳轉過來的,則會自動填充該行程的行程名稱,出發地和目的地,用戶可以直接修改保存。

          3,將此行程添加到桌面快捷方式后面有一個開關,如果用戶打開這個開關,在點擊保存的時候就將該行程在桌面上創建一個快捷方式。

          之前這兩個頁面上的功能都已經完成了,除了將此行程添加到桌面快捷方式,而我要做的就是將此行程添加到桌面快捷方式的功能。

          我心想這是我緊新公司做的第一個任務,一定要把他做完善。

          第一個半天做了技術調研,即如何代碼創建,刪除和查詢快捷方式。很快在GITHUB上找到了一個完善的開源項目 ShortcutHelper,代碼在這里我就不帖了,如果對這個技術感興趣可以去github圍觀,順便給作者一個star。

          第二個半天對這個功能進行了認真的思考,希望能考慮到所有的情況:

          ●如果用戶是創建新的行程,點擊保存的時候判斷 將此行程添加到桌面快捷方式的開關(后面統一簡稱開關)的狀態,如果狀態為開,則發送廣播讓launcher幫忙創建快捷方式;

          ●如果用戶是從頁面一點擊某個行程進入到頁面二,則此時需要從桌面查詢該行程在桌面是否已經有了快捷方式,根據查詢結果重置開關的狀態;

          ●如果用戶是從頁面一點擊某個行程進入到頁面二,并在頁面二對行程進行了修改,而且該行程在桌面已經創建了快捷方式,在點擊保存的時候我們需要對快捷方式的intent進行修改;

          如果用戶是從頁面一點擊某個行程進入到頁面二,而且該行程在桌面已經創建了快捷方式,如果點擊保存的時候開關是關閉狀態,我們需要從桌面上刪除該快捷方式;

          ●在頁面一,每個行程的后面有一個刪除按鈕,點擊刪除按鈕需要刪除該行程,同時,如果該行程創建了快捷方式,我們同樣需要刪除對應的快捷方式。

          到這里我覺得自己的思維太嚴謹了,對自己佩服的五體投地。為了避免打臉(之前保證一天就能完成),我加班完成了代碼的編寫。

          晚上下班回家的路上我還在對這個功能進行思考,看看還有沒有遺漏的情形。還真想到了一種情況:

          如果用戶是從頁面一點擊某個行程進入到頁面二,而且該行程在桌面已經創建了快捷方式,這時開關的狀態應該是開,而此時如果用戶按home鍵回到桌面,長按并刪除了該行程的快捷方式,之后在打開頁面二(由于是按home鍵,頁面二并沒有被銷毀),開關的狀態是不是應該重置為關?

          第二天一早到公司我就加上了相關的代碼——之前是在onCreate方法中判斷快捷方式狀態,把相關代碼移到了onResume中。測試了一下,完美運行,于是愉快的提交了代碼。

          心想我已經考慮的這么周全了,應該不會有bug了吧。

          但是很快被打臉了,測試提了個bug:

          如果用戶已經退出登陸了APP,這時用戶點擊桌面上行程的快捷方式,是不能直接把出發地和目的地自動填充的,因為這會有泄露用戶隱私的嫌疑。正確做法應該是點擊快捷方式的時候需要對用戶的登錄狀態進行判斷,如果已經登錄則直接打開對應頁面并填充出發地和目的地,而如果沒有登錄,則先讓用戶登錄,登錄之后再打開對應頁面。

          改完這個bug之后過了一天,測試又提了一個bug:

          如果用戶正在頁面二創建行程,并且打開了開關,還沒來得及點保存,突然來了個電話,接完電話再回到這個頁面,由于我在onResume中判斷了快捷方式狀態并重置開關狀態,所以用戶本來打開了開關結果接完電話回來開關被我關了。

          我認真思考了一些,想到了一種解決方案:在內存當中設置一個變量(后面統一稱為switchState)記錄該開關的狀態,switchState有三個值,一是默認,二是打開,三是關閉。如果用戶不主動對開關進行操作,switchState就是默認,如果用戶操作了開關,我就根據用戶操作后開關的狀態給switchState賦值成打開或者關閉。然后在onResume中優先判斷switchState,如果switchState是默認,我們就去桌面查詢然后重置,否則我們就根據switchState是打開還是關閉重置開關狀態。

          嗯,測試了一下,完美運行,于是愉快的提交了代碼。過了一天,測試又提了一個bug:

          如果用戶正在頁面二創建行程,并且打開了開關,此時用戶在通知欄點系統設置,進入系統設置中修改了系統語言,再回到該頁面;這時頁面會被銷毀重建,根據之前代碼的邏輯,我們先判斷switchState的值,由于Activity重走了生命周期,所以switchState值是默認,這時我們就去向launcher查詢該行程快捷方式是否已經創建,根據查詢結果我們重置該開關為關閉狀態。

          解決這個bug思路也很簡單,只需要在onSaveInstanceState中保存switchState的值,然后在onRestoreInstanceState中取出來使用即可。

          改完這個bug測試再沒有提出關于這個功能的新bug,當然這也并不意味著就沒有bug了,可能還有測試也沒有想到的情況,那就只能留著讓用戶去反饋了。

          后來這個功能上線了,運行了一個月發現并沒有用戶反饋bug。產品看了一下統計數據,發現這個功能并沒有人使用。于是決定在下一個版本刪除掉……刪掉……掉……

          預約申請免費試聽課

          填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

          上一篇:如何做黑盒測試?(精華)
          下一篇:軟件開發中開發人員與測試人員如何和諧相處?
          • 掃碼領取資料

            回復關鍵字:視頻資料

            免費領取 達內課程視頻學習資料

          • 視頻學習QQ群

            添加QQ群:1143617948

            免費領取達內課程視頻學習資料

          Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

          選擇城市和中心
          黑龍江省

          吉林省

          河北省

          陜西省

          湖南省

          貴州省

          云南省

          廣西省

          海南省

          神马影院-战旗影院-首播影院-新视觉影院-在线观看中文字幕dvd播放 百度 好搜 搜狗
          <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>