卡牛質(zhì)量平臺(tái)Review

一、背景


  • 我們目前并沒(méi)有很好的可視化數(shù)據(jù)來(lái)統(tǒng)計(jì)我們每個(gè)版本的測(cè)試質(zhì)量,以及開(kāi)發(fā)人員當(dāng)月的特性bug數(shù)來(lái)統(tǒng)計(jì)各開(kāi)發(fā)人員的提測(cè)質(zhì)量
  • 我們希望有一個(gè)質(zhì)量平臺(tái)可以提供各項(xiàng)的可視化數(shù)據(jù)來(lái)統(tǒng)計(jì)我們的一個(gè)版本質(zhì)量。當(dāng)然我們也希望我們做的各項(xiàng)自動(dòng)化輔助工具能夠集成進(jìn)來(lái)方面大家的使用揩页。
  • 另外我們的發(fā)版報(bào)告能夠做到一鍵發(fā)送等等想法,我們從零開(kāi)始搭建一個(gè)自動(dòng)化質(zhì)量平臺(tái)。
  • 我們的最終目標(biāo)是希望能實(shí)現(xiàn):不管是服務(wù)端和app(ios/Android)届宠,以及H5,當(dāng)開(kāi)發(fā)提交任意部分存在代碼提交的時(shí)候乘粒,能夠拉取最新代碼進(jìn)行部署并能夠執(zhí)行自動(dòng)化回歸測(cè)試豌注,及時(shí)的將情況反饋開(kāi)發(fā)人員。

二灯萍、現(xiàn)狀


平臺(tái)架構(gòu)如下:

平臺(tái)框架圖如下:

目前我們的基礎(chǔ)框架已經(jīng)搭建起來(lái)轧铁,目前只實(shí)現(xiàn)基本的一個(gè)框架,相應(yīng)的功能待集成和開(kāi)發(fā)旦棉,目前我們劃分的模塊如下:

  • UI自動(dòng)化:基于目前的Maxim自動(dòng)遍歷工具和協(xié)議腳本齿风,這些完成之后后續(xù)會(huì)分層ios/Android/H5的自動(dòng)化功能測(cè)試
  • 接口自動(dòng)化:基于開(kāi)發(fā)提供的已有的接口實(shí)現(xiàn)項(xiàng)目管理,模塊管理绑洛,用例配置聂宾,以及持續(xù)構(gòu)建執(zhí)行自動(dòng)化
  • 輔助工具:目前的運(yùn)營(yíng)商測(cè)試輔助工具、加解密的頁(yè)面整合
  • jira數(shù)據(jù):一系列的可視化數(shù)據(jù)來(lái)統(tǒng)計(jì)我們的版本質(zhì)量和提測(cè)質(zhì)量
  • 其他:不確定
  • 測(cè)試報(bào)告:發(fā)版的報(bào)告做到一鍵發(fā)送
  • 平臺(tái)FAQ:報(bào)告平臺(tái)的一些bug

三诊笤、項(xiàng)目結(jié)構(gòu)


項(xiàng)目代碼結(jié)構(gòu)樹(shù):


項(xiàng)目代碼結(jié)構(gòu)解析:

  • app文件夾為項(xiàng)目的主應(yīng)用
  • app/templates文件夾中用來(lái)存放網(wǎng)站每個(gè)html頁(yè)面
  • app/static文件夾中用來(lái)存放一些網(wǎng)站的靜態(tài)文件系谐,如平臺(tái)框架的css樣式,js模板,一些image背景圖片纪他,圖標(biāo)之類的
  • app/models.py中用來(lái)存放數(shù)據(jù)庫(kù)模型鄙煤,所有的數(shù)據(jù)庫(kù)表都在這里建立
  • app/main/views.py中用來(lái)存放路由函數(shù),所有的請(qǐng)求接口功能都是在這里定義的
  • app/_ init _.py中主要初始化一個(gè)應(yīng)用茶袒,app=Flask( _ name _)用來(lái)創(chuàng)建flask對(duì)象梯刚,并提供注冊(cè)藍(lán)圖函數(shù)的功能
  • app/main/_ init _.py 用來(lái)引入藍(lán)圖并創(chuàng)建藍(lán)圖對(duì)象
  • test中是測(cè)試代碼
  • config.py用來(lái)存放項(xiàng)目的一些配置信息
  • manager.py用來(lái)存放一些通用的函數(shù),數(shù)據(jù)庫(kù)操作類

四薪寓、如何協(xié)作


各模塊各自獨(dú)立開(kāi)發(fā)和維護(hù):

  • 創(chuàng)建對(duì)應(yīng)按鈕的跳轉(zhuǎn)路由和視圖函數(shù)
    ①在base.html模板中找到對(duì)應(yīng)的標(biāo)簽亡资,加上對(duì)應(yīng)的跳轉(zhuǎn)鏈接。
    例如加上:href="/user/maxim":
<li class="active"> <a href="/user/maxim" class="active"> <i class="fa fa-angle-right"></i> <span>Maxim自動(dòng)遍歷工具</span> </a> </li>

②然后在app/main/views.py里面加上對(duì)應(yīng)的視圖函數(shù)
例如:

@main.route('/user/maxim')
def maxim():
    return render_template('/maxim.html')
  • 編寫待開(kāi)發(fā)的html布局
    ①在app/templates/創(chuàng)建maxim.html
    ②然后編寫它的html布局
    jinja模板中最強(qiáng)大的就是模板繼承向叉,模板集成允許你構(gòu)建一個(gè)包含你站點(diǎn)共同元素的基本模板“骨架”锥腻,并定義子模板可以覆蓋的塊。
    我們是基于基本模板base.html模板進(jìn)行開(kāi)發(fā)母谎,它定義了一個(gè)基本的HTML骨架瘦黑,你可以使用左欄頁(yè)面,補(bǔ)充子模版的空白內(nèi)容奇唤,進(jìn)行開(kāi)發(fā)幸斥。
    一般子模板繼承例如:
{% extends "base.html" %}
{% block title %}Maxim自動(dòng)化{% endblock %}
{% block content %}
<div style="padding: 50px 400px 20px 100px;">
    子模板的內(nèi)容
</div>
{% endblock %}
  • 相應(yīng)的表單交互可以寫在子模板的<script></script>或者app/static/js/app1.v1.js里面
    ①方法一:寫在app/static/js/app1.v1.js里面,并且可以增加它的復(fù)用性
    例如一個(gè)下拉選擇列表在maxim.html的布局如下:
<input type="text" id="run" class="form-control" placeholder="選擇運(yùn)行時(shí)間">
                    <div class="input-group-btn">
                        <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">
                            運(yùn)行時(shí)間
                            <span class="caret"></span>
                        </button>
                        <ul id="runtime" class="dropdown-menu pull-right">
                            <li><a href="#">0.5h</a></li>
                            <li><a href="#">1h</a></li>
                            <li><a href="#">2h</a></li>
                            <li><a href="#">4h</a></li>

我們可以在app/static/js/app1.v1.js后面加上對(duì)應(yīng)的js命令咬扇,如下:

$("#runtime").on("click", "li", function(){$("#run").val($(this).text());});

②方法二:我們也可以在子模板下的<script></script>里面加上相應(yīng)的ajax請(qǐng)求
html布局如下:

<div>
                <button type="button" class="col-md-offset-1 btn btn-success" data-toggle="modal" data-target="#myModal"
                        id="send" onclick="add_modajax('#add_module')">點(diǎn)擊提交</button>
            </div>
<script>
... ...
 function add_modajax(id) {
        document.getElementById('popmsg').innerHTML='';
        var data = $(id).serializeJSON();

        if(data['module_name'].length == 0 )
        {
            document.getElementById('popmsg').innerHTML='模塊不能為空!';
            return;
        }

        if(data['lifting_time'].length == 0 )
        {
            document.getElementById('popmsg').innerHTML='提測(cè)時(shí)間不能為空!';
            return;
        }
var url;
        var addpro =data['belong_user'];
        if (id ==='#add_module') {
            url = '/api/'+ addpro+'/add_module/';
        }
        $.ajax({
            type:'post',
            url:url,
            data:JSON.stringify(data),
            contentType:"application/json",
            success: function (data) {
                if (data ==='添加成功'){
                    document.getElementById('popmsg').innerHTML=data;
                    $('#myModal').modal('show');
                    $(function () {
                       $('#myModal').on('hide.bs.modal', function () {
                       window.location.href='/api/'+ addpro+'/add_module/';
                      })
                    });
                }else {

                 document.getElementById('popmsg').innerHTML=data;
                 return;

                }
            },
            error: function () {
                alert('sorry,服務(wù)器可能開(kāi)小差了甲葬,請(qǐng)重試')
            }
        });
... ...
</script>

五、相關(guān)鏈接

1.月分析之獲取jira缺陷數(shù)據(jù):http://url.cn/5CFZ8Ae
2.Python-Jenkins官網(wǎng):https://pypi.python.org/pypi/python-jenkins/
3.Python-Jenkins Doc:http://python-jenkins.readthedocs.io/en/latest/index.html
4.CSS鏈接:http://www.runoob.com/css/css-link.html
5.js鏈接:http://www.runoob.com/js/js-tutorial.html
6.bootstrap相關(guān)組件:https://v3.bootcss.com/components/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末懈贺,一起剝皮案震驚了整個(gè)濱河市经窖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌隅居,老刑警劉巖钠至,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件葛虐,死亡現(xiàn)場(chǎng)離奇詭異胎源,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)屿脐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門涕蚤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人的诵,你說(shuō)我怎么就攤上這事万栅。” “怎么了西疤?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵烦粒,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)扰她,這世上最難降的妖魔是什么兽掰? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮徒役,結(jié)果婚禮上孽尽,老公的妹妹穿的比我還像新娘。我一直安慰自己忧勿,他們只是感情好杉女,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著鸳吸,像睡著了一般熏挎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上层释,一...
    開(kāi)封第一講書(shū)人閱讀 51,365評(píng)論 1 302
  • 那天婆瓜,我揣著相機(jī)與錄音,去河邊找鬼贡羔。 笑死廉白,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的乖寒。 我是一名探鬼主播猴蹂,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼楣嘁!你這毒婦竟也來(lái)了磅轻?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤逐虚,失蹤者是張志新(化名)和其女友劉穎聋溜,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體叭爱,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撮躁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了买雾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片把曼。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖漓穿,靈堂內(nèi)的尸體忽然破棺而出嗤军,到底是詐尸還是另有隱情,我是刑警寧澤晃危,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布叙赚,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏震叮。R本人自食惡果不足惜沿量,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望冤荆。 院中可真熱鬧朴则,春花似錦、人聲如沸钓简。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)外邓。三九已至撤蚊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間损话,已是汗流浹背侦啸。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丧枪,地道東北人光涂。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像拧烦,于是被迫代替她去往敵國(guó)和親忘闻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,111評(píng)論 25 707
  • 22年12月更新:個(gè)人網(wǎng)站關(guān)停恋博,如果仍舊對(duì)舊教程有興趣參考 Github 的markdown內(nèi)容[https://...
    tangyefei閱讀 35,182評(píng)論 22 257
  • 接到你的微信齐佳,短短幾個(gè)字,我看了十分鐘:我媽走了债沮,今天上山炼吴。 那一瞬,我覺(jué)得呼吸都很困難疫衩,立刻給你打電話硅蹦,你對(duì)著我...
    Micafe閱讀 196評(píng)論 0 0
  • 建筑:一件苦行者穿的粗毛襯衣
    CNBLUEone閱讀 171評(píng)論 0 0
  • 我沒(méi)有總在不經(jīng)意的時(shí)刻想起你,因?yàn)槲液孟褚恢倍荚谙肽闼硗痢2恢滥阌惺裁春孟氲奶嵴耄髅骺雌饋?lái)我被你騙財(cái)騙色還落了個(gè)自私自...
    一只小倉(cāng)鼠的日常閱讀 97評(píng)論 0 0