Appium python自動化測試系列之移動自動化測試!

1.1 移動自動化測試現狀

因為軟件行業越來越發達,用戶的接受度也在不斷提高,所以對軟件質量的要求也隨之提高,當然這個也要分行業,但這個還是包含了大部分。因為成本、質量的變化現在對自動化測試的重視度越來越高,在幾年前自動化測試還沒有像現在這么普及,但是現在隨便去一家公司面試都會問到自動化測試,當然這個和他們公司是否運用到另說。

但是不言而喻的是大家都意識到了軟件測試這個行業都走向了自動化這條路。或許你認為實施自動化可能不是必須的,可能在你的觀念中測試思想是最重要的,所謂的自動化工具或者框架都是用來輔助的,但是作者想告訴你的是:計算機行業的發展、軟件測試行業的發展其實就像工業革命一樣,為的是通過此途徑解決人類手工勞動的復雜性,當然可能并不一定是這幾年出現,但是如果我們不學習肯定會被時代淘汰。

對于現在的我們來說自動化測試是我們必須掌握的技能,同時它也是這個行業的一種發展趨勢,當然你想要提高到更高的一個檔次可以往測試開發走,我堅信你能夠走得更遠。

1.2 本課程目標

因為作者也是從一個初學者過來的,而且在初學的過程中走了許多的彎路,所以作者希望通過本書帶領讀者從一個初級用戶到高級用戶,從不會到自己能夠獨擋一面。

我們共同的目的是先掌握android的基礎知識、appium相關環境知識、python的基礎知識、常見api的使用以及封裝、日志的收集、報告的生成、再是我們常用的數據驅動、頁面驅動,還有后面的unittest框架的介紹以及使用。

1.3 自動化測試流程

無論在做什么事情之前都需要掌握其流程,自動化也是一樣,我們首先要掌握的就是流程,如果你連最起碼的流程都無法掌握,那么你也沒辦法做好自動化。作者將通過自己的項目經驗來寫,當然這個不一定就是標準的答案,所以如果有覺得不符合的也不要吐槽,可以提出來一起討論。

我們通過下面的圖片來了解

可能有的人會有疑問說:這個怎么看就是一個v模型呢?這個作者只是為了讓大家更容易理解這樣編寫的。可能還有人會說我們做自動化為什么不是直接拿著需求就開始寫代碼,浪費那么多時間去做其他的有什么好處呢?我們來一 一講解。

現在我也找了很多測試的朋友,做了一個分享技術的交流群,共享了很多我們收集的技術文檔和視頻教程。
如果你不想再體驗自學時找不到資源,沒人解答問題,堅持幾天便放棄的感受
可以加入我們一起交流。而且還有很多在自動化,性能,安全,測試開發等等方面有一定建樹的技術大牛
分享他們的經驗,還會分享很多直播講座和技術沙龍
可以免費學習!劃重點!開源的!!!
qq群號:310357728【暗號:csdn999】

1、需求了解:當給你一個需求或者一個系統讓你去做自動化的時候你什么都不知道你就去做自動化能行嗎?你不去分析需求或者系統的哪些模塊兒適合做自動化你怎么去做?如果盲目的去做,當你做到后面的時候可能你框架還沒弄好需求或者系統又變了,那你是否做了無用功?所以我們第一步一定是確定需求或者系統哪些模塊適合做自動化,而且一定要明白這個需求或者系統做自動化給我們帶來的好處是什么,而不是說做自動化就是為了表示我們會做。

2、需求分析:和需求了解有類似之處,我們在這個期間主要做的就是分析需求或者系統哪些模塊適合做自動化,做自動化給我們的好處是什么,為后期方案提供參考,提供可用信息。

3、方案選擇:有的人可能對選擇方案會比較陌生,不知道這個到底是干什么的?那么問你一個很簡單的問題,現在自動化測試框架常見的有robotium、appium、monkeyrunnner、UIAutomator等等,這么多的框架你為什么選擇學習appium呢?其實這就是一個方案的選擇,那么有時候你也會根據你項目的需求去選擇一個更加適合的框架,讓我們這個需求實現利益最大化。

4、環境準備:這個最好理解,方案選擇好之后就該準備環境了。這個環境不會像大家想的那樣配置一個jdk、appium、ide就行了,你需要考慮的是appium的版本、持續集成、代碼管理等等問題,這個詳細內容在后面框架部分作者會講到。

5、系統設計:剛開始接觸自動化的小伙伴可能對這個比較陌生,不知道什么叫做系統設計,不用擔心。在做自動化的時候大家是否考慮過一個問題:在自動化過程中我們公用的東西是怎么提取出來的,為什么要按照不同的包結構來進行框架搭建,為什么不能夠是所有的都在一個包下或者一個類下面?我們簡單的看一下下面這個圖片:

從圖片中我們能夠看出在這個工程中我們有專門存放app的地方,有單獨的配置文件、case、以及讀取配置文件的地方,共同的特點就是他們都沒有在一起,這還只是一個簡單的例子,在以后我們的工作中這個是最常見的,在開發之前我們就需要把這些規劃好,因為一個項目往往是一個團隊來做,那么大家肯定是先劃分模塊,分工,在后期還會涉及到一些模塊間的調用。目的就是讓我們一目了然的就知道這個包是做什么的,把公用的都提取了,各司其能。

6、編碼:編碼故名思意就是編寫代碼,只是這里我們的編寫代碼是根據事先寫好的用例來進行編寫代碼。

筆者在這里說一個題外話,這個也是很多初學者會面臨的一個問題,這也是為什么很多人看了一些自動化的資料但是一直無法做自動化的原因。在很多的公司自動化會分兩個組,一個是開發測試框架,一個是寫測試用例,這里的測試用例是自動化的case,不要理解錯。

7、執行:執行是整個自動化展示成果的重要一部,最后的結果我們看到的是執行了多少case,通過多少,通過率是多少,失敗的為什么失敗。這也是領導或者其他相關人員想看到的數據。

那么為了這一步我們的自動化要做多少準備呢?作者會在本書中一 一給大家講解。

1.4 自動化測試用例的編寫

自動化測試用例和我們常用的功能測試用例雖說區別不是很大,但還是有一定的區別,下面我們用登陸功能來舉例:

功能冒煙用例:

(備注:因為格式原因所以表格里面沒辦法調整,用例中步驟1=>1,以此類推)

上面圖片就是一個簡單登陸冒煙測試,自動化的用例不同之處在于更仔細。來我們直接通過下面的用例來給大家講解:

自動化登陸用例:

通過上面的用例我們不難看出自動化和功能測試用例最大的區別在于自動化要求更詳細,信息更加準確,當然這個并不是完全標準的,這個只是作者在工作中和接觸的人中大家基本都用的類似用例。很多公司設計用例的和將用例轉換為自動化腳本的并不一定是同一個人,所以我們需要保證的是別人看見你的自動化測試用例能夠準確的編寫出測試腳本,這也是我們的目的。

END今天的分享就到此結束了,點贊關注不迷路!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213953.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213953.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213953.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CTF-misc(1)圖片隱寫

筆記目錄 滲透測試工具(1)wireshark滲透測試工具(2)Nmap滲透測試工具(3)BurpsuiteAWD比賽(1)AWD入門攻略大綱CTF-Web(2)SQL注入CTF-Web(3)文件上傳漏洞 圖片隱寫目錄 (1)GIf和二維碼隱寫 二維碼補全 二維碼繪圖 Gif規律分析 (2)文本附加圖片隱寫 (3)IHDR文件頭修復圖片寬高 (…

linux端口轉發

使用iptables 例如要將本地的8080端口轉發到80端口,你可以使用以下命令: sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080這將把進入80端口的流量重定向到8080端口。 使用socat 另一種方法是使用socat工具。首先&am…

?Unity 搭建UDP服務端(02)接收客戶端消息

客戶端在上一篇 由于服務器邏輯寫的較為簡單 所以直接上代碼了~ using System; using System.Net; using System.Net.Sockets; using System.Text; using UnityEngine;public class UdpServer : MonoBehaviour {public static UdpServer instance;private void Awake(){if (…

Springboot管理系統數據權限過濾——ruoyi實現方案

本文主要簡述,Ruoyi框架使用的權限過濾實現方案,實現簡單易懂。主要知識點有: 注解定義;面向切面編程,在執行有數據權限注解的方法之前獲取用戶組織權限,拼接到domain對象的params參數中; 1. …

AI:100-基于卷積神經網絡的農作物生長狀態監測

?? 本文選自專欄:人工智能領域200例教程專欄 從基礎到實踐,深入學習。無論你是初學者還是經驗豐富的老手,對于本專欄案例和項目實踐都有參考學習意義。 ??? 每一個案例都附帶有在本地跑過的核心代碼,詳細講解供大家學習,希望可以幫到大家。歡迎訂閱支持,正在不斷更新…

基于CMT2300A定制的模組諧波測量及調試事例

1.1 芯片介紹 CMT2300A華普微推出的一款超低功耗 Sub-1GHz 射頻收發器,是一款SPI接口射頻前端芯片,調制方式支持OOK (G)FSK 、(G)MSK,速率最大可以做到300 kbps,休眠大概1uA,功率最大可以做到20dB,但各國的…

Android 刪除瀏覽器導航頁面修改默認主頁

Android 刪除瀏覽器導航頁面修改默認主頁 近來收到客戶需求反饋,需要刪除瀏覽器導航頁面并將百度設置為默認主頁,具體修改參照如下: 刪除瀏覽器導航頁面: /vendor/mediatek/proprietary/packages/apps/Browser/src/com/android…

軟文怎么寫才能讓消費者行動起來?媒介盒子分享

軟文的本質是營銷,做營銷文案不是玩文字藝術,它需要洞察用戶需求,懂產品,了解賣點,懂營銷,懂消費心理,最終讓消費者行動起來。有些文案可能在你看起來遣詞造句和配圖都很一般,但就是…

分布式uuid常用的算法

1、雪花算法介紹 面試官:集群高并發情況下如何實現分布式唯一全局id生成? - 墨天輪 2、百度的UidGenerator 介紹,適合容器化配置,同時兼容springboot,只需要mysql數據庫, https://github.com/baidu/uid-…

Python辦公之Excel篇

1.準備環境 Python版本:3.6.5 IDE集成開發環境:pycharm Python庫選擇:openpyxl openpyxl操作的excel文件以xlsx結尾。 基礎命令 查看 Python 版本 python --version查看 pip 版本 pip --version安裝openxlsx pip install openpyxl -i…

9.靜態路由

靜態路由 中小型網絡都會用到,防火墻核心交換機用的很多,一般是用在出口 路由表:路由器用來轉發數據包唯一的依據 NextHop下一跳 Static靜態路由需要手動設置 ip route-static 目標網段 掩碼 下一跳例如:ip route-static 192…

QT講程序打包成安裝包讓任何人可以使用

💂 個人主頁:pp不會算法v 🤟 版權: 本文由【pp不會算法v】原創、在CSDN首發、需要轉載請聯系博主 💬 如果文章對你有幫助、歡迎關注、點贊、收藏(一鍵三連)和訂閱專欄哦 文章目錄 1、release模式下編譯2、windeploy 打包發布3、使用inno setu…

node.js express cors解決跨域

目錄 什么是跨域 示例 postman請求 前端請求 cors中間件解決跨域 流程 配置cors參數 什么是跨域 跨域(Cross-Origin)是指在 Web 開發中,當一個網頁的源(Origin)與另一個網頁的源不同時,就發生了跨域…

day6 arm

main.c #include "uartt.h"//封裝延時函數void delay(int ms){int i,j;for(i0;i<ms;i){for(j0;j<2000;j);}}int main(){//串口初始化uart4_init();//燈初始化led_init();//char a;char *s;while(1){myputchar(\n);myputchar(\r);//從串口讀取一個字符// amyget…

手把手教你反編譯小程序

本次實驗環境 操作系統: win10 10.0.19042 node: v14.17.0 微信開發者工具: Stable 1.05.2110290 前期準備 在電腦端安裝模擬器工具&#xff0c;這里以夜神模擬器為例&#xff0c; 在模擬器中安裝微信&#xff1a;用于微信打開小程序時加載小程序包。在模擬器中文件管理器&…

論文筆記:A review on multi-label learning

一、介紹 傳統的監督學習是單標簽學習&#xff0c;但是現實中一個實例可能對應多個標簽。這篇文章介紹了多標簽分類的定義和評價指標、多標簽學習的算法還有其他相關的任務。 二、問題相關定義 2.1 多標簽學習任務 假設 X R d X R^d XRd&#xff0c;表示d維的輸入空間&am…

面試經典150題(10-13)

leetcode 150道題 計劃花兩個月時候刷完&#xff0c;今天&#xff08;第四天&#xff09;完成了4道(10-13)150&#xff1a; 10. &#xff08;45. 跳躍游戲 II&#xff09;題目描述&#xff1a; 給定一個長度為 n 的 0 索引整數數組 nums。初始位置為 nums[0]。 每個元素 nums[…

日本服務器:確保其穩定性的幾個要點

?  在租用日本服務器時&#xff0c;用戶們大多一定會關注它的穩定性&#xff0c;其實這些顧及都是正常的。畢竟&#xff0c;網站要想正常運行&#xff0c;保障服務器穩定是關鍵。本文將討論有關如何保障日本服務器穩定性的一些有用技巧&#xff0c;希望對您有所幫助。 1.注重…

Linux定時循環備份指定文件或文件夾,每月永久備份留1份

備份需求&#xff1a;每天完成一次指定文件的備份&#xff0c;壓縮后存放到指定目錄 問題&#xff1a;備份時間長了以后占用空間較大&#xff0c;浪費存儲&#xff0c;實際歷史備份意義不大&#xff0c;并不需要永久保存。但是如果直接刪除可能導致無法恢復歷史狀態的數據。 …

SpringBoot 啟動加載器解析

計時器介紹 啟動加載器實戰 實現方式1 實現CommandLineRunner接口重寫run方法通過Order進行排序 示例: Component Order(1) public class FirstCommandlineRunner implements CommandLineRunner {Overridepublic void run(String... args) throws Exception {System.out.pr…