精华内容
下载资源
问答
  • 区块链中中心是什么意思

    千次阅读 2020-08-05 11:07:39
    本周,DeFi 的总锁仓价值(TVL)攀升至 40 亿美元。这是因为以太币和其它加密货币的持有者可以通过为 DeFi 借贷网络提供流动性来获得这些网络所发行的原生代币作为奖励。DeFi 流动性聚合商 Yearn.Finance 所发行的...

    本周,DeFi 的总锁仓价值(TVL)攀升至 40 亿美元。这是因为以太币和其它加密货币的持有者可以通过为 DeFi 借贷网络提供流动性来获得这些网络所发行的原生代币作为奖励。DeFi 流动性聚合商 Yearn.Finance 所发行的原生代币 YFI 就是其中一例。它将 Dai 的流通量推向新高,现已回落。
    在这里插入图片描述

    流动性挖矿的热潮不只是体现在 YFI 代币上:Compound Labs 发行的 COMP 代币和通胀型代币 AMPL 均采用类似的机制。周二有报导称,一家金融科技借贷机构将以 9000 万美元收购 OnDeck (ONDK)。但是,这一消息并未浇灭用户对 DeFi 借贷网络的热情。OnDeck 于 2014 年上市,估值为 13 亿美元。

    我依然想不明白的是,有了那么多金融科技借贷公司的失败先例,为什么 DeFi 借贷平台能如此成功?

    与此同时,以太坊的核心价值主张似乎带有一丝讽刺意味。DeFi 很有趣,但是以太坊的交易量和交易费(你可以称之为以太币的基本指标)目前被锚定美元的稳定币 USDT 大幅推高。周三,USDT 的发行量已经超过 110 亿美元。

    DeFi 近期的表现非常好,但是到目前为止,中心化项目依然领先。

    流动性挖矿也拉动了用户对 USDT 的需求。正如衍生品数据聚合商 Skew 指出,本周,在全球流动性最高的比特币期货市场上,现货价格和期货价格之间的基差达到了 20%。Nexo 上的 USDT 借款利率在 6% 至 10% 之间, 因此借入 USDT 来进行比特币价格的买现卖期交易是一种获得低风险回报的好方法。

    中心化服务提供商(如,Tether 的母公司 iFinex)似乎有一件事做对了,就是助推投机市场。迄今为止,加密货币行业中最具价值的应用是 Binance 和 BitMEX 等中心化离岸交易所。像 iFinex 一样,这些去中心化离岸交易所的运营商已经开创了新型市场结构,打破了财富和地理的障碍,让更多人可以获得高风险、高波动性的投资机会,就像 Robinhood 在美国所做的那样。

    因此,“Robinhood 效应”代表了股票市场对加密货币市场的威胁。现在,股票交易市场似乎也放宽了限制,摆脱了基本面的束缚。本周,柯达公司(Kodak)成了 Robinhood 投资者的新宠。该公司曾于 2018 年参与 ICO 。

    这就是为什么衍生品交易所 FTX 宣布开发 DEX(去中心化交易所)Serum。从表面上来看,这没多大意义。迄今为止,币安的 DEX 是同类产品中最成功的,但是在规模和增长率上都与其中心化交易所相差甚远。

    FTX 的 DEX 或能超越币安。或许它做不到,创建 DEX 只是很好的营销手段。但是,如果股票市场在波动性上越来越接近加密货币市场,那么从战略角度上来说,这些 DEX 很重要。

    目前,加密货币是前沿。将来,交易者可能会将目光放得更长远一些。比特币可以让人们随时随地获得金钱,不受政府干预和通货膨胀的影响。DEX 可以让人们不受限制地进行交易和投资。

    如今,对于几乎任何一款去中心化产品来说,其中心化竞品都更加成功。未来,随着环境发生变化,加密货币和合成衍生品类型不断扩大,这一情况会不会发生改变呢?或许,创建 DEX 并不是为了保护现有加密货币市场免受监管机构的控制,而是为了迎接监管程度更低的未来市场。

    展开全文
  • 最全最详细的PHP面试题(带有答案)

    千次阅读 多人点赞 2019-12-29 21:41:05
    这篇文章介绍的内容是关于最全最详细的PHP面试题(带有答案),有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 相关推荐: 八重樱:分享一波腾讯PHP面试题 八重樱:2019年PHP最新面试题(含答案) ...

    这篇文章介绍的内容是关于最全最详细的PHP面试题(带有答案),有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

    相关推荐:

    八重樱:分享一波腾讯PHP面试题

    八重樱:2019年PHP最新面试题(含答案)

    八重樱:Redis 高级面试题 学会这些还怕进不了大厂?

    八重樱:阿里面试官三年经验PHP程序员知识点汇总,学会你就是下一个阿里人!

    八重樱:php面试题之PHP核心技术

    八重樱:掌握 Redis这些 知识点,面试官一定觉得你很 NB

     

    1、__FILE__表示什么意思?(5分)

    文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径。

    2、如何获取客户端的IP地址?(5分)

    $_SERVER[‘REMOTE_ADDR’]
    

    3、写出使用header函数跳转页面的语句(5分)

    Header(‘location:index.php’);
    

    4、$str是一段html文本,使用正则表达式去除其中的所有js脚本(5分)

    $pattern = ‘/<script.*>\.+<\/script>/’;
    
    Preg_replace($pattern,’’,$str);
    

    5、写出将一个数组里的空值去掉的语句(5分)

    $arr = array(‘’,1,2,3,’’,19);
    

    第一种方法:

    $array1 = array('  ',1,'',2,3);
    
    print_r(array_filter($array1, "del"));
    
    function del($var)
    
    {
    
           return(trim($var)); 
    
    }
    

    第二种方法:

    $arr=array("",1,2,3,"");
    
    $ptn="/\S+/i";
    
    print_r(preg_grep($ptn,$arr));
    

    6、写出获取当前时间戳的函数,及打印前一天的时间的方法(格式:年-月-日 时:分:秒) (5分)

    Time();
    
    Date(“Y-m-d H:i:s”,Strtotime(“-1 day”));
    

    7、写出php进行编码转换的函数(5分)

    Iconv(‘utf-8’,’gb2312’,$str);
    

    8、$str = “1,3,5,7,9,10,20”,使用什么函数可以把字符串str转化为包含各个数字的数组?(5分)

    $arr = explode(“,”,$str);
    

    9、serialize() /unserialize()函数的作用(5分)

    serialize()和unserialize()在php手册上的解释是:

    serialize — 产生一个可存储的值的表示,返回值为字符串,此字符串包含了表示 value 的字节流,不丢失其类型和结构,可以存储于任何地方。

    unserialize — 从已存储的表示中创建 PHP 的值

    具体用法:

    $arr = array(“测试1″,”测试2″,”测试3″);//数组
    
    $sarr = serialize($arr);//产生一个可存储的值(用于存储)
    

    //用任意方法(例如:你要是吧$sarr存在一个文本文件中你就可以用file_get_contents取得)得到存储的值保存在$newarr中;

    $unsarr=unserialize($newarr);//从已存储的表示中创建 PHP 的值
    

    10、写出一个函数,参数为年份和月份,输出结果为指定月的天数(5分)

    Function day_count($year,$month){
    
    Echo date(“t”,strtotime($year.”-”.$month.”-1”));
    
    }
    

    11、一个文件的路径为/wwwroot/include/page.class.php,写出获得该文件扩展名的方法(5分)

    $arr = pathinfo(“/wwwroot/include/page.class.php”);
    
    $str = substr($arr[‘basename’],strrpos($arr[‘basename’],’.’));
    

    12、你使用过哪种PHP的模板引擎?(5分)

    Smarty,thinkphp自带的模板引擎

    13、请简单写一个类,实例化这个类,并写出调用该类的属性和方法的语句(5分)

    Class myclass{
    
    Public $aaa;
    
    Public $bbb;
    
    Public function myfun(){
    
    Echo “this is my function”;
    
    }
    
    }
    
    $myclass = new myclass();
    
    $myclass->$aaa;
    
    $myclass->myfun();
    

    14、本地mysql数据库db_test里已建有表friend,数据库的连接用户为root,密码为123

    friend表字段为:id,name,age,gender,phone,email

    请使用php连接mysql,选择出friend表里age > 20的所有记录打印结果,并统计出查询出的结果总数。(5分)

    <?php
    
    $link = Mysql_connect(“localhost”,”root”,”123”) or die(“数据库连接失败!”);
    
    Mysql_select_db(“db_test”,$link) or die(“选择数据库失败!”);
    
    $sql = “select id,name,age,gender,phone,email from friend where age>20”;
    
    $result = mysql_query($sql);
    
    $count = mysql_num_rows($result);
    
    While($row = mysql_fetch_assoc($result)){
    
    Echo $row[‘id’];
    
    ….
    
    }
    

    15、以下有两个表

    user表 字段id (int),name (varchar)

    score表 字段uid (int),subject (varchar) ,score (int)

    score表的uid字段与user表的id字段关联

    要求写出以下的sql语句

    1)在user表里新插入一条记录,在score表里插入与新加入的记录关联的两条记录(5分)

    2)获取score表里uid为2的用户score最高的5条记录(5分)

    3)使用联合查询获取name为“张三”的用户的总分数(5分)

    4)删除name为“李四”的用户,包括分数记录(5分)

    5)清空score表(5分)

    6)删除user表(5分)

    1). mysql_query(“insert into user(name) values(‘test’)”);
    
    $id = mysql_insert_id();
    
    Mysql_query(“insert into score(uid,subjext,score) values(“.$id.”,’english’,’99’)”);
    
    2).$sql = select uid,sunjext,score from score where uid=2 order by score desc limit 0,5;
    
    3).select s.score from score s RIGHT JOIN user u ON u.id=s.uid where u.name=’张三;
    
    4).delete from score where uid in(select id from user where name=’李四’);
    
    Delete from user where name=’李四’;
    
    5).delete from score;
    
    6).drop table user;
    

    以上就是最全最详细的PHP面试题(带有答案)的详细内容

    很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我整理了一些资料,需要的可以免费分享给大家(点击此处加入php高级交流群一起学习交流,11年架构师带你解读年薪50万面试通关秘籍。)

    如果喜欢我的文章,想与一群资深开发者一起交流学习的话,获取更多相关大厂面试咨询和指导,欢迎加入我的学习交流群点击此处一起学习成长

    展开全文
  • 测试开发需要学习的知识结构

    万次阅读 多人点赞 2018-04-12 10:40:58
    以创新的工作模式提升产品的用户价值 职位要求: -计算机相关专业,本科及以上学历 -能熟练地应用以下一门或几门技术进行相关开发:C/C++/Java/object-c、Linux/Unix Shell、Perl/Python/PHP、JavaScript/Html/Ajax...

     努力成为一个优秀的测试开发从业者,加油!!!   

    目录

    一、白盒与黑盒测试什么区分

    1、黑盒测试

    2、白盒测试

    3、白盒测试&黑盒测试对比

    4、白盒测试&黑盒测试详细介绍

    黑盒测试

    白盒测试

    二、测试相关经验

    三、测试能力培养

    一、业务分析能力

    二、缺陷洞察能力

    三、团队协作能力

    四、专业技术能力

    五、逻辑思考能力

    六、问题解决能力

    七、沟通表达能力

    八、宏观把控能力


    借楼发个招聘信息:
    【2021 MEGQA-用户质量效能部校园提前批开始啦】
    工作职责:
    -负责百度核心产品的测试工作,如信息流、搜索、百度APP、小程序、好看视频、贴吧等
    -参与产品需求、系统设计和程序代码的评审工作并提出改进意见
    -评估项目质量风险并制定项目测试方案,设计并执行测试用例,跟踪定位产品软件中的缺陷或问题,保证项目质量和进度
    -根据产品和项目特点,提出合理的自动化解决方案,并负责产品线特色化的测试框架和测试工具,运用技术手段提升代码交付的质量和效率
    -参与互联网产品整个工程生产、发布过程中的技术创新,包括研发敏捷研发工具、线上监控系统、性能测试和监督工具等精确评估线上系统表现,以创新的工作模式提升产品的用户价值
    职位要求:
    -计算机相关专业,本科及以上学历
    -能熟练地应用以下一门或几门技术进行相关开发:C/C++/Java/object-c、Linux/Unix Shell、Perl/Python/PHP、JavaScript/Html/Ajax、MySql/Oracle及相关数据库技术等
    -具备快速的产品及业务学习能力,敏捷全面的逻辑思维能力
    -有责任心、敢于担当,工作积极主动,具备良好的团队合作精神,能融入多功能团队并与其他部门同事进行良好的沟通及合作
    -热爱互联网,对互联网相关业务或技术充满好奇及热情;在软件测试领域,对发现、分析及解决问题的工作有浓厚兴趣

    感兴趣的同学可以将简历投递至liujunping@baidu.com

     

    ========================================================================================

    一些视频链接:我这有一些软件测试的视频,你可以点开看看。

    转行互联网测试需要哪些技能? - 假装在测试的回答 - 知乎

    作为一名软件测试人员,有哪些网站是你应该多多关注的,哪些书籍是你必须要看的? - 假装在测试的回答 - 知乎

    一、白盒与黑盒测试什么区分

    1、黑盒测试

    黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。 “黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。

    2、白盒测试

    白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。

    “白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。

    软件人员使用白盒测试方法,主要想对程序模块进行如下的检查:
    – 对程序模块的所有独立的执行路径至少测试一次;
    – 对所有的逻辑判定,取 “ 真 ” 与取 “ 假 ” 的两种情况都至少测试一次;
    – 在循环的边界和运行界限内执行循环体;
    – 测试内部数据结构的有效性,等。
    具体包含的逻辑覆盖有: – 语句覆盖 – 判定覆盖 – 条件覆盖 – 判定-条件覆盖 – 条件组合覆盖 – 路径覆盖。

    3、白盒测试&黑盒测试对比

    白盒测试技术 (White Box Testing) : 深入到代码一级的测试,使用这种技术发现问题最早,效果也是最好的。该技术主要的特征是测试对象进入了代码内部,根据开发人员对代码和对程序的熟悉程度,对有需要的部分进行在软件编码阶段,开发人员根据自己对代码的理解和接触所进行的软件测试叫做白盒测试。这一阶段测试以软件开发人员为主,在 JAVA 平台使用 Xunit 系列工具进行测试, Xunit 测试工具是类一级的测试工具对每一个类和该类的方法进行测试。

    黑盒测试技术( Black Box Testing ):黑盒测试的内容主要有以下几个方面,但是主要还是功能部分。主要是覆盖全部的功能,可以结合兼容,性能测试等方面进行,根据软件需求,设计文档,模拟客户场景随系统进行实际的测试,这种测试技术是使用最多的测试技术涵盖了测试的方方面面,可以考虑以下方面:

    1正确性 (Correctness) :计算结果,命名等方面

    2可用性 (Usability) :是否可以满足软件的需求说明。

    3边界条件 (Boundary Condition) :输入部分的边界值,就是使用一般书中说的等价类划分,试试最大最小和非法数据等等。

    4性能 (Performance) : 正常使用的时间内系统完成一个任务需要的时间,多人同时使用的时候响应时间在可以接受范围内。 J2EE 技术实现的系统在性能方面更是需要照顾的,一般原则是 3 秒以下接受, 3-5 秒可以接受, 5 秒以上就影响易用性了。如果在测试过程中发现性能问题,修复起来是非常艰难的,因为这常常意味着程序的算法不好,结构不好,或者设计有问题。因此在产品开发的开始阶段,就要考虑到软件的性能问题

    5压力测试 (Stress) : 多用户情况可以考虑使用压力测试工具,建议将压力和性能测试结合起来进行。如果有负载平衡的话还要在服务器端打开监测工具 , 查看服务器 CPU 使用率,内存占用情况,如果有必要可以模拟大量数据输入,对硬盘的影响等等信息。如果有必要的话必须进行性能优化 ( 软硬件都可以 ) 。这里的压力测试针对的是某几项功能。

    6错误恢复 (Error Recovery) :错误处理,页面数据验证,包括突然间断电,输入脏数据等。

    7安全性测试 (Security) :这个领域正在研究中,防火墙、补丁包、杀毒软件等的就不必说了,不过可以考虑。破坏性测试时任意看了一些资料后得知 , 这里面设计到的知识 内容可以写本书了 , 不是一两句可以说清的,特别是一些商务网站,或者跟钱有关,或者和公司秘密有关的 web 更是需要这方面的测试,在外国有一种专门干这一行的人叫安全顾问,可以审核代码,提出安全建议,出现紧急事件时的处理办法等,在国内没有听说哪里有专门搞安全技术测试的内容。

    4、白盒测试&黑盒测试详细介绍

    黑盒测试

      · 等价类划分方法
      · 边界值分析
      · 错误推测
      · 因果图方法
      · 判定表驱动分析方法
      · 正交实验设计方法:取正交的测试用例组合
      · 功能图分析方法
    1)等价类划分:
      把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一个子集中选取少数具有代表性的数据作为测试用例,该方法是一种重要的,常用的黑盒测试 用例设计方法。等价类划分可有两种不同的情况:有效等价类和无效等价类。
      有效等价类:对于程序的规格说明来说是合理的,有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
      无效等价类:与有效等价类的定义相反。
    2)边界值分析法:
      边界值分析方法是对等价类划分方法的补充。长期的测试 工作经验告诉我们,大量的错误是发生在输入或者输出范围的边界上,而不是发生在输入输出范围的内部,因此针对各种边界情况设计测试用例,可以查出更多的错误。
      使用边界值分析方法设计测试用例,首先应确定边界情况,通常输入和输出等价类的边界,就是应着重测试的边界情况,应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取边界类中的典型值或任意值作为测试数据。
    3)错误推测法:
      基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。
      列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。例如,在 单元测试时列出的许多在模块中常见的错误,以前产品测试中经常发现的错误等,这些就是经验的总结。还有,输入数据和输出数据为零的情况;输入表格为空格或者输入表格只有一行,这些都是容易发生错误的情况,可选这些情况下的例子作为测试用例。
    4)因果图方法:
      前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系。考虑输入条件之间的相互组合,可能会产生一些新的情况,但要检查输入条件的组合意识一件容易的事情,因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例,这就需要利用因果图。
    因果图方法最终生成的是判定表,它适合于检查程序输入条件之间的各种组合情况。
    利用因果图生成测试用例的基本步骤:
      (1) 分析软件规格说明描述中, 那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件), 并给每个原因和结果赋予一个标识符.
      (2) 分析软件规格说明描述中的语义.找出原因与结果之间, 原因与原因之间对应的关系. 根据这些关系,画出因果图.
      (3) 由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不不可能出现. 为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件.
      (4) 把因果图转换为判定表.
      (5) 把判定表的每一列拿出来作为依据,设计测试用例.
      从因果图生成的测试用例(局部,组合关系下的)包括了所有输入数据的取TRUE与取FALSE的情况,构成的测试用例数目达到最少,且测试用例数目随输入数据数目的增加而线性地增加.
      前面因果图方法中已经用到了判定表.判定表(Decision Table)是分析和表达多逻辑条件下执行不同操作的情况下的工具.在程序设计发展的初期,判定表就已被当作编写程序的辅助工具了.由于它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确.
    5)判定表通常由四个部分组成.
      条件桩(Condition Stub):列出了问题得所有条件.通常认为列出得条件的次序无关紧要.
      动作桩(Action Stub):列出了问题规定可能采取的操作.这些操作的排列顺序没有约束.
      条件项(Condition Entry):列出针对它左列条件的取值.在所有可能情况下的真假值.
      动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作.
      规则:任何一个条件组合的特定取值及其相应要执行的操作.在判定表中贯穿条件项和动作项的一列就是一条规则.显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列.
       判定表的建立步骤:(根据软件规格说明)
      ①确定规则的个数.假如有n个条件.每个条件有两个取值(0,1),故有 种规则.
      ②列出所有的条件桩和动作桩.
      ③填入条件项.
      ④填入动作项.等到初始判定表.
      ⑤简化.合并相似规则(相同动作)
      B. Beizer 指出了适合使用判定表设计测试用例的条件:
      ①规格说明以判定表形式给出,或很容易转换成判定表.
      ②条件的排列顺序不会也不影响执行哪些操作.
      ③规则的排列顺序不会也不影响执行哪些操作.
      ④每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则.
      ⑤如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要.

    白盒测试

    白盒测试的方法:总体上分为静态方法和动态方法两大类。

    静态分析是一种不通过执行程序而进行测试的技术。静态分析的关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义。

    动态分析的主要特点是当软件系统在模拟的或真实的环境中执行之前、之中和之后 , 对软件系统行为的分析。动态分析包含了程序在受控的环境下使用特定的期望结果进行正式的运行。它显示了一个系统在检查状态下是正确还是不正确。在动态分析技术中,最重要的技术是路径和分支测试。下面要介绍的六种覆盖测试方法属于动态分析方法。

    本文介绍六种白盒子测试方法:(强度由低到高)语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。

    1)所谓语句覆盖:就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。这里的“若干个”,意味着使用测试用例越少越好。语句覆盖率的公式可以表示如下:

    语句覆盖率=被评价到的语句数量/可执行的语句总数 x 100%

    2判定覆盖:使设计的测试用例保证程序中每个判断的每个取值分支(t or f)至少经历一次

    [优点]:判定覆盖具有比语句覆盖更强的测试能力,而且具有和语句覆盖一样的简单性,无需细分每个判定就可以得到测试用例。

    [缺点]:往往大部分的判定语句是由多个逻辑条件组合而成(如,判定语句中包含AND、OR、CASE),若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。

      例如:

      int a,b;

      if(a || b)

      执行语句1

      else

      执行语句2

    要达到这段程序的判断覆盖,我们采用测试用例:1)a = true , b = true ;2)a = flase, b = flase

    3条件覆盖:条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,判定中每个条件的所有可能结果至少出现一次,但未必能覆盖全部分支

    条件覆盖要检查每个符合谓词的子表达式值为真和假两种情况,要独立衡量每个子表达式的结果,以确保每个子表达式的值为真和假两种情况都被测试到。

    4 判定条件覆盖:判定-条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果至少执行,即要求各个判断的所有可能的条件取值组合至少执行一次。

    5) 条件组合覆盖:在白盒测试法中,选择足够的测试用例,使所有判定中各条件判断结果的所有组合至少出现一次,满足这种覆盖标准成为条件组合覆盖。

    6路径覆盖:是每条可能执行到的路径至少执行一次;

     说明:其中语句覆盖是一种最弱的覆盖,判定覆盖和条件覆盖比语句覆盖强,满足判定/条件覆盖标准的测试用例一定也满足判定覆盖、条件覆盖和语句覆盖,条件组合覆盖是除路径覆盖外最强的,路径覆盖也是一种比较强的覆盖,但未必考虑判定条件结果的组合,并不能代替条件覆盖和条件组合覆盖。

    举例:

    if A and B then Action1

    if C or D then Action2

    1)语句覆盖最弱,只需要让程序中的语句都执行一遍即可 。上例中只需设计测试用例使得A=true B=true C=true 即可。

    2)分支覆盖又称判定覆盖:使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假均曾被满足。上例需要设计测试用例使其分别满足下列条件即可(1)A=true,B=true,C=true,D=false(2)A=true,B=false,C=false,D=false。

    3)条件覆盖:要使得每个判断中的每个条件的可能取值至少满足一次。上例中第一个判断应考虑到A=true,A=false,B=true,B=false第二个判断应考虑到C=true,C=false,D=true,D=false,所以上例中可以设计测试用例满足下列条件(1)A=true,B=true,C=true,D=true(2)A=false,B=false,C=false,D=false。

    4) 路径覆盖:要求覆盖程序中所有可能的路径。所以可以设计测试用例满足下列条件(1)A=true,B=true,C=true,D=true(2)A=false,B=false,C=false,D=false(3)A=true,B=true,C=false,D=false(4)A=false,B=false,C=true,D=true。

    二、测试相关经验

          测试流程方面我的组长是一位经验丰富的老测试了,到目前已经9年了,我在她的带领下,从最开始的分析需求开始,逐步地跟着项目走完整个测试流程,包括纯手工测试,包含了自动化的测试流程,包含了性能测试的测试流程,直至每一个测试报告的最终形成。使我完全理解了一个科学,正确,严谨,正规化的测试流程。

           测试方法方面我个人特别注重理论知识和实际操作相结合,在理论知识方面,我主要是购买一些书籍,从最基础的软件测试理论到各种各样的程序设计语言,再到自动化测试,包括Java语言的自动化测试,Python语言的自动化测试,到性能测试的各项性能指标的分析,数据分析都是我自己提供书籍上的知识来获得的,在淘宝上面有各种各样的书籍和视频教程,我基本上都看了个遍,到目前为止,我的各种学习资料用了1T的移动硬盘来装,书籍也有一百多本了,在实际操作方面,我主要向我的组长请教,她是因为女生,特别注重细节,当我有不懂得地方就去请教她,我会问她为什么要这么操作,然后我会对比理论和实际的区别,为什么有这种区别。就这样我就通过一个个的项目来夯实理论知识和实际操作,每一次做完项目我都会进行一个总结,自己学到了哪些新的技术和方法?遇到了哪些新的问题?以后再遇到怎么处理?

           新的知识补充方面:随着项目的不同,所运用的知识也不同,每一次学习不同的知识既是工作项目的需要,也是自己学习新知识的契机,比如说学习python语言,本来我们测试人员是不用写代码的,或者说可以用Java写,但是目前市面上都在用python语言来写自动化测试脚本,肯定是有它的道理的,那么我当时给自己的目标并不是仅仅为了满足写自动化脚本那么简单,我还想把python语言全部学会,我下定决心之后就立即着手执行,因为我本来就是开发出身,会代码,所有的语言都是相通的,都有变量,流程控制语句,和方法三大内容。JavaScript和Python都是弱类型,解释性的语言,所以在学习的时候我就在对比起来学习,很快学会了这门语言,所以我个人觉得,不管做什么,我们不仅仅要会用它,而且要知道它为什么这样用?最好是能够精通,对我们的测试工作是十分有利的。

           知识结构方面我们作为一个测试人员,不仅仅要做好本职工作,把自己的测试技术练好,而且还要一个广泛涉猎,对前台,后台,硬件知识,网络知识都应该去学习,对我们快速定位bug,提出有效针对性的修改硬件非常有好处,如果有条件的话,尽量向全栈发展。开发的发展方向是向深度和精度发展,而测试是一个向广度发展的岗位,需要不同的知识来融合,因为我们测试的是一个集成的,有多种技术融合而成的系统项目,就需要我们广泛涉猎和学习,所以从职业规划和寿命度上面来看,测试的工作也是非常的不错,所以不断的学习才是硬道理!

           团队的氛围方面我本人是军人出身,历来重视团结的重要性,所以和开发人员,测试人员,需求人员以及上级相处要从大局出发,我们的每一个人员都是一个项目不可或缺的一份子,必须团结起来,才能为最后产品的顺利交付打好基础条件,所以同事之间的相处是最需要拿捏分寸的,特别是开发人员,人和人都是相互的,只要讲道理,相信别人是会理解的,总之一句话:从整个项目的大局出发,把工作做好。

           回首测试经历,我总结了以下几点:

           1.不断学习,不能丧失对新知识学习的渴望,对旧的知识形成体系,夯实基础,测试理论知识基本上这么多年以来没有变过,主要是一些方法和工具的改变和升级,广泛涉猎相关知识,为测试工作服务;

           2.搞好内部团结,建立起亲密的同事关系,不仅是对个人社交能力还是对自己的工作上的能力都是一个提升,都是百利而无一害的!

    三、测试能力培养

    一、业务分析能力

    1.分析整体业务流程

    不了解整个公司的业务,根本就没办法进行测试

    2.分析被测业务数据

    了解整个业务里面所需的数据有哪些?哪些是需要用户提供的?哪些是自己提供的?有哪些可以是假数据?有哪些必须是真数据?添加数据的时候可以用哪个库?

    明白了整个软件的数据库架构,才能知道哪一个数据是从哪一个表里头带出来的,它的逻辑是什么,有没有连带关系。

    3.分析被测系统架构

    用什么语言开发的?用的是什么服务器?测试它的话需要用什么样的环境进行测试?整体的测试环境是什么样的?

    如果缺少了,需要进行环境搭建,架构搭建。一般去一家新公司之后,架构是搭建好的,了解它即可,熟悉之前的这些老员工们使用什么样的架构去做的。

    4.分析被测业务模块

    整个软件有哪些模块,比如说首页面、注册页面、登录页面、会员页面、商品详情页面、优惠券页面等等

    明白有多少个模块需要测试,每个模块之间的连带关系,进而怎样进行人员分工

    5.分析测试所需资源

    我需要几台计算机,需要几部手机,手机需要什么样的系统,什么样的型号。

    比如测一个网站的性能的时候,电脑的配置达不到测试并发5000人的标准,要么升级电脑的硬件配置,要么多机联合,多机联合时需要几台电脑,都需要提前筹划。

    6.分析测试完成目标

    我的性能目标是什么样的?我的功能目标是什么样的?我要上线达到的上线标准是什么样的?

    性能目标,比如我要达到并发5000人的时候,CPU占用率不能高于70%,内存占用率不能高于60%,响应时间不能超过5秒

    功能目标,比如整体的业务流程都跑通,所有的分支流程都没有问题,所有的接口都能够互相调用,整体的UI界面没有问题,兼容性没有问题等

    把这些问题都弄清楚,测试的思路会非常的清晰

    二、缺陷洞察能力

    1.一般缺陷的发现能力

    至少你要满足一般缺陷的发现能力,这个是最基本的,如果要连最简单的一般的缺陷都发现不了的话,别说优秀测试工程师了,你说你是测试我都不信

    2.隐性问题的发现能力

    在软件的测试过程当中有一些缺陷藏的比较深,有的是性能方面的问题,有的是功能方面的问题,它需要有一些设定特定的条件的情况下才会出现这样的问题。

    比如说买双鞋必须选择的是什么品牌,必须选择是红颜色,必须选择44号,而且必须选择用特定的支付方式才会出现这样的bug的时候,那么这种就属于特别隐性的bug,对于这样的问题的发现能力一定要比别人更强,要找到一些别人可能发现不了的bug

    3.发现连带问题的能力

    当发现了一个缺陷之后,能够想到通过这个缺陷可能会引发其他哪个地方出现问题,这就叫做连带的问题。而不是说发现这一个bug之后提了这一个就算完了,一定要有一个察觉,可能其他地方也存在这样的问题。

    4.发现问题隐患的能力

    有些软件里边可能有一些操作模块,或者是代码写的接口,表面上没有什么问题,但是它是有隐患的,比如说这个接口写的不稳定,当他传的数据有一些问题的时候,可能它最后返回的结果就是报错就是报404或者报乱码。

    5.尽早发现问题的能力

    如果你只能停留在界面级别的话,那你根本就没有办法达到尽早发现问题的这个能力

    你必须要等到前端人员把每个界面都做好了之后才能进入测试,而我能比你早一个月进入测试了,然后我比你结束测试时间快一个月,而你又比我晚一个月,那么咱俩的薪资一下就拉开了

    6.发现问题根源的能力

    需要知道这个缺陷它到底是由什么原因产生的,是属于什么类型的缺陷,是ui前端人员做的问题,还是后台接口人员做的问题?

    不仅要找到这个bug,还要知道这个bug产生的原因,这样的测试人员是非常棒的,而且很是受人尊敬,提bug的方式也就不一样了

    三、团队协作能力

    1.合理进行人员分工

    合理的进行人员分工是提高效率的重要保证

    2.协助组员解决问题

    比如说测试在赶进度,或者这个软件项目的质量把控是一个团队来把控的,协助组员解决问题就显得尤为关键

    3.配合完成测试任务

    一个团队里边的人员分工,他们的任务都是不一样的,这就是咱们说的配合。你的东西做完了,要轮到我了,我的性能测完了之后该轮到你了,所以整个的一个流程下来之后,大家应该是各司其职,配合得非常紧密的一个过程

    4.配合开发重现缺陷

    我给你提bug,你改我的bug,咱们的目的只有一个,就是让这个软件变得更好,所以在这样的情况下,咱们就一定要配合开发

    5.督促项目整体进度

    既然是一个团队协作的过程,就一定要互相的去督促对方,包括督促开发去改bug,因为开发人员他们有时候工作很忙,他们不知道要先改哪些问题,要后改哪些问题,但是往往有一些缺陷,它影响了测试的这个时间,影响了测试的进度,那么这个时候就需要测试员去督促开发人员,让他尽快的去解决你棘手的问题。这个东西能够提高咱们的测试效率

    6.出现问题勇于承担

    愿意背锅的最后都成为了领导,不愿意背锅的最后依然是员工

    四、专业技术能力

    1.掌握测试基础知识

    基础知识就是根基,根基打好了,你才能够更有效地往后期发展,也就是为了以后的学习做一个铺垫。如果根基都没打好,功能测试不会,就想直接学性能,那性能是做不好的

    2.娴熟运用测试工具

    熟悉工具和熟练使用工具完全是两个概念,熟悉工具基本上等同于不会,遇到过很多简历上写会使用什么什么工具,都没有实际能力。比如loadrunner只会一个简单的录制,增强一下脚本,觉得会用了,那知识会用了1/5,其他4/5 都不会。

    3.了解工具操作原理

    它是怎么样给服务器发送请求的,是用什么样的方式去发送请的,是用什么样的方式去监控的,它的操作原理是什么样的,咱们要把这件事情搞清楚,这样的话能有助于更好的去使用这些东西。包括一些请求的协议,每个协议代表什么意思,它是用来干什么的。

    4.自主完成测试任务

    一定要能够自己完成一个独立的内容,独立的工作,这件事情领导你交给我好了,放心我能给你搞定,要的是这样的人

    5.找出问题出现原因

    找出缺陷的时候,不仅要看它的表面,还要看它的本质

    6.提供问题解决方案

    发现问题不是能力,发现问题并提出解决方案才是真的能力

    7.提供完整测试报告

    测试报告能够说明你表达的清不清楚?领导能不能看懂?还有就是能不能够把你整个测试的过程给它梳理得非常详细,人家能够通过你的报告,能够了解到整个的项目的情况,而不是只了解一个片面的情况

    8.了解相关技术领域

    触类旁通

    五、逻辑思考能力

    1.判断逻辑的正确性

    面试官也经常会给测试人去出一些逻辑题,逻辑题能够分析出来你这个人思维有没有?活跃不活跃?还有他的维度,包括他想的问题的全面性,都能够判断得出来。

    比如说去买一样商品,它的里边逻辑就会经常会出现很多问题,比如说它的会员的级别,什么样的级别去买什么样的商品,它的价格不一样,什么情况下会给优惠券,什么样的情况下不给优惠券?达到多少钱的情况下才能够使用优惠券?如果说这里边的逻辑出现了问题的话,那么整个的业务不用再测了

    2.对可行性逻辑分析

    要去测一个网站的逻辑的时候,一定要先思考这一个业务流程可能会涉及到哪些逻辑,这些逻辑哪些是可行的,有些是正向逻辑,有些是逆向逻辑,都要考虑全面,而不是说只是把正向的逻辑测试全面了,逆向逻辑不考虑。其实往往更容易出错的地方就是逆向逻辑

    3.思维导图梳理思路

    思维导图工具能够起到什么作用,能够让你更有效的进行测试,能够让你的思路更清晰

    4.站在客观角度思考

    去测试的时候,不要仅仅只是站在测试人员的角度上去对整个网站进行测试,还更多的要站在用户的角度,要替用户考虑

    六、问题解决能力

    1.技术上的问题

    把自己的个人能力提升起来,多跟别人虚心请教,多去自己想办法解决问题

    2.工作中的问题

    在任何的企业里边去工作,肯定会遇到一些工作当中的一些不愉快的事情,而不是什么事情都会让你很顺心。所以要去处理工作上的一些不顺心的事情,不要把它带到你的工作上,或者是你的生活上,尽可能的去跟别人沟通,去解决这个工作上遇到的麻烦

    3.同事间的问题

    在工作当中可能会涉及到跟开发人员的沟通,跟产品人员的沟通,跟ui人员的沟通,跟这三方的人员去沟通的时候,就要用不同的沟通方式

    4.领导层的问题

    如果你觉得你的领导不好,或者说你觉得对你的领导一些建议,不要的去跟同事之间去说他坏话或者怎么样的,领导需要的是解决问题的人,而不是制造问题的人

    七、沟通表达能力

    1.和技术人员的沟通

    跟开发人员阐述缺陷时要简洁明了、清晰易懂。当发现严重缺陷时,也不要大惊小怪,要站在开发人员的角度思考如何解决问题。而不是踩在开发头上,炫耀自己发现问题的能力。

    2.和产品人员的沟通

    当对产品提出意见时,要站在用户的角度去说明自己的想法,而不要主观认为不好而要求产品进行修改。

    3.和上级领导的沟通

    跟领导沟通时要有大局观,不能只考虑自己部门的情况。并且与领导沟通时,尽量直奔主题,不要拐弯抹角,当与领导意见不一致时,也不要直接反驳,应该先给予认可,再阐述自己的想法。

    4.在集体会议中沟通

    在集体会议中不要一味的突出自己的个人能力,不要当话痨,也不要默默无闻。适当的提出一些自己的见解,有助于让大家更加重视你的存在。切记不要在多人会议中,去指责别人和推卸问题。各个部门的同事,都要面子~

    5.与下级员工的沟通

    与下级沟通时不要摆高姿态,不要让下级产生畏惧感,应该更多的为下级解决问题。服务好部门的同事,才能更好的产生凝聚力。

    八、宏观把控能力

    1.有效控制测试时间

    测试周期的时间控制,应当采取多种方法去衡量,例如人员能力,人员数量,项目复杂程度,同类项目的测试经验等多方面去衡量。

    2.有效控制测试成本

    测试成本指的是人员成本跟时间成本,不要浪费每个人的时间跟劳动力,要让每个人充分发挥最大的价值。

    3.有效制定测试计划

    测试计划对于一个项目是核心关键,它的存在为了让测试进行中有依据可查。所以测试计划,一定要切合实际情况,要经过思考和衡量最后得出计划安排。

    4.有效控制组员情绪

    组员的情绪可以直接影响测试进度跟测试的质量,当有组员出现思想问题时,应当及时沟通,采取一些必要的措施去解决问题。而不能装看不见。

    5.有效进行风险评估

    任何项目在进行期间都存在许多潜在的风险,例如,人员离职,生病请假,业务变更,需求变更,服务器或其他组件故障等。应当提前做出相应的解决方案,以免到时候手忙脚乱。

    6.有效控制测试方向

    测试的方向是指测试的目标和测试的范围,很多项目的测试是有针对性的,例如性能测试,所以在测试中,一定要随时清楚测试的目标和目的是什么,以免把时间浪费在无关紧要的业务上。

    展开全文
  • 人工智能时代,所需要了解人工智能的基本常识

    万次阅读 多人点赞 2018-12-10 22:49:44
    这份报告将有助于我们对人工智能和认知技术进行深入了解,也有助于各行业的公司考量人工智能应用的实际价值。  一、概述  近几年各界对人工智能的兴趣激增,自2011年以来,开发与人工智能相关的产品和技术...

      国内对于人工智能的讨论大多是不成体系的碎片式,很难从中深入了解人工智能的发展脉络和技术体系,也很难有实际借鉴意义。人工智能的历史、核心技术和应用情况进行了详细说明,尤其是其中重要的认知技术。这份报告将有助于我们对人工智能和认知技术进行深入了解,也有助于各行业的公司考量人工智能应用的实际价值。

      一、概述

      近几年各界对人工智能的兴趣激增,自2011年以来,开发与人工智能相关的产品和技术并使之商业化的公司已获得超过总计20亿美元的风险投资,而科技巨头更是投资数十亿美元收购那些人工智能初创公司。相关报道铺天盖地,而巨额投资、计算机导致失业等问题也开始浮现,计算机比人更加聪明并有可能威胁到人类生存这类论断更是被媒体四处引用并引发广泛关注。

      IBM承诺拨出10亿美元来使他们的认知计算平台Watson商业化。

      谷歌在最近几年里的投资主要集中在人工智能领域,比如收购了8个机器人公司和1个机器学习公司。

      Facebook聘用了人工智能学界泰斗YannLeCun来创建自己的人工智能实验室,期望在该领域获得重大突破。

      牛津大学的研究人员发表了一篇报告表明,美国大约47%的工作因为机器认知技术自动化而变得岌岌可危。

      纽约时报畅销书《TheSecondMachineAge》论断,数字科技和人工智能带来巨大积极改变的时代已经到来,但是随之而来的也有引发大量失业等负面效应。

      硅谷创业家ElonMusk则通过不断投资的方式来保持对人工智能的关注。他甚至认为人工智能的危险性超过核武器。

      著名理论物理学家StephenHawking认为,如果成功创造出人工智能则意味着人类历史的终结,“除非我们知道如何规避风险。”

      即便有如此多炒作,但人工智能领域却也不乏显著的商业行为,这些活动已经或者即将对各个行业和组织产生影响。商业领袖需要透彻理解人工智能的含义以及发展趋势。

      二、人工智能与认知科技

      揭秘人工智能的首要步骤就是定义专业术语,勾勒历史,同时描述基础性的核心技术。

      1、人工智能的定义

      人工智能领域苦于存在多种概念和定义,有的太过有的则不够。作为该领域创始人之一的NilsNilsson先生写到:“人工智能缺乏通用的定义。”一本如今已经修订三版的权威性人工智能教科书给出了八项定义,但书中并没有透露其作者究竟倾向于哪种定义。对于我们来说,一种实用的定义即为——人工智能是对计算机系统如何能够履行那些只有依靠人类智慧才能完成的任务的理论研究。例如,视觉感知、语音识别、在不确定条件下做出决策、学习、还有语言翻译等。比起研究人类如何进行思维活动,从人类能够完成的任务角度对人工智能进行定义,而非人类如何思考,在当今时代能够让我们绕开神经机制层面对智慧进行确切定义从而直接探讨它的实际应用。值得一提的是,随着计算机为解决新任务挑战而升级换代并推而广之,人们对那些所谓需要依靠人类智慧才能解决的任务的定义门槛也越来越高。所以,人工智能的定义随着时间而演变,这一现象称之为“人工智能效应”,概括起来就是“人工智能就是要实现所有目前还无法不借助人类智慧才能实现的任务的集合。”

      2、人工智能的历史

      人工智能并不是一个新名词。实际上,这个领域在20世纪50年代就已经开始启动,这段探索的历史被称为“喧嚣与渴望、挫折与失望交替出现的时代”——最近给出的一个较为恰当的评价。

      20世纪50年代明确了人工智能要模拟人类智慧这一大胆目标,从此研究人员开展了一系列贯穿20世纪60年代并延续到70年代的研究项目,这些项目表明,计算机能够完成一系列所本只属于人类能力范畴之内的任务,例如证明定理、求解微积分、通过规划来响应命令、履行物理动作,甚至是模拟心理学家、谱曲这样的活动。

      但是,过分简单的算法、匮乏的难以应对不确定环境(这种情形在生活中无处不在)的理论,以及计算能力的限制严重阻碍了我们使用人工智能来解决更加困难和多样的问题。伴随着对缺乏继续努力的失望,人工智能于20世纪70年代中期逐渐淡出公众视野。

      20世纪80年代早期,日本发起了一个项目,旨在开发一种在人工智能领域处于领先的计算机结构。西方开始担心会在这个领域输给日本,这种焦虑促使他们决定重新开始对人工智能的投资。20世纪80年代已经出现了人工智能技术产品的商业供应商,其中一些已经上市,例如Intellicorp、Symbolics、和Teknowledge。

      20世纪80年代末,几乎一半的“财富500强”都在开发或使用“专家系统”,这是一项通过对人类专家的问题求解能力进行建模,来模拟人类专家解决该领域问题的人工智能技术。

      对于专家系统潜力的过高希望彻底掩盖了它本身的局限性,包括明显缺乏常识、难以捕捉专家的隐性知识、建造和维护大型系统这项工作的复杂性和成本,当这一点被越来越多的人所认识到时,人工智能研究再一次脱离轨道。

      20世纪90年代在人工智能领域的技术成果始终处于低潮,成果寥寥。反而是神经网络、遗传算法等科技得到了新的关注,这一方面是因为这些技术避免了专家系统的若干限制,另一方面是因为新算法让它们运行起来更加高效。

      神经网络的设计受到了大脑结构的启发。遗传算法的机制是,首先迭代生成备选解决方案,然后剔除最差方案,最后通过引入随机变量来产生新的解决方案,从而“进化”出解决问题的最佳方案。

      3、人工智能进步的催化剂

      截止到21世纪前10年的后期,出现了一系列复兴人工智能研究进程的要素,尤其是一些核心技术。下面将对这些重要的因素和技术进行详细说明。

      1)摩尔定律

      在价格、体积不变的条件下,计算机的计算能力可以不断增长。这就是被人们所熟知的摩尔定律,它以Intel共同创办人GordonMoore命名。GordonMoore从各种形式的计算中获利,包括人工智能研究人员使用的计算类型。数年以前,先进的系统设计只能在理论上成立但无法实现,因为它所需要的计算机资源过于昂贵或者计算机无法胜任。今天,我们已经拥有了实现这些设计所需要的计算资源。举个梦幻般的例子,现在最新一代微处理器的性能是1971年第一代单片机的400万倍。

      2)大数据

      得益于互联网、社交媒体、移动设备和廉价的传感器,这个世界产生的数据量急剧增加。随着对这些数据的价值的不断认识,用来管理和分析数据的新技术也得到了发展。大数据是人工智能发展的助推剂,这是因为有些人工智能技术使用统计模型来进行数据的概率推算,比如图像、文本或者语音,通过把这些模型暴露在数据的海洋中,使它们得到不断优化,或者称之为“训练”——现在这样的条件随处可得。

      3)互联网和云计算

      和大数据现象紧密相关,互联网和云计算可以被认为是人工智能基石有两个原因,第一,它们可以让所有联网的计算机设备都能获得海量数据。这些数据是人们推进人工智能研发所需要的,因此它可以促进人工智能的发展。第二,它们为人们提供了一种可行的合作方式——有时显式有时隐式——来帮助人工智能系统进行训练。比如,有些研究人员使用类似MechanicalTurk这样基于云计算的众包服务来雇佣成千上万的人来描绘数字图像。这就使得图像识别算法可以从这些描绘中进行学习。谷歌翻译通过分析用户的反馈以及使用者的无偿贡献来提高它自动翻译的质量。

      4)新算法

      算法是解决一个设计程序或完成任务的路径方法。最近几年,新算法的发展极大提高了机器学习的能力,这些算法本身很重要,同时也是其他技术的推动者,比如计算机视觉(这项科技将会在后文描述)。机器学习算法目前被开源使用,这种情形将促成更大进步,因为在开源环境下开发人员可以补足和增强彼此的工作。

      4、认知技术

      我们将区分人工智能领域和由此延伸的各项技术。大众媒体将人工智能刻画为跟人一样聪明的或比人更聪明的计算机的来临。而各项技术则在以往只有人能做到的特定任务上面表现得越来越好。我们称这些技术为认知技术(下图),认知技术是人工智能领域的产物,它们能完成以往只有人能够完成的任务。而它们正是商业和公共部门的领导者应该关注的。下面我们将介绍几个最重要的认知技术,它们正被广泛采纳并进展迅速,也获得大量投资。

      一文了解人工智能的基本常识

      1)计算机视觉

      是指计算机从图像中识别出物体、场景和活动的能力。计算机视觉技术运用由图像处理操作及其他技术所组成的序列来将图像分析任务分解为便于管理的小块任务。比如,一些技术能够从图像中检测到物体的边缘及纹理。分类技术可被用作确定识别到的特征是否能够代表系统已知的一类物体。

      计算机视觉有着广泛应用。其中包括,医疗成像分析被用来提高疾病的预测、诊断和治疗;人脸识别被Facebook用来自动识别照片里的人物;在安防及监控领域被用来指认嫌疑人;在购物方面,消费者现在可以用智能手机拍摄下产品以获得更多购买选择。

      机器视觉作为一个相关学科,泛指在工业自动化领域的视觉应用。在这些应用里,计算机在高度受限的工厂环境里识别诸如生产零件一类的物体,因此相对于寻求在非受限环境里操作的计算机视觉来说目标更为简单。计算机视觉是一个正在进行中的研究,而机器视觉则是“已经解决的问题”,是系统工程方面的课题而非研究层面的课题。因为应用范围的持续扩大,计算机视觉领域的初创公司自2011年起已经吸引了数亿美元的风投资本。

      2)机器学习

      指的是计算机系统无需遵照显式的程序指令而只是依靠暴露在数据中来提升自身性能的能力。其核心在于,机器学习是从数据中自动发现模式,模式一旦被发现便可用于做预测。比如,给予机器学习系统一个关于交易时间、商家、地点、价格及交易是否正当等信用卡交易信息的数据库,系统就会学习到可用来预测信用卡欺诈的模式。处理的交易数据越多,预测就会越好。

      机器学习的应用范围非常广泛,针对那些产生庞大数据的活动,它几乎拥有改进一切性能的潜力。除了欺诈甄别之外,这些活动还包括销售预测、库存管理、石油和天然气勘探、以及公共卫生。机器学习技术在其他的认知技术领域也扮演着重要角色,比如计算机视觉,它能在海量图像中通过不断训练和改进视觉模型来提高其识别对象的能力。现如今,机器学习已经成为认知技术中最炙手可热的研究领域之一,在2011-2014年中这段时间内就已吸引了近十亿美元的风险投资。谷歌也在2014年斥资4亿美金收购Deepmind这家研究机器学习技术的公司。

      3)自然语言处理

      是指计算机拥有的人类般文本处理的能力,比如,从文本中提取意义,甚至从那些可读的、风格自然、语法正确的文本中自主解读出含义。一个自然语言处理系统并不了解人类处理文本的方式,但是它却可以用非常复杂与成熟的手段巧妙处理文本,例如自动识别一份文档中所有被提及的人与地点;识别文档的核心议题;或者在一堆仅人类可读的合同中,将各种条款与条件提取出来并制作成表。以上这些任务通过传统的文本处理软件根本不可能完成,后者仅能针对简单的文本匹配与模式进行操作。请思考一个老生常谈的例子,它可以体现自然语言处理面临的一个挑战。在句子“光阴似箭(Timeflieslikeanarrow)”中每一个单词的意义看起来都很清晰,直到系统遇到这样的句子“果蝇喜欢香蕉(Fruitflieslikeabanana)”,用“水果(fruit)”替代了“时间(time)”,并用“香蕉(banana)”替代“箭(arrow)”,就改变了“飞逝/飞着的(like)”与“像/喜欢(like)”这两个单词的意思。

      自然语言处理,像计算机视觉技术一样,将各种有助于实现目标的多种技术进行了融合。建立语言模型来预测语言表达的概率分布,举例来说,就是某一串给定字符或单词表达某一特定语义的最大可能性。选定的特征可以和文中的某些元素结合来识别一段文字,通过识别这些元素可以把某类文字同其他文字区别开来,比如垃圾邮件同正常邮件。以机器学习为驱动的分类方法将成为筛选的标准,用来决定一封邮件是否属于垃圾邮件。

      因为语境对于理解“timeflies(时光飞逝)”和“fruitflies(果蝇)”的区别是如此重要,所以自然语言处理技术的实际应用领域相对较窄,这些领域包括分析顾客对某项特定产品和服务的反馈、自动发现民事诉讼或政府调查中的某些含义、以及自动书写诸如企业营收和体育运动的公式化范文等。

      4)机器人技术

      将机器视觉、自动规划等认知技术整合至极小却高性能的传感器、致动器、以及设计巧妙的硬件中,这就催生了新一代的机器人,它有能力与人类一起工作,能在各种未知环境中灵活处理不同的任务。例如无人机,还有可以在车间为人类分担工作的“cobots”,还包括那些从玩具到家务助手的消费类产品。

      5)语音识别技术

      主要是关注自动且准确的转录人类的语音。该技术必须面对一些与自然语言处理类似的问题,在不同口音的处理、背景噪音、区分同音异形异义词(“buy”和“by”听起来是一样的)方面存在一些困难,同时还需要具有跟上正常语速的工作速度。语音识别系统使用一些与自然语言处理系统相同的技术,再辅以其他技术,比如描述声音和其出现在特定序列和语言中概率的声学模型等。语音识别的主要应用包括医疗听写、语音书写、电脑系统声控、电话客服等。比如Domino’sPizza最近推出了一个允许用户通过语音下单的移动APP。

      上面提到的认知技术进步飞快并吸引了大量投资,其他相对成熟的认知技术仍然是企业软件系统的重要组成部分。这些日渐成熟的认知技术包括决策最优化——自动完成对复杂决策或者在资源有限的前提下做出最佳权衡;规划和调度——使设计一系列行动流程来满足目标和观察约束;规则导向系统——为专家系统提供基础的技术,使用知识和规则的数据库来自动完成从信息中进行推论的处理过程。

      三、认知技术的广泛使用

      各种经济部门已经把认知技术运用到了多种商业职能中。

      1)银行业

      自动欺诈探测系统使用机器学习可以识别出预示着欺诈性付款行动的行为模式;借助语音识别技术能够自动完成电话客服;声音识别可以核实来电者的身份

      2)医疗健康领域

      美国有一半的医院采用自动语音识别来帮助医生自动完成医嘱抄录,而且使用率还在迅速增长;机器视觉系统自动完成乳房X光检查和其他医学影响的分析;IBM的Watson借助自然语言处理技术来阅读和理解大量医学文献,通过假设自动生成来完成自动诊断,借助机器学习可以提高准确率。

      3)生命科学领域

      机器学习系统被用来预测生物数据和化合物活动的因果关系,从而帮助制药公司识别出最有前景的药物。

      4)媒体与娱乐行业

      许多公司正在使用数据分析和自然语言生成技术,自动起草基于数据的的公文材料,比如公司营收状况、体育赛事综述等。

      5)石油与天然气

      厂商将机器学习广泛运用在矿藏资源定位、钻井设备故障诊断等众多方面。

      6)公共部门

      出于监控、合规和欺诈检测等特定目的,公共部门也已经开始使用认知技术。比如,乔治亚州正在通过众包的形式来进行财政披露和竞选捐助表格的数字化,在这个过程中他们就采用了一套自动手写识别系统。

      7)零售商

      零售商利用机器学习来自动发现有吸引力的交叉销售定价和有效的促销活动。

      8)科技公司

      它们正利用机器视觉、机器学习等认知技术来改进产品或者开发全新产品,比如Roomba机器人吸尘器,Nest智能恒温器。

      上述例子表明,认识技术的潜在商业收益远大于自动化带来的成本节约,这主要体现在:

      更快的行动与决策(比如,自动欺诈检测,计划和调度)

      更好的结果(比如,医学诊断、石油探测、需求预测)

      更高的效率(亦即,更好的利用高技能人才和昂贵设备)

      更低的成本(比如,自动电话客服减少了劳动成本)

      更大的规模(亦即,开展人力无法执行的大规模任务)

      产品与服务创新(从增加新功能到创造新产品)

      四、认知技术影响力与日俱增的原因

      在未来五年,认知技术在商业领域的影响力将显著增长。原因有二,首先,近些年来,技术性能有了实质进步,并处于持续研发状态。其次,数亿美元已经投入到技术商业化中,许多公司正致力于为各商业部门的广泛需求提供定制化开发和打包方案,以使这些技术更易购买和配置。虽然并非所有的技术提供商都能幸存,但他们的努力将共同推动市场前进。技术性能的改善和商业化正在共同扩大着认知技术的应用范围,这种情况在未来几年都将持续下去。

      1、技术提升扩展了应用范围

      认知技术大踏步前进的例子非常多。比如Google的语音识别系统,一份报告显示,Google用了不到两年时间就将语音识别的精准度从2012年的84%提升到如今的98%。计算机视觉技术也取得了突飞猛进的发展。如果以计算机视觉技术研究者设置的技术标准来看,自2010年到2014年,图像分类识别的精准度提高了4倍。Facebook的DeepFace技术在同行评审报告(译者注:同行评审,是一种学术成果审查程序,即一位作者的学术著作或计划被同一领域的其他专家学者评审。)被高度肯定,其脸部识别率的准确度达到97%。2011年,IBM为了让Watson在智力节目《危险边缘》中获胜,曾对Watson进行优化,提升两倍的答案精确度。现在,IBM又宣称如今的Watson比当时“智能”了2400%。

      随着技术的改进和提高,技术应用的范围也在不断扩大。比如,在语音识别方面,机器曾经需要大量训练才能在有限词库里勉强识别出来,由语音识别技术延伸出的医疗应用程序也很难得到真正普及。而现在,每个月互联网上都会有数以百万次的语音搜索。另外,计算机视觉技术过去被狭隘的理解为部署在工业自动化方面,但现在,我们早已看到这一技术被广泛运用到监控、安全以及各种各样的消费应用里。IBM如今正拓展Watson在竞赛游戏之外的应用,从医疗诊断到医学研究再到财务建议以及自动化的呼叫中心。

      并不是所有的认知技术都有如此令人瞩目的发展。机器翻译有了一定发展,但幅度很小。一份调查发现,从2009年到2012年,将阿拉伯语翻译到英语的精确度仅仅提升了13%。尽管这些技术还不完美,但他们已经可以影响到专业机构的工作方式。很多专业翻译人员依靠机器翻译提升翻译精准度,并把一些常规翻译交给机器,自己专注在更具挑战性的任务上。

      很多公司正努力将认知技术做进一步研发,并逐步将其融入到更多产品尤其是企业级产品里,以方便企业用户购买和部署。

      2、对商业化进行的大规模投资

      从2011年到2014年5月,超过20亿美元的风险投资流入到基于认知技术研究的产品和服务里。与此同时,超过100家的相关公司被兼并或收购,其中一些被互联网巨头如亚马逊、苹果、Google、IBM或Facebook收购。所有这些投资都在培育一个多样化的公司图谱,这些公司正在加速认知技术的商业化进程。

      在这里,我们并不会提供关于某公司在认知技术商业化方面的细节,我们希望说明,认知技术产品拥有丰富的多样性。下面就是致力于认知技术商业化的公司名单,这个名单既不是完整无缺也非固定不变,而是一个动态的,用于推动和培育市场的指标。

      数据管理和分析工具主要使用自然语言处理、机器学习等认知技术。这些工具利用自然语言处理来从非结构化的文本中提取出意思,或者借助机器学习帮助分析人员从大规模数据集中发现深层含义。这个领域的公司包括ContextRelevant(译者注:美国的一家大数据挖掘和分析公司)、PalantirTechnologies(译者注:这家公司称要将数据、技术、人类和环境连接起来)、以及Skytree(译者注:一家借助机器学习进行市场分析并提供决策依据的大数据公司)。

      认知技术的各个部分可以被整合到各种应用和商业决策中,分别起到增加功能和提高效率的作用。例如,Wise.io公司提供一套模块来促进商业决策,比如客户支持、营销和销售,这里面会用到机器学习模型来预测哪些客户比较容易流失,以及哪些潜在客户更加容易转化。Nuance公司通过提供一种语音识别技术来帮助开发者进行需要语音控制的移动APP的开发。

      单点解决方案。众多认知技术成熟的标志是它们正在被不断的嵌入到特定商业问题的解决方案中。这些解决方案的设计初衷是要比公司原有的解决方案更加有效,并且几乎不需要认知技术方面的专业人员。普及度比较高的应用领域包括广告、营销和销售自动化、预测以及规划。

      技术平台。平台的目的是为建立高度定制化的商业解决方案提供基础。它们会提供一系列功能,包括数据管理、机器学习工具、自然语言处理、知识表示和推理、以及将这些定制化软件整合在一起的统一框架。

      3、新兴应用

      如果这些技术的表现和商业化趋势继续发展,我们就能够大胆预测认知技术的应用将更加广泛,被接受程度也会大大增加。数亿美金的投资涌入这些基于机器学习、自然语言处理、机器视觉或者机器人技术的公司,这预示着许多新应用即将投入市场。在商业机构依托认知技术构建自动化业务流程、增强产品和服务方面,我们也看到了巨大空间。

      五、认知技术在企业的应用路径

      认知技术将在接下来几年里变得流行。在未来2-5年,技术层面的进步和商业化将扩大认知技术对企业的影响。越来越多的企业会找到一些创新性应用来显著改善他们自身的表现或者创造新功能,以增强他们的竞争地位。企业的IT部门现在可以行动起来,增加对这些技术的了解,评估出适用这些技术的机会,将这些技术可能带来的价值向领导进行汇报。高级商务和公共部门的领导应该思考认知技术将对他们的部门以及整个公司产生何种影响,这些技术将如何激发创新并提升经营表现。


    1.人工智能大发展时代,如何利用大数据改变现有商业模式?

    http://www.duozhishidai.com/article-17554-1.html

    2.人工智能来势凶猛,人工智能最热门的技术趋势是什么

    http://www.duozhishidai.com/article-923-1.html

    3.今年人工智能领域,十项中外人工智能领域富有突破性的技术

    http://www.duozhishidai.com/article-17560-1.html

     

    展开全文
  • 做一件有价值的事情就是把自己觉得好的东西分享出来,那么开始内容 (1)大数据的发展历程和价值探索 大数据的发展 文章开篇是一段作者建设数据中台过程的心路历程,下来就是老套路,介绍了国内外大数据发展的历程与...
  • 一文讲明白互联网如何中心

    千次阅读 2020-08-26 14:38:50
    本文不是巧立名目,虚设概念,而是在汉语中找了最恰当的一个词来定义互联网的“中心”,因为现实的单调,在“中心”议题里浸淫久了会发现,如果目标一致,一切表达都会是趋同的,比如说有一天真正的变革型的...
  • 基于LSTM的股票预测模型_python实现_超详细

    万次阅读 多人点赞 2019-07-05 22:25:13
    虽然循环神经网络(RNN),允许信息的持久,然而,一般的RNN模型对具备长记忆性的时间序列数据刻画能力较弱,在时间序列过长的时候,因为存在梯度消散和梯度爆炸现象RNN训练变得非常困难。Hochreiter 和 ...
  • 《人工智能杂记》人工智能时间简史

    万次阅读 多人点赞 2018-03-13 08:54:55
    1人工智能基本概念 ...如当你说一句话时,机器能够识别成文字,并理解你话的意思,进行分析和对话等。 2人工智能发展历程 人工智能的起源:人工智能在五六十年代时正式提出,1950年,一...
  • 文章目录一、概述二、资产购置相关日期2.1 资本日期2.2 首次购置日期2.3 资产价值日三、折旧相关日期3.1 资产折旧开始日期四、报废相关日期4.1 不活动日期 一、概述 资产的购置、折旧和报废等处理中,常见日期,如...
  • 中心应用:区块链技术概述

    千次阅读 2018-08-01 10:20:03
    在这本实用指南中,作者解释了为什么中心应用(dapp)将比现在最流行的 Web 应用得到更广泛的使用以及实现更多盈利,展示了如何使用现有工具来创建可用的 dapp 及其市场,并研究了目前两个成功的 dapp 案例。...
  • 计算机图形学导论

    千次阅读 多人点赞 2018-10-12 22:42:46
    一.计算机图形学概念 1.1什么是计算机图形学?(Computer Graphics) 关于计算机图形学的定义众说纷纭。 IEEE 对计算机图形学的定义为:Computer graphicsis the art or ...国际标准组织 ISO 将计算机图形学定...
  •  其实,大数据其实已经在为商业的发展提供实际的应用,总结了大数据商业应用的5个价值点和应用场景,供大家参考学习。  1、用户标签管理  “大数据”可以对用户实现比较精细的划分,利用现在的SCRM系统对...
  • 个人信息标识框架及标准

    千次阅读 2018-03-09 14:31:59
    个人信息标识框架及标准谢安明1,金涛2,周涛11. 北京启明星辰信息安全技术有限公司,北京 100081 2. 清华大学软件学院,北京 100084摘要:随着大数据...
  • 我今天跟大家交流的是关于数字转型的逻辑。人工智能,智能到底是什么含义?从“技术采纳”到“价值赋能”,不管是强调智慧政府、电子政务还是数字政府,最核心性的是以技术为驱动,从而演变出来的概念。技术驱动...
  • 区块链中中心是什么?如今很多的区块链学习者接触到区块链发现中心概念比较广泛难以理解。近日在区块链行业内中比特币开发者Jimmy Song分享了他对中心的看法和观点。这位开发者列举了四个问题帮助用户...
  • 这里的第二个例子是,中心系统中的一个适当的 token 激励机制(token-incentive scheme)可以激励先前未标记的数据集得到标记,或者是以一个更经济的方式进行标记。这基本上就是中心的 Mechanical Turk...
  • 随着中心运动的不断发展,我思考了中心的特点和战略意义,以及我们为何要重新将数字世界中心,为此我们仍需付出哪些努力。 中心已成主流 从蒂姆·伯纳斯·李振臂高呼要重新将网络中心,...
  • 区块链技术是中心的重要基石,只有具备中心思想才能更好的理解这项技术,所以今天我们讨论一下中心思想的几个要素区块链技术与中心思想结合得非常紧密,与其他技术不同,如果不端正“中心思想”...
  • 数据分析面试经验(给自己一个梳理的过程)

    千次阅读 多人点赞 2019-06-22 21:11:52
    数据分析则是根据业务的需求,挖掘数据中存在的有价值的信息,再使用合适的工具(比如excel、tableau、echarts等可视工具,将数据中蕴含的价值变成表、图、文字等形式)。 将近一个月的数据分析面试经验,我感受...
  • 【转】 Vitalik:中心的意涵

    千次阅读 2019-05-12 08:20:36
    中心”或许是区块链被提到过的最高频的一个词了,但这个词的定义也是最不清楚的。 想想这件事其实挺不可思议的。区块链消耗了计算机大量宝贵的哈希算力,...那么,“中心”这个词到底是什么意思? 并...
  • 数据资产已成为企业数据资产管理的最重要的环节,怎样识别数据资产、利用现有的数据资产创造价值,将是企业不得不面临的一个课题。 何为资产? 我们来看一下资产的概念: “资产是指由企业过去的交易或事项形成...
  • 为什么说中心很重要

    千次阅读 2018-03-09 00:00:00
    中心是与中心相对的一个概念,简单的来说中心意思,是中心决定节点。节点必须依赖中心,节点离开了中心就无法生存。中心恰恰相反,在一个分布有众多节点的系统中,每个节点都具有高度自治的特征,每一...
  • 对于企业很重要的两个指标就是效率与成本,而效率的提升就离不开数字。数字不是简单把商品信息放到互联网上就可以了,而是要通过技术手段打通产、销、存和顾客管理各个板块,完成商业模式和组织模式的变革。 ...
  • 价值互联网

    千次阅读 2017-11-07 16:21:26
    区块链是“第二代互联网”1)“价值互联网”。 09年区块链技术没有诞生之前,整个互联网大致的归类为信息互联网,因为互联网技术主要是用来解决信息的传递,信息的存储,后来比特币区块链是一个很特别的专门用于处理...
  • 社会价值观的多元

    千次阅读 2009-11-15 13:28:00
    一位事业上极为成功的企业家、创业者在被采访时,不但谈到自己在商海的成功历程、经历的挫折,同时更多地讲了他对当今社会的一些看法,其中的一个观点我极为认同,即当今社会的价值体系已经高度的单一,事业与财富...
  • 自动失败的6种原因

    千次阅读 2019-08-20 21:07:06
    1. People don’t understand what to automate (and what not to automate)人们不明白要自动什么(以及什么不能自动) 2. The team doesn’t have technically skilled people团队没有技术熟练的人员 3. ...
  • 在大数据领域,可视被用的越来越多,比如监测流动数据,再比如最近的618、双11成交情况分析,无不体现出“好看”的重要性。 仅仅从可视方面来说,相比于Excel那毫无新意的图表,这大屏简直完胜。 可视有...
  • 分的意思就是分散管理,也可叫做中心。 中心的 好处 是认证、管理机制明确统一,可以集中力量办大事,效率高;而弊端是管理、仲裁工作庞杂,机制上的任何缺陷都会造成问题,同时缺少权力的制约,从而...
  • 期望值最大算法

    千次阅读 2015-12-12 19:54:36
    在参数估计中常常通过最大似然函数进行估计,由于隐变量的存在,不能直接求解这个最大似然函数,期望值最大算法就是将这个最大似然函数的求解问题转化为求解其下界的最大值的问题,通过一个求隐变量的分布的“期望...
  • 第一种就是比特币(bitcoin),一种中心的点对点的网上货币,在没有任何资产担保、内在价值或者中心发行者的情况下维持着价值。到目前为止,比特币已经吸引了大量的公众注意力, 就政治方面而言,它是一种没有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 93,693
精华内容 37,477
关键字:

去价值化的意思