Android開發之Ruby實現Android自動化螢幕適配,rubyandroid
背景:我相信對於Android開發人員來說,螢幕適配一直是你心中的痛~,為了讓Android開發人員從螢幕適配的痛苦中解脫出來,我決定實現這個Android自動化螢幕適配的1.0版本。下面來講一下思路。
首先以values-w360作為標準也就是360dp,對應的裝置就是720×1080俗稱的720P的螢幕,也就是說設計師給的設計稿是以720P的螢幕作為設計圖的,那麼如果設計圖上面的尺寸是100px,那麼我們就需要用100/2 = 50dp得到我們的這個標準值,以此類推,將app中所有需要適配的尺寸都寫入到values目錄的dimens.xml(標準值)中,Android程式員所需要做的工作就這麼多了。
接下來的工作就交給指令碼了,首先指令碼會將values/dimens.xml拷貝到需要適配的螢幕解析度對應的目錄,例如values-w400,然後用正則匹配出每一個尺寸,進行計算然後重新寫入適配之後的值,這裡以360dp為標準,400dp為需要適配的目標裝置,以100px為例,那麼(400/360)× 100 = 111,那麼在values-w400dp這個目錄中的dimens的該項目的值就是111dp了。
require 'fileutils' BASE_DP=360 def adapte_dimens(dimens_file,alpha) puts "adapter #{dimens_file}" File.open dimens_file,'a+' do |f str ="" f.each_line{|line value = /(?<=>)\d+(?=(dp|sp))/.match(line).to_a[0]#匹配出尺寸的項目包括dp和sp if value value = value.to_f * alpha#計算適配後的值 str += line.gsub(/(?<=>)\d+(?=(dp|sp))/,value.to_i.to_s)#將新值寫入 else str += line end } f.truncate(0) f.puts str end end values_list = Dir.entries("./").find_all{|f #通過修改這裡的Regex,可以控制具體適配哪一個螢幕比如將正則改為/values-w400dp/那麼就只會適配400dp的螢幕了 /values-w|values-sw/.match(f) } values_list.each do |v FileUtils.cp("values/dimens.xml",v) dest_file = "#{v}/dimens.xml" dp = /(\d{3})/.match(v) alpha = dp[0].to_f/BASE_DP#計算比率係數 adapte_dimens(dest_file,alpha) end
總結:好了簡單的Ruby自動化適配指令碼就完成了,當然還有很多需要改進的地方,現在是每一次運行指令碼就會覆蓋目標目錄中的dimens.xml檔案,如果有時候自動適配的效果不好偶爾需要人工做一些微調,但是執行這個指令碼之後微調的值就會丟失掉,所以還需要改進。有興趣的同學可以自己實現。
Android自動化測試載入器誰會用,給我些資料或指導什的,謝啦
一、首先說說手機自動化測試的原理
1、手機自動化測試的原理為PC上一個控制端(測試載入器)與手機上的一個agent端,通過串口、USB或者無線方式將PC與手機終端相連,然後應用測試載入器向手機發送請求或者命令,手機收到命令或者請求後,交給agent端解析,然後agent將這些解析的命令下發給手機的各個功能模組所能識別的命令,調用那些功能模組類比操作。完成這些操作後,手機會返回一些資訊,agent可以抓取這些資訊,然後傳回給PC端,這樣就完成了一個完整的手機自動化測試。
2、關鍵點在於agent,有的公司是向自己的手機終端的軟體功能模組中植入測試程式響應代碼,有的公司可以利用MMI_Command的方式來控制手機終端;原理就是給手機提供一個響應的介面。
3、而對於PC控制端,這個測試指令碼用各種程式設計語言都可以,看如何定義
4、而又的自動化測試設計成錄製的機制,說通俗點,就是記錄手工操作的鍵盤資訊或者LCD的操作資訊(LCD需要用到智能識別機制)
5、自動化測試架構的搭建方法是通用的,你需要有一套自己的測試架構才能保證自動化測試的順利開展。
二、Android自動化測試方向:
1、CTS,CTS 測試基於Android instrumentation 測試, 其又基於JUnit 測試。說白了, CTS 就是一堆單元測試用例。這也是Java 語言的擅長部分。
2、 Monkey工具,Monkey是Android中的一個命令列工具,可以運行在模擬器裡或實際裝置中。它向系統發送偽隨機的使用者事件流(如按鍵輸入、觸控螢幕輸入、手勢輸入等),實現對正在開發的應用程式進行壓力測試。Monkey測試是一種為了測試軟體的穩定性、健壯性的快速有效方法。
3、ASE,ASE 意思為Android 指令碼環境, 即我們可以通過指令碼(比如Python)調用Android 的功能,從而定製一些測試。比如打電話,發簡訊,瀏覽網頁,等。我們可以擴充它的API(Java 部分), 並用python 指令碼調用這些API, 從而實現豐富的測試功能。用於API 部分可以訪問到Android 全部API, python 又能靈活部署測試,所以ASE 的擴充性非常好。
4、Robotium,該工具用於黑盒的自動化測試。可以在有源碼或者只有APK 的情況下對目標應用
進行測試。Robotimu 提供了模仿使用者操作行為的API,比如在某個控制項上點擊,輸入Text
等等。(推舉你可以研究一下這個工具,開源的,我有資料)
5、可以自己開發一個手機方面的自動化測試載入器,原理上一樣的
如果你想要什麼資料的話或者想一起學習研究的話,可以給我發郵件:test_sunny@hotmail.com
手機APP自動化測試平台有什?Android終端太多,太片段,人力測試太麻煩了,推薦好的APP自動化的測試平台
移動開發的一個重要難題,就是APP應用在開發過程中,必須使用大量不同的手機進行真實環境的測試,才有可能進入商用。由於手機作業系統的不同,以及作業系統版本之間的差異,使得真機測試這個過程尤其複雜,涉及終端、人員、工具、時間、管理等方面的問題,Android系統的裝置因作業系統多樣性和終端類型的龐雜,問題尤為複雜。恰恰就是這樣,testin就想到了 ,做一個雲的終端測試應用的服務!
Testin為行動裝置 App開發人員提供雲端真機自動化的測試服務,該服務基於一種軟硬體相結合的技術,協助開發人員解決了行動裝置 App在不同平台、不同版本系統中的測試問題 。開發人員可以免費使用雲端1000多款真機測試自己為Android開發的應用,通過測試的應用可以直接發布到市集。此外,開發人員和廣告商還能使用Testin監控平台,監測全球不同地區使用者的真機體驗和廣告展現品質。