精华内容
下载资源
问答
  • 尤其是在4.x以下的机型里,由于无法使用uiautomator, MonkeyRunner几乎就是唯一的自动化测试编写办法。 下面我举个例子,比如我们app里最常用的登录功能,我们就可以编写一个脚本来完成。 1 # ...

    http://www.cnblogs.com/punkisnotdead/p/5103323.html



    在日常的开发中,尤其是app开发,因为不像web端那样 出错以后可以热更新,所以app开发 一般对软件质量有更高的要求(你可以想一下 一个发出去的版本如果有重大缺陷 需要强制更新新客户端是多么蛋疼的事情)。

    恩,所以我们app的开发者 一定要学会自己测试自己的代码 自己测试自己的app,不要寄希望于测试来帮你找bug,实际上,我工作多年的经验告诉,绝大多数隐藏极深的bug 都是开发自己发现的。

    所以 今天就来教大家几招,如何测试自己的app,测试自己的模块。

    1.Monkey

    http://developer.android.com/intl/zh-cn/tools/help/monkey.html 

    这个工具是最简单的,我主要用他来压力测试,所谓压力测试就是 乱点。。。模拟各种各样奇怪的操作 看你的app能不能抗的住。

    可以简单看一下 这个命令的用法。看一下help 介绍的参数说明。

    举例来说:

    1 android shell monkey -p 你想测试程序的包名 -v 500

    比如 我现在想看看android 系统自带的日历应用 在压力下表现如何。

    你看 这个地方模拟器自己就开始疯狂点击了。当然在实际使用中,我们都是会把次数调到 几十万次到几百万次,然后下班以后开始跑,第二天来看结果 看看在哪里出了问题~~。基本上

    每日构建完毕以后都会跑一下。Monkey基本上 就是这样使用的。非常简单 但是作用也非常有限。不过可以极大帮助你 找出你app的一些隐藏极深的bug。

    比如evernote,这个我平常使用的软件 我自己是没有碰到过crush的,但是你跑一下monkey,1个多小时 就崩溃了。。。。。所以monkey是提升软件质量的 好帮手。

     

    2.MonkeyRunner

    http://developer.android.com/intl/zh-cn/tools/help/monkeyrunner_concepts.html

    这个相对于Monkey 来说 就是真正意义上的 自动化测试工具了。只需要编写脚本即可完成 我们平时所需要的 大部分  冒烟用例等等。

    尤其是在4.x以下的机型里,由于无法使用uiautomator, MonkeyRunner几乎就是唯一的自动化测试编写办法。

    下面我举个例子,比如我们app里最常用的登录功能,我们就可以编写一个脚本来完成。

    复制代码
     1 # coding=UTF-8
     2 from com.android.monkeyrunner import MonkeyRunner as mr
     3 from com.android.monkeyrunner import MonkeyDevice as md
     4 from com.android.monkeyrunner import MonkeyImage as mi
     5 from com.android.monkeyrunner.easy import EasyMonkeyDevice
     6 from com.android.monkeyrunner.easy import By
     7 
     8 #定义安装文件路径
     9 installPackage = 'C:\\Users\\Administrator\\ViewPageTest\\app\\build\\outputs\\apk\\app-debug.apk'
    10 
    11 #要测试的程序的包名
    12 apkPackageName ='com.example.administrator.viewpagetest'
    13 
    14 #要启动的第一个activity的名称
    15 initActivityName=apkPackageName+"/com.example.administrator.viewpagetest.MainActivity"
    16 
    17 
    18 device = mr.waitForConnection()
    19 
    20 
    21 #安装apk包
    22 device.installPackage(installPackage.decode('utf-8'))
    23 
    24 
    25 #启动应用程序
    26 device.startActivity(component=initActivityName)
    27 #防止启动首页面 需要时间过长
    28 mr.sleep(3)
    29 
    30 easy_device = EasyMonkeyDevice(device)
    31 
    32 mr.sleep(3)
    33 
    34 
    35 
    36 easy_device.type(By.id('id/username_et'),'zhangsan')
    37 # 这里的mr静止 主要用于演示demo上的gif效果 
    38 mr.sleep(2)
    39 easy_device.type(By.id('id/password_et'),'123456')
    40 mr.sleep(2)
    41 easy_device.touch(By.id('id/submit_bt'),md.DOWN_AND_UP)
    复制代码

    然后运行他 看看效果:

    你看上面的脚本 完成了 自己安装apk 输入用户名和密码 并且点击登录按钮的过程。

    有人问,你这个模拟登录的过程是模拟出来了,那我怎么知道 到底登录成功没有呢?

    其实也很简单。主要有几个方法。

    1.登录成功以后你这个页面肯定是要跳转到主界面的对吧,你就用脚本执行下shell命令 看看主页面 是否在栈的最上方?(前面我的activity 启动模式那篇博客里讲过这个命令的)

    2.你可以在log 里面 打印出登录成功这个消息 然后用脚本捕捉到这个log 日志 就知道是否登录成功了。

    3.甚至你还可以捕获界面上某个控件的文字值。

    4.比较某个操作结束后的 截屏。保存为图像以后 和正确操作以后的图像进行对比。

     

    这里我就不继续往下写这个脚本了。有兴趣的同学可以自己尝试 完成日常工作里的 那些冒烟用例。(意义重大,否则每次发版本 你的那些用例全部要用手点击手机完成一遍 那多麻烦!)

     

    此外 我们还可以利用recorder来录制脚本,然后再反过来用python执行这个脚本 来执行我们的测试过程。这个方法 我就不做详细分析了,很简单。(但是要注意 这个方法 启动的 捕捉器 在多数情况下都非常卡顿,所以采用率不高。)

    3.UiAutomator

    http://developer.android.com/intl/zh-cn/tools/testing-support-library/index.html

    这个工具我个人认为是所有android 程序员都必须要掌握的,有了这个强大的工具,我们就可以负责任的对自己的代码 说 木问题,ok!

    此工具 能模拟几乎所有对android设备的操作。

    而且代码也非常简单 全部都是java代码,并且android的api 他还几乎都能够使用。简直酷到没有朋友!比android studio 自带的ApplicationTestCase 强到不知道哪里去了。

    在这之前 你需要对gradle脚本有少许了解。具体可参见我的blog http://www.cnblogs.com/punkisnotdead/p/5029125.html

    这个工具的原理实际上和http://www.cnblogs.com/punkisnotdead/p/4885572.html 里面提到的辅助服务是差不多的。都是利用的那个service。

    你只要会写UiAutomator testcase,就意味着你的代码 几乎是永远不会出错哒~~

    好,下面给出一个基本的例子 来让你明白 为何这个工具这么吊。

    首先 给出gradle里的改动:

    复制代码
     1 apply plugin: 'com.android.application'
     2 
     3 android {
     4     compileSdkVersion 23
     5     buildToolsVersion "23.0.2"
     6 
     7     defaultConfig {
     8         //不要遗漏这句话
     9         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    10         applicationId "com.example.administrator.testcaseone"
    11         minSdkVersion 18
    12         targetSdkVersion 23
    13         versionCode 1
    14         versionName "1.0"
    15     }
    16     buildTypes {
    17         release {
    18             minifyEnabled false
    19             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    20         }
    21     }
    22 }
    23 
    24 dependencies {
    25     compile fileTree(dir: 'libs', include: ['*.jar'])
    26     testCompile 'junit:junit:4.12'
    27     //这个地方要注意了 studio自带的里面版本号一般都比较高,如果出错的话 你要手动把这个版本号调低一点
    28     compile 'com.android.support:appcompat-v7:23.0.1'
    29     compile 'com.android.support:design:23.0.1'
    30     //对这个androidTestCompile不理解的 可以参考我的博客里讲gradle的那篇
    31     androidTestCompile 'com.android.support.test:runner:0.4'
    32     androidTestCompile 'com.android.support.test:rules:0.4'
    33     androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
    34 }
    复制代码

    然后变更一个conifg

    然后我们就可以在studio里面直接run我们的testcase啦:

     

    好,然后我们来假设一个场景,假设我们现在要做的功能是 有一个界面,界面上有2个输入框,你在这2个输入框里输入数字以后,点击计算按钮 

    另外一个textview 就会显示出来 2个数字相加的结果。 那我们的testcase就要来完成 用户模拟操作的这个过程 并且看看结果是否和我们预想中的相匹配!

    (假设我们现在的android代码里这个计算的代码是有错误的)

    1                 textView.setText(Integer.parseInt(et1.getText().toString()) + Integer.parseInt(et2.getText().toString()) + 1 + "");

    你看 这里 我故意加了一个1.

    然后写我们的testcase 注意testcase的位置

     

    然后看一下这个testcase的代码:

    复制代码
     1 package com.example.administrator.testcaseone;
     2 
     3 import android.support.test.uiautomator.UiAutomatorInstrumentationTestRunner;
     4 import android.support.test.uiautomator.UiAutomatorTestCase;
     5 import android.support.test.uiautomator.UiDevice;
     6 import android.support.test.uiautomator.UiObject;
     7 import android.support.test.uiautomator.UiObjectNotFoundException;
     8 import android.support.test.uiautomator.UiScrollable;
     9 import android.support.test.uiautomator.UiSelector;
    10 
    11 /**
    12  * Created by Administrator on 2016/1/5.
    13  */
    14 public class FirstUiautomatorTest extends UiAutomatorTestCase {
    15 
    16     public void testDemo() throws UiObjectNotFoundException {
    17 
    18         UiDevice.getInstance(getInstrumentation());
    19         //19-27 行 其实就是用这个框架提供的功能来直接启动你的app.
    20         //这里其实主要就是要找到你的app那个textview 然后点击他 具体api自己去慢慢看吧
    21         getUiDevice().pressHome();
    22         UiScrollable appViews = new UiScrollable(new UiSelector()
    23                 .scrollable(true));
    24         UiObject myApp = appViews.getChildByText(new UiSelector()
    25                 .className("android.widget.TextView"), "TestCaseOne");
    26         //要等到新的窗口出来才继续往下走
    27         myApp.clickAndWaitForNewWindow();
    28         //29-32行 就很简单了,无非就是找到界面上的元素。
    29         UiObject et1 = new UiObject(new UiSelector().resourceId("com.example.administrator.testcaseone:id/et"));
    30         UiObject et2 = new UiObject(new UiSelector().resourceId("com.example.administrator.testcaseone:id/et2"));
    31         UiObject bt1 = new UiObject(new UiSelector().resourceId("com.example.administrator.testcaseone:id/bt1"));
    32         UiObject tv1 = new UiObject(new UiSelector().resourceId("com.example.administrator.testcaseone:id/tv1"));
    33         //这里的sleep只是为了gif动画能显示的更清楚罢了,一般我们自己写的时候为了用例速度快一点 是不会加sleep的
    34         //某些特殊场景除外
    35         et1.setText("12");
    36         sleep(3000);
    37         et2.setText("21");
    38         sleep(3000);
    39         bt1.click();
    40         //12和21相加 明显应该是33,所以判断下 我们的代码是否正确
    41         assertEquals(33, Integer.parseInt(tv1.getText().toString()));
    42 
    43     }
    44 }
    复制代码

    然后直接run我们的这个defaluttest,看看模拟器会发生什么?

     

    自动都帮你模拟了用户的操作,这个testcase就跑完了,然后看下我们的studio:

    显然的也报错了。并且这个工具能自动捕获ui错误哦~~什么anr 之类的 都不在话下。有了他,我们就能为自己写的代码负责了,每次发版本之前 跑跑我们写好的testcase

    基本上就能保证我们app的绝大多数流程是ok的~~所以这个工具一定要掌握!至于他其他好多api 我就不过多介绍了,留给你们自己去探索吧!


    展开全文
  • 最近就看到一位京东程序员吐槽平时加班太多,忙起来经常忽略女友消息,于是怒写一段程序,全天候24小时推送问候,以及图灵机器人自动回复微信消息,结果下班回家一看有300条聊天记录,看来女朋友聊得挺嗨自己要被...

    关注公众号【人工智能与大数据精选】,加入程序员交流群

    加班是程序员的常态,我之前也是饱受生活和工作时间严重不平衡的折磨,忙起来根本没时间交流,所以也往往会忽略身边人的感受。

     

    最近就看到一位京东程序员吐槽平时加班太多,忙起来经常忽略女友消息,于是怒写一段程序,全天候24小时推送问候,以及图灵机器人自动回复微信消息,结果下班回家一看有300条聊天记录,看来女朋友聊得挺嗨自己要被机器人取代了。

     

     

    底下马上就有人表示很需要这种机器人,老公忙起来也是没时间搭理人,看来程序员的家人基本都饱受这种折磨。

     

    关注公众号【人工智能与大数据精选】,加入程序员交流群

     

    不得不说,这种程序简直就是直男救星,这位程序员也很善于利用程序来解脱自己,女朋友得到了及时的关心和回复,程序员自己也更有时间专心工作。

     

    可以看到,这个程序发出去的对话还是挺暖的,中英文花式关怀,把女朋友哄得一愣一愣的,300条聊天记录这样看来不过分。

     

    但话说回来,人毕竟不是一个机器,不是靠程序化的东西就能满足的,所以无论是作为伴侣身份还是亲人,都还是得花时间和精力去付出和陪伴。机器是没有感情的。

     

    再补一句,我觉得这种东西目前来说更多适用于服务式场景,比如客服,比如餐厅的机器人服务员,用在感情还是很不合适,人与人之间最重要的就是动态的交互,程序是很难解决复杂的动态问题的。

     

    由此我们也需要警醒一点,人工智能如果不分场景应用,一旦大范围发展起来,还是挺可怕的,到时候是人控制程序还是程序控制人就真的说不清了。

     

    就像克劳德·香农说的:“我设想在未来,我们可能就相当于机器人的宠物狗狗,到那时我也会支持机器人的。”

     

    关注公众号【人工智能与大数据精选】,加入程序员交流群

    展开全文
  • 马云语录:  世界是由懒人来支撑的!  懒不是傻懒,如果你想少干, ...并说明第三种"懒"才是最具产值的"懒",因为它需要运用工具或者代码来为自己完成任务:这就是工作中的自动化。 Pragmatic

    马云语录:

      世界是由懒人来支撑的!

      懒不是傻懒,如果你想少干,

      就要想出懒的方法。    

      要懒出风格,懒出境界。

    McConnell在他的<<Code Complete>>提到三种"懒":"实在的懒","开明的懒"以及"一劳永逸的懒"。并说明第三种"懒"才是最具产值的"懒",因为它需要运用工具或者代码来为自己完成任务:这就是工作中的自动化。<<The Pragmatic Programmer>>的作者也有专门章节提到"一切都要自动化"。这些都有异曲同工之妙。到底我们的开发工作中有哪些是可以自动化的呢?


    凡是需要重复的工作(Routine)都可以想办法做到自动化。第一步,可以将编译及软件发布的工作自动化。这类的流程比较固定,还可以在编译后执行一些检查工作。如果你愿意都可以将写Release Note的动作自动化。第二步,可以将手工容易出错,但判断条件单一的工作自动化。比如多国语言的制作以及当前Bug状况检查的动作自动化。 第三步,将测试自动化。对于一些固定的测试用例,或者为新产生的Bug而建的测试用例放置到一个自动化测试脚本中,这样基本可以做到有效的回归测试,对于软件质量将有相当大的帮助。程序员大多对于测试并不热衷,如果有这样一个偷懒的方法,未尝不是件好事。第四步,将编码自动化。至少有些程序是可以这样的。


    偷懒的背后是需要自我突破的勇气的,也是一种永不止步的进取精神。如果发现自己不断重复一件事情,或许每次有些小的变化,我们都可以努力建立一个模型或者流程,使它可以自动化。在财务管理中有一个概念叫ABC (Activity based costing),它是强调将工作细化到每个独立的步骤。在软件开发工作中绝大份工作都是遵循一定的流程或模型,只要找到这个不变的内在,就可以想办法加以自动化(或者半自动化)。


    而可以用来帮我们做到自动化的工具很多,大部份都在SourceForge中,有空去转转。它们或者有以下一些分类:

      代码检查工具:xLint  (splint), cyclo

      UI自动化工具:AutoIt之类的

      强大的脚本工具: Perl, Python

      还有一个常在你身边的工具:Microsoft Office.  我经常使用Excel来作公式的验证,我的一个同事也利用Word中的VBA还完成一批文件格式转换的工作。


    如果我们可以将工具或自己开发的程序视为自己团队的一员,那我们就不是一个人在工作。让它们忙去吧,我们还有更重要的事做!


    参考:

      开发工作中使用的软件列表

      懒人可以用Automator提高工作效率

      使用脚本简化工作

      程序员要学会偷懒---正确运用自动化技术

      如何使用搜索技巧来成为一名高效的程序员

       [《人件》摘录]: 生产力:赢得战役和输掉战争


    展开全文
  • 开发无人编程即编程自动化系统,让程序员失业

    万次阅读 热门讨论 2015-05-07 10:38:22
    作为程序员,我很懒,我希望很多简单重复的工作不需要人去做,直接自动化编程就好,比如软件代工,没什么技术含量,总是由编码工人做重复工作,而不熟练的程序员还做不了,如果用机器来做,其实应该是软件来做,就不...

    无人编程让程序员失业

    开发无人编程即编程自动化系统,让程序员失业

    不久前我写了汉澳sinox无人工厂,引起很大反响,东莞开始有工厂实施无人工厂计划,取代工人。虽然目前即使开发无人工厂也可能只是0.1版本,然后有1.0,2.0,无人工厂不断升级版本,当然跟预想中的汉澳sinox无人工厂还有很大距离,但是毕竟提出了概念,并指明了方向,无人工厂技术研究很可能在中国引发新的工业革命。也为中国制造业指明了出路,不用担心产业转移等让中国丧失世界工厂的地位,无人工厂技术和资金投入会越来越多,保持中国制造业领先地位还是有可能的。

    我有时在想,无人技术发展很快,比如无人机技术已经很成熟,最近无人驾驶也开始实用,无人工厂如果技术也成熟了,那么下一步发展的无人技术是什么?无人是指不需要人,完全自动化操控的技术,不是没有人。作为程序员,我很懒,我希望很多简单重复的工作不需要人去做,直接自动化编程就好,比如软件代工,没什么技术含量,总是由编码工人做重复工作,而不熟练的程序员还做不了,如果用机器来做,其实应该是软件来做,就不需要重复工作的编码工人了。软件设计不需要机器生产,只是脑力劳动,所以也没有无人编程工厂,应该是无人编程软件,用软件生产软件,只是高智慧的软件生产普通应用程序。无人编程工具,应该叫自动化编程系统,还是需要人输入需求的,否则软件不知道生产什么。需求千变万化,不像工厂生产的固定产品,软件生产需要面对复杂的应用程序生成,估计开发难度会比无人工厂大很多,甚至不可能。不过我觉得既然提出了无人编程,即使只是感念,也要把它完善,也许几十年以后无人编程会变成现实。
    一旦无人编程技术成熟,程序员,这个最富智慧和脑力的职业,也要面临消失的可能。程序员将会继产业工人之后走向失业。而很多普通的工作比如理发,护理,打杂等,都可能由机器人完成,这个可能比较容易,要是能取代程序员,那么估计没有什么工作不可以由无人机器或者软件替代。这将是非常可怕,这样还需要什么工作呢?大家都失业在家,让机器人、智能软件接管世界?开发机器人可以由无人工厂完成,而开发机器人软件则由无人编程软件完成,最后只有开发无人编程软件的人员不失业。开发无人编程工具的人是谁?应该是各专业的顶尖科学家。

    只有顶尖科学家可以工作,其他人都失业,成为类似原始部落社会的人,不用做事。这个扯远了,不过程序员应该是最后一批失业的产业工人。
    好,现在已经知道有无人编程这个软件了,那么这个软件是怎么实现呢?说实话,这个软件现在技术还不成熟,我们只能探讨各种可能,并找到开发方法。

    .net类库的优势

    我用过汇编。c/c++,java,perl,php等各种编程语言和工具,直到我用了C#.net,才知道编程真的越来越容易了,汇编不用说了,用机器语言写程序,难。c语言,好些了,不过每个函数功能自己写,累。vc好点,但是mfc写界面还是很难,而且很多算法要自己实现,或者抄袭别人写的类。java更好点。而脚本语言perl.php等怎么说呢?管理系统和做网页是适合,但是做界面是很难的。最后出现了伟大的.net,很多功能函数,数据结构,算法都由.net类库分门别类实现好了,比如要把“1,2,3,4,5”字符串按逗号分开,用split函数就好了,以前见vb有这个函数,觉得很方便,但是c/c++是没有的,现在C#就特别方便了,直接用split就好。所以.net类库非常方便用户编程,而且界面控件也很方便实现,甚至web网页程序也可以用控件实现。.net让程序员开发速度快了好多倍。只可惜.net不能跨平台,windows贵且不好用,所以被抵制。java现在也开发了很多类库,跨平台很好,所以被unix/linux世界推崇。

    .net类库让人类开发能力上了一个档次,虽然面对各种多样复杂的计算,还是需要设计数据结构和逻辑算法,但是大部分基础功能还是可以由.net类库实现了。
    能不能把.net类库提升到一个档次?开发更多的函数功能应该是可能的。但是也不可能包罗万象,把所有计算都包含进去,比如新加坡总理李显龙写的数独求解算法,把算法加入类库,普通程序员就可以开发九宫这种数独游戏。不过数独算法应该找到源代码,这样不需要加入.net类库也可以引用。

    又比如开发3d游戏,虽然可以直接用directx渲染引擎库,但是要实现游戏功能还不是简单调用api就可以,所以又有3D游戏引擎,把更多的函数功能封装成游戏调用接口,但是引擎接口也是很复杂的,熟悉引擎还要花时间,更不要说调用引擎完成游戏场景开发,而游戏数据结构设计,比如静态场景物体和动态物体,通关逻辑设计,对话等,内容非常复杂,不是会写程序就能解决的。我们能不能把游戏引擎再次加入.net类库,让.net类库功能无所不包呢。完全可能,只是这个是.net要做呢,还是属于开发人员引入的引擎类库?如果.net类库无所不包,不过也不可能解决所有的问题,如果有上百万个类,用户又怎么知道怎么使用呢?

    用框架自动生成基础代码

    .net类库无所不包,但是用户怎么用呢?我们开发3d游戏首先要用的是directx(简称dx)显示引擎,在此基础上再使用Unity3D游戏引擎,然后才可以设计数据结构和逻辑算法,现在Unity3D是在dx引擎之上更高一级的引擎,可见需要层层调用引擎。.net类库–>dx–>Unity3D–>游戏,要开发游戏要调用3层引擎,我们称为框架,基础代码,这些框架让我们节省大量工作,如果没有这些框架,开发一个游戏几乎是难以上青天。现在开发者只要集中在游戏逻辑设计以及图像设计就可以了,省去了底层编码。编程自动化就要首先调用框架,然后集中在逻辑设计,从而大大简化无人编程工具的开发。

    我们写程序也是这样,是在操作系统这个框架平台上开发,否则从开发操作系统开始,设计程序简直是不可能。

    我们设计几万个最佳的框架,放入无人编程工具里面,根据需要调用框架,从而实现编程自动化。数独最优解法也可以加入框架,属于数学类框架,供上层调用。

    用脚本语言实现自动代码生成

    有了框架基础代码,我们设计应用程序就集中在数据结构和逻辑算法设计,根据用户的数据结构和逻辑算法自动生成源代码。比如我们说的元语言编程,通过定义元语言,用脚本自动生成代码。我们可以用shell,perl,python等脚本语言自动生成代码,可以输入元语言脚本,自动生成某种语言的源代码。比如说要生成登录程序,会根据用户定义生成账户的注册,修改,删除,登录,验证码等包含数据库操作和界面交互的源代码,不再需要普通程序员编写代码了。脚本的定义和解释都是由用户写的脚本决定,可以根据需要修改脚本。这个方法可以生成大部分代码,只是灵活性不是很高,可能满足比较固定的应用程序代码生成。

    用lisp等高级语言实现自动代码生成

    lisp是表处理语言,拥有xml,元语言,模版等特征,可以用来生成新的应用程序代码,不过代码生成都用lisp实现,一旦改动,是不是也要修改lisp程序,跟脚本生成差别不是很大,不过对某些程序生成可能有用。比如cad用lisp脚本生成三维模型,也许在涉及开发制图程序,可能lisp很有用。比如很多模型可以用lisp保存。

    现在已经有一些代码生成器软件,可以通过向导方式生成源代码。

    用模版实现自动代码生成

    我们开发大同小异的网页程序,为了满足个性化的界面输出,大量使用模版功能。在无人编程工具里面,我们是不是可以引入模版,从而满足大同小异的多样化应用程序生成需要。我们编程语言也引入了模版,也称为泛型,泛类型,开发程序用《T》代表任何类型数据,这样写程序调用会有统一的接口,不管这个类型是整数,实数还是字符串,使用的时候指定T的类型就可以。
    我们开发自动代码生成也可以用模版,比如指定数据库字段的名字和类型,就可以自动生成数据表字段,以及操作数据库的类,界面操作的类。而界面颜色用了模版,用户指定了某种颜色,就在生成的代码中产生指定的颜色,而不是固定死,对于动态生成颜色的代码可能没用。模版可能适合生成某些比较固定的模式。

    用大数据云计算实现自动代码生成

    我看到语音识别系统存入数百万个语音片段,而表情识别系统则有几百万个表情存入数据库,可见自动代码生成可能存入数百万个代码片段,然后有数百万个分门别类好的功能函数,大量的数据结构,大量的逻辑算法,甚至是逻辑算法生成模型。比如生成1到1万的素数和,就要调用循环代码,素数判断函数,累加几个功能,显然用大数据,模版等技术,生成1到1万的素数和代码是完全可能的。
    更复杂的,游戏设计,设计背景物体,怪物,玩家数据结构设计,物体出现、运动、死亡的逻辑,要完全自动生成,需要开发人员定义很多元数据,而且可能还不够,需要设计独有的算法,只是编写代码是不需要了。应用程序复杂多样,可能自动生成工具也不是那么简单能实现,不过像教学类的,比如出题考试,无非是建立题库,出题逻辑算法,答案比较和分数生成,最难的是作文计分,这个智能程度很高,开发自动生成工具需要熟练的了解相关专业,然后可以生成一万个考题应用程序,甚至考题系统也能智能化,这个程序本身就能应付一万种考题系统,那么自动生成考题系统可能就不需要了。

    综合多种技术人工智能自动生成代码

    大数据可能还不能满足代码生成需要,可能还需要各种代码生成模型,我们说这是更高一级的代码生成人工智能,人工智能将应用上面提到的各种程序生成技术和手段,甚至自我学习能力,完成自动代码生成。人工智能的神经网络,深度学习技术,可能对代码生成很有帮助。

    开发sepl自动编程工具

    既然提出了编程自动化,我觉得sepl不应该只是满足于作为一个编程语言和集成开发工具,而是一个更高一级的无人编程工具。sepl无人编程工具拥有数百万个代码片段,数十万个框架,数十万个代码生成模型,大量的模版,用户只需要定义应用程序生成条件,就可以做到一键生成应用程序。这样就不再需要程序员,而只是需要需求分析员,程序代码自动生成。

    新一代程序界面将智能动态输出界面,从而实现图形界面开发自动化

    在多层逻辑实现的程序设计中,比如游戏,后台服务器端可能都差不多,游戏逻辑也接近,只是反映在界面上,个性化界面,导致界面设计很复杂,如果界面是静态的,那么几亿个用户,涉及界面设计,自动生成很难实现人性化界面。不过如果我们采用动态界面输出技术,系统根据个人喜好输出界面,就不再需要面对无数的个性化界面设计。动态的界面会根据个人喜好调整界面输出。这样自动化代码生成面临的复杂个性化界面输出就解决了,而后端逻辑设计,代码自动生成就变得容易了。

    自动代码测试让程序合格出厂

    生成的代码是否合格可用,如果用人去检查测试,也是很麻烦的。系统推出自动代码测试,生成源代码的时候也生成测试代码,可以对程序进行全面的完整的自动化测试,合格的产品可以出厂了。

    是噩梦还是光明?

    自动代码生成系统出来后,写程序不再需要编码,程序员自然不需要很多。当人们还在因为写不好程序而困顿的时候,开发自动程序生成工具是不是早了一点。其实自动程序生成也不是不需要写程序,而是写一次程序,到处可以利用,不用重复写程序了,比如数独游戏一旦实现了自动生成,也许某个3d游戏需要数独游戏,这个3d游戏就不需要重新写数独程序, 而是开发工具自动生成。
    就像java编写一次,到处运行一样,无人编程是写一次程序,到处可以使用,不需要写第二次了。

    无人编程工具出现,编程速度会非常快,一个人顶上100个程序员,中国原来需要500万个程序员现在只需要5万个,99%的程序员失业了。

    即使最复杂的应用程序都能自动生成,机器人等单一程序是不是更容易?

    现在sepl无人编程工具还需要像visual studio那样到处散卖吗?估计也没有人买得起。

    展开全文
  • 一、自动化脚本有哪些平台:1、按键精灵*:特点是开发工具齐全、快速简单,比触动强不少,但是最近收费了,导致大量的人跳到触动了。缺点:因为是靠识别图片、颜色和坐标为基础的,因此对不同分辨率...
  • 帖子的大意是:一个FiletOFish1066的程序员称自己六年前入职了一家知名的科技公司,入职8个月之后它就把自己负责的工作内容几乎全部自动化了。上个员工要干1个月的活,他自动化程序10分钟不到就搞定了。 不过他...
  • 程序员(技术开发)修炼三部曲(单元测试之道、版本控制之道、项目自动化之道)  1 版本控制之道Git/SVN/VSS...  2 单元测试之道JUnit/TestNT/CPPUnit...  3 项目自动化之道Make/Ant/Maven/cruisecontrol 程序员...
  • 一、什么是自动化测试自动化测试是把以人为驱动的测试行为改成机器执行,通过精心设计的测试用例,由机器按照测试用例的执行步骤对应用进行自动操作,然后输出结果,由测试人员进行比较。自动化测试可以极大的节省...
  • 程序员真是太太太太太有趣了!!!

    万次阅读 多人点赞 2019-08-31 15:00:00
    网络上虽然已经有了很多关于程序员的话题,但大部分人对这个群体还是很陌生。我们在谈论程序员的时候,究竟该聊些什么呢?各位程序员大佬们,请让我听到你们的声音!不管你是前端开发...
  • 网上的爬虫、自动化一般都是使用python来做的; 身为java程序员,当然也要不甘示弱! 所以就写了java爬虫、自动化系列文章,供众多java程序员参考!
  • 刚看到这种言论的时候深深的为后端的我担心了以后会不会哪天后端的代码也自动生成了? 就事论事,我们今天就来分析一下程序员会不会干着干着,就把自己干没了! 首先从问题点入手:前端干着干着就把自己干没了? ...
  • 东方程序员怎么看西方程序员

    千次阅读 2017-12-25 18:29:45
    摘要:东方程序员与西方程序员,彼此心中是什么样子呢?本文收集了东西方程序员对彼此的看法与各种印象,对于西方/东方程序员,你留有什么印象呢?本文是作者根据StackExchange上的一个讨论贴:东方程序员眼中的西方...
  • Python自动化测试框架

    千次阅读 2019-10-27 14:02:15
    Python自动化测试框架 1 什么自动化测试框架 什么是工具——工具(Tools)类似框架,只是工具屏蔽了底层的代码,提供单独的操作界面,以此供用户操作,比如:Selenium IDE、Postman、QTP、Jmeter、LoadRunner等自动...
  • 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目...
  • 【Jenkins自动化部署】监控服务自动化构建

    千次阅读 多人点赞 2020-09-09 10:34:06
    Jenkins 系列会从 Ubuntu的服务端部署、 Linux节点的Python服务自动化构建、 Windows节点Python服务自动化构建、 Vue服务自动化构建、 监控服务自动化构建、 用户权限控制 几个方面进行介绍
  • 【Jenkins自动化部署】Vue服务自动化打包构建

    千次阅读 多人点赞 2020-09-08 18:10:33
    Jenkins 系列会从 Ubuntu的服务端部署、 Linux节点的Python服务自动化构建、 Windows节点Python服务自动化构建、 Vue服务自动化构建、 监控服务自动化构建、 用户权限控制 几个方面进行介绍
  • 程序员修炼三部曲

    热门讨论 2013-01-04 16:34:52
    通过在网上寻找资料整理出来的《程序员修炼三部曲》最完整的中文集合,其目录如下: 程序员修炼三部曲之1:版本控制之道,使用CVS_EN.pdf ...程序员修炼三部曲之3:项目自动化之道,如何建构、部署、监控JAVA应用.pdf
  • Web自动化测试实战(一)

    万次阅读 多人点赞 2019-08-23 15:41:39
    一丶认识web自动化测试 1. 什么是自动化测试? 2.为什么进行自动化测试? 3.自动化测试的分类 二丶元素定位 1.为什么要学习定位元素? 2.元素定位的工具或手段有哪些? 3.环境及工具 4.css选择器 一丶认识web...
  • 程序员》与我的程序员之路

    千次阅读 2021-06-21 11:00:36
    提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 提示:这里可以添加本文要...
  • 1. 数字化 2. 自动化 3. 虚拟化 4. 云化 5. 智能化
  • C#自动化测试工具编写(借助API)

    千次下载 热门讨论 2010-10-30 17:54:48
    在日常编码过程中,我们常常会进行自动化测试。这里的自动化测试不是指单元测试,而是模拟人工输入来进行快速的、高并发的测试。可以使用的自动化工具有LOADRUNNER,以及目前在VS2010中的功能很强大的测试工作平台...
  • 高效程序员的习惯之一——让开发流程自动化。Automating shapes smarter future. 这是一个关于如何快速实现 PHP 项目自动化持续集成的快速指导。无论你是否使用过持续集成,或在苦心寻找一款合适的持续集成工具,...
  • 解放程序员双手!GPT-3自动生成SQL语句

    万次阅读 多人点赞 2021-01-28 16:41:01
    “无所不能”的GPT-3,现在又来解放程序员们的双手了。 像这样,只需用简单的英文问下GPT-3“上个月注册了多少个用户”。 GPT-3便会迅速作答,给出对应的SQL语句: SELECTCOUNT(*)FROMusers WHEREsignup_time>...
  • 我们在上一篇《漫谈自动化测试...既然我们知道了要开展自动化测试,那也有必要知道自动化测试成熟度的阶段划分,就像程序员也分初级、中级、高级等一样,一个公司或团队的自动化测试的能力构建,也可划分以下三个阶段。
  • 程序员入职必看书之Java程序员

    千次阅读 2015-02-27 14:30:46
    程序员入职必看书之Java程序员    前几天发布了一篇程序员必看的书,现在的IT程序员,程序员们不要一味的敲代码,我们也要有时间为自己充充电,买个kindle,公车,地铁上可以多多看看书.接下来我将为程序员们继续推荐...
  • 程序员不要总想着四两拨千斤

    万次阅读 多人点赞 2021-01-05 01:07:14
    1. 因为数字程序员会长期存在 经常会有媒体拿 35 岁来制造年龄焦虑,但现实生活中,我也见过不少超过 35 岁的程序员。在中国几十年前是没有程序员,就如同再往前几十年,中国是没有农民工的概念的。 我出生在...
  • 1024致敬程序员

    2018-10-24 22:22:18
    1.程序员节   每年公历10月24日,成为程序员们的一个节日。至于缘由,因为电子计算机中是以二进制为运算和存储的,比如存储容量1Mb = 1024Kb,1024刚好是2的10次方。因此,10月24日在程序员的调侃中成为了程序员节...
  • 程序员生存定律

    万次阅读 多人点赞 2014-09-04 09:07:07
    http://blog.csdn.net/leezy_2000/article/details/29407747#comments 程序员生存定律这书是陆续发的,所以做个目录让想从头读的方便些: 前言:解码程序人生

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 424,928
精华内容 169,971
关键字:

自动化程序员