ios平台UI自动化策略-UIautomation版(二)[谢绝转载]

接上回,贴代码:

1.数据库接口写法:

<?php

    

    $appVersion=$_POST['appVersion'];

    $date=$_POST['date'];

    $duration=$_POST['duration'];

    $crashCount=$_POST['crashCount'];

    $totalCount=$_POST['totalCount'];

    $osVersion=$_POST['osVersion'];

    $deviceName=$_POST['deviceName'];

    

    $con = mysql_connect("localhost","root","");

    if (!$con)

    {

        die('Could not connect: ' . mysql_error());

    }

    

    mysql_select_db("iMonkey", $con);

    

    mysql_query("INSERT INTO iDetailData (appVersion, date, duration, crashCount, totalCount, osVersion, deviceName) VALUES (\"$appVersion\", \"$date\", \"$duration\", \"$crashCount\", \"$totalCount\", \"$osVersion\", \"$deviceName\")");

    mysql_close($con);

    

    echo ("ok");

    echo ("\n");

    

   //------------------------------------------------------

//    $versionManager=$_POST['versionManager'];

//    $agingTime=$_POST['agingTime'];

//    

//    $con = mysql_connect("127.0.0.1:3306","root","");

//        if (!$con)

//        {

//            die('Could not connect: ' . mysql_error());

//        }

//    

//        mysql_select_db("iMonkey", $con);

//    

//        $sql="INSERT INTO mAdminInfo (versionManager, agingTime) VALUES (\"$versionManager\", \"$agingTime\")";

//    echo($sql);

//    

//    mysql_query($sql);

//       // mysql_query("INSERT INTO mAdminInfo (versionManager,agingTime) VALUES (,$agingTime)");

//        mysql_close($con);

//    

//   // echo($versionManager);

//    echo ("\n");

//    

    ?>

2.周期性预警写法

#!/bin/bash

clear

echo iMonkey service started at `date`


i=0

while true

do

    if [ $(($i%96)) = 0 ]

    then

        curl "http://10.61.3.24/iMonkeyDeamon/alert/crashAlert.php"

        echo crash checked

        sleep 5

        curl "http://10.61.3.24/iMonkeyDeamon/alert/testQuantityAlert.php"

        echo test hour checked

    fi

    curl "http://10.61.3.24/iMonkeyDeamon/autoCountData/autoCountData.php"

        echo data synced

    sleep 895

    i=$(( $i + 1 ))

done



3.数据库结构

额,反正就双心结构,所有数据传一个大表,周期性数据统计count到统计表中。count代码贴下面:

<?php

    

    $con = mysql_connect("localhost","root","");

    if (!$con)

    {

        die('Could not connect: ' . mysql_error());

    }

    

    mysql_select_db("iMonkey", $con);

    

    $sql="SELECT count(*) FROM `iDetailData` where note=0 ";

    $result=mysql_query($sql);

    while($row = mysql_fetch_array($result))

    {

        $newItemFlag= $row[0] ;

    }

    if($newItemFlag==0){

        exit(0);

    }

    

    $sql="select max(date) from iCrashCount ";

    $result=mysql_query($sql);

    while($row = mysql_fetch_array($result))

    {

        $notedDate= $row[0] ;

    }

    

    $sql="select date_format(now(),'%y%m%d') ";

    $result=mysql_query($sql);

    while($row = mysql_fetch_array($result))

    {

        $newDate= $row[0] ;

    }

    

    if($notedDate!=$newDate){

    

    $sql="insert into iCrashCount (date) values (date_format(now(),'%y%m%d'))";

    mysql_query($sql);

    

    $sql="insert into iTestQuantity (date) values (date_format(now(),'%y%m%d'))";

    mysql_query($sql);

    }

    $sql="update iCrashCount set ios6CrashCount=(ios6CrashCount+(SELECT sum(crashCount) FROM `iDetailData` where note=0 and osVersion like '6%' and date=date_format(now(),'%y%m%d'))) where date = date_format(now(),'%y%m%d')";

    mysql_query($sql);

    $sql="update iCrashCount set ios7CrashCount=(ios7CrashCount+(SELECT sum(crashCount) FROM `iDetailData` where note=0 and osVersion like '7%' and date=date_format(now(),'%y%m%d'))) where date = date_format(now(),'%y%m%d')";

    mysql_query($sql);

    $sql="update iCrashCount set ios8CrashCount=(ios8CrashCount+(SELECT sum(crashCount) FROM `iDetailData` where note=0 and osVersion like '8%' and date=date_format(now(),'%y%m%d'))) where date = date_format(now(),'%y%m%d')";

    mysql_query($sql);

    

    $sql="update iTestQuantity set ios6TestHour=(ios6TestHour+(SELECT sum(duration) FROM `iDetailData` where note=0 and osVersion like '6%' and date=date_format(now(),'%y%m%d'))) where date = date_format(now(),'%y%m%d')";

    mysql_query($sql);

    $sql="update iTestQuantity set ios7TestHour=(ios7TestHour+(SELECT sum(duration) FROM `iDetailData` where note=0 and osVersion like '7%' and date=date_format(now(),'%y%m%d'))) where date = date_format(now(),'%y%m%d')";

    mysql_query($sql);

    $sql="update iTestQuantity set ios8TestHour=(ios8TestHour+(SELECT sum(duration) FROM `iDetailData` where note=0 and osVersion like '8%' and date=date_format(now(),'%y%m%d'))) where date = date_format(now(),'%y%m%d')";

    mysql_query($sql);

    


    $sql="update `iCrashCount` set totalCrashCount=ios6CrashCount+ios7CrashCount+ios8CrashCount";

    mysql_query($sql) or die(mysql_error());

    echo ($sql);

    

    $sql="update `iTestQuantity` set totalTestHour=ios6TestHour+ios7TestHour+ios8TestHour";

    mysql_query($sql) or die(mysql_error());



    $sql="SELECT max(appVersion) FROM iDetailData";

    $result=mysql_query($sql);

    $latestVersion = mysql_fetch_array($result)[0];



    $sql="SELECT max(appVersion) FROM iVersionData";

    $result=mysql_query($sql);

    $notedLatestVersion = mysql_fetch_array($result)[0];



    echo("$latestVersion,$notedLatestVersion");


    if($latestVersion!=$notedLatestVersion){

   /*************************************************************************************************************************************/

        $sql="INSERT into iVersionData (appVersion,firstDate) VALUES ((SELECT max(appVersion) FROM iDetailData),(select date_format(now(),'%y%m%d')));";

        mysql_query($sql);

    /*************************************************************************************************************************************/

    }else{


        

        $sql="update `iVersionData` set lastDate=(date_format(now(),'%y%m%d')) where appVersion=( select max(appVersion) from iDetailData)";

        mysql_query($sql);


        $sql="select sum(crashCount) from iDetailData where date=date_format(now(),'%y%m%d') and appVersion=(select max(appVersion) FROM iVersionData)";

        $crashCount=mysql_query($sql);

        $sql="select sum(duration) from iDetailData where date=date_format(now(),'%y%m%d') and appVersion=(select max(appVersion) FROM iVersionData)";

        $gestureCount=mysql_query($sql);


        $crashRate=$crashCount/($gestureCount*60*60*2);


        echo($crashRate);

        $sql="update iVersionData set finalCrashRate=\"$crashRate\" where appVersion=(select max(appVersion) FROM iDetailData)";

        mysql_query($sql);

    }

    

    $sql="update iDetailData set note =1";

    $result=mysql_query($sql);


    mysql_close($con);


?>

4.预警邮件

还是提一下邮件。因为预警条件可能比较多,需要一个邮件模版响应多种预警类型。其实就是传参数的时候,多维一点。贴邮件代码:

# -*- coding: utf-8 -*-

import smtplib

import email.MIMEMultipart# import MIMEMultipart

import email.MIMEText# import MIMEText

import email.MIMEBase# import MIMEBase

import os.path

import mimetypes

import sys


option=sys.argv[1]

#item=sys.argv[2]


print option

From = "amapmonkey@autonavi.com"


if(option=='safe'):

    os._exit(0)


comment=''

detail=''



#target=open('config/crashCounter')

#crashCounter=target.read()

#target.close()

#strA=['"',crashCounter,'"']

#crashCounter=''.join(strA)



target=open('alert.html')

resultContent=target.read()

target.close()


if(option=='crashAsendAlert'):

    comment='稳定性持续降低'

    detail='每日monkey测试产生的崩溃数量,在最近3天内一直增加'

if(option=='crashBurstAlert'):

    comment='崩溃率爆发性增长'

    detail='今日产生的崩溃数量,远远大于昨天。建议check最近的代码改动,以及是否存在兼容性问题'

if(option=='testHourLack'):

    comment='测试时间不足'

    detail='最近三天的monkey测试中,每天的总测试量都小于20小时'

if(option=='100'):

    comment='测试时遗漏平台'

    detail='最近3天中,没有对ios6平台进行稳定性测试'

if(option=='010'):

    comment='测试时遗漏平台'

    detail='最近3天中,没有对ios7平台进行稳定性测试'

if(option=='001'):

    comment='测试时遗漏平台'

    detail='最近3天中,没有对ios8平台进行稳定性测试'

if(option=='110'):

    comment='测试时遗漏平台'

    detail='最近3天中,没有对ios6ios7平台进行稳定性测试'

if(option=='101'):

    comment='测试时遗漏平台'

    detail='最近3天中,没有对ios6ios8平台进行稳定性测试'

if(option=='011'):

    comment='测试时遗漏平台'

    detail='最近3天中,没有对ios7ios8平台进行稳定性测试'

if(option=='111'):

    comment='未发现测试数据回传'

    detail='最近三天中,iMonkey数据平台并没有收到iMonkey客户端回传的测试数据。请查看网络状态是否正常,是否进行了monkey测试'

if(option=='000'):

    os._exit(0)



resultContent=resultContent.replace('comment',comment)

resultContent=resultContent.replace('detail',detail)


To = 'guangyin.li@autonavi.com'

#Count = crashCounter


server = smtplib.SMTP("mail.autonavi.com")

server.login("id","password") #smtp服务器需要验证时


# 构造MIMEMultipart对象做为根容器

main_msg = email.MIMEMultipart.MIMEMultipart()


# 构造MIMEText对象做为邮件显示内容并附加到根容器

#text_msg = email.MIMEText.MIMEText(resultContent,_charset="utf-8")


text_msg = email.MIMEText.MIMEText(resultContent,'html','utf-8')

main_msg.attach(text_msg)


# 构造MIMEBase对象做为文件附件内容并附加到根容器



# 设置根容器属性

main_msg['From'] = From

main_msg['To'] = To

main_msg['Subject'] = "Monkey Report"

main_msg['Date'] = email.Utils.formatdate( )


# 得到格式化后的完整文本

fullText = main_msg.as_string( )


# smtp发送邮件

try:

    server.sendmail(From, To, fullText)


#    main_msg['To'] = Count

#    server.sendmail(From, Count, fullText)

finally:

    server.quit()



以上代码是可以复用的,改掉ip和邮箱。后面贴UI自动化的框架部分,只有2层能复用了。1层3层请自构,工作量一般不小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值