本章节我们再来说说测试,单元测试和功能测试.单元测试我们在数据验证章节简单提过了,本章我们进一步如何用单元测试来测试view的功能代码:同时,也涉及一下基于selenium的功能测试做法.笔者过去的项目上常规的功能测试都是由测试人员通过人工点击按钮的方式来完成的,这里我们利用selenium来完成,大家体会一下当功能测试可以回归的时候是啥赶脚. 1.1. 单元测试覆盖task_start函数 参考前面的单元测试例子,完成test_task_start任务下达的单元测试代码,断言状态是否变更为下达…
前言:随着国家工业2025战略的推进,工业互联网发展将会提速,将迎来一个新的发展时期,越来越多的企业开始逐步的把产线自动化,去年年底投产的小米亦庄的智能工厂就是一个热议的新闻.小米/华为智能工厂只能说是中国制造2025的一个代表,产业转型和制造升级,笔者从事的企业领域就越到越来越多的(制造)企业开始悄悄的自动化/智能化.这里肯定有国家政策推动的大背景,同时,也有着企业自身不断提高生产率的“刚需”. 本序列我们也从一个需求问题开始:然后,拆解需求(问题):其次,解决拆解需求(问题)的点:再次,通过…
从sql到ORM应该说也是编程体系逐步演化的结果,通过类和对象更好的组织开个过程中遇到的各种业务问题,面向对象的解耦和内聚作为一套有效的方法论,对于复杂的企业应用而言确实能够解决实践过程中很多问题. 1.早期No ORM的做法 这里先跟笔者回忆一下历史,在没有普及使用对象映射层之前,做企业业务系统开发通常是怎么做的呢?首先是不变的当然是需求分析,需求基本确定下来后,就是依据原始业务单据进行数据库表设计了,因为大量的企业信息化系统首先要干的第一件事情就是保存表单\保存表单\保存表单,笔者多年来干过…
本章开始我们正式进入到实战项目开发过程,如何从需求分析获得的实体数据转到模型设计中来,变成Django项目中得模型层.当然,第一步还是在VS2019 IDE环境重创建一个工程项目,本文我们把工程名称命名为IndDemo,如下图: VS2019创建的Django项目结构如下图 现在按F5调试程序,又来到Django熟悉的欢迎页面了. 接下来让开始这趟实战之旅吧! 1.1. 实体关系图 从上一章需求涉及到的实体,来构建我们的实体关系图吧,这里的步骤也相当于早期开发设计的表结构设计,只是如前面章节说的…
我们在13章节里通过监控界面讲了如何使用jquery的动态加载数据写法,通过简单案例来说明了如何实现动态的刷新监控界面的数据,本章我们将演示如何从Django模板加载数据逐步演化到前后端分离的异步数据加载和前端渲染主流开发方式,从而进一步实现前后端的解耦,提高Django开发Web应用的灵活性. 1.1. 修改任务列表模板 目前我们显示的任务列表是采用Django后台模板的方式加载数据的,要使用JQuery,同样采用探索编程方式,先实现前端加载模拟数据,Django模板只负责加载页面的基础架构,…
前面的章节我们完成了任务管理主要功能的开发及单元测试编写,可如何知道单元测试效果怎么样呢?测试充分吗?还有没有没有测到的地方呢? 本章节我们介绍一个统计测试代码覆盖率的利器Coverage,Coverage.py (以下简称 Coverage)是 Python 测试界最为流行的一个库之一,用来统计测试覆盖率.测试覆盖率可以从一个角度衡量代码的质量,覆盖率越高,说明测试越充分,代码出现 bug 的几率相对也就越小.当然需要明确的是,测试覆盖率仅仅只是衡量代码质量的一个角度,即是否有代码未经过单元测…
Django Admin笔者使用下来可以说是Django框架的开发利器,业务model构建完成后,我们就能快速的构建一个增删查改的后台管理框架.对于大量的企业管理业务开发来说,可以快速的构建一个可发布的基本的原型,也可以直接通过后台管理快速开发基本的管理系统,提高产品迭代的效率和开发周期.现在就让我们开始配置程序,来掀开admin的庐山真面目! 1.1. 修改程序调试默认端口 笔者在这里为了避免与其它程序的默认端口冲突,我们把工程的默认端口改成8001,这样可以减少调试过程中遇到端口冲突时初学者…
本章我们演示代码是如何"进化"的,实战的企业日常开发过程中,系统功能总伴随着业务的不断增加,早期简单的代码慢慢的越来越复杂,敏捷编程中的"禅"--简单设计.快速发布.获得反馈.快速开发的迭代循环过程,如何保证迭代过程持续交互合格的代码,代码重构和单元测试是非常重要的手段.单元测试用来保证重构的代码先满足原来的测试逻辑,代码结构优化满足新的业务需求扩展,然后开发增加新的功能.新的单元测试,每一轮迭代发布新的功能,获取用户反馈- 上一章功能完成的时候,你发现当前的adm…
笔者也使用过一段时间adminx组件,后来由于adminx停更,又遇到更简单的django-simpleui后,现在基本上只使用simpleui了,使用simpleui的几个好处,笔者认为排在第一位的是于原生admin的兼容性非常高,大量的原生配置基本可以直接用.adminx扩展就需要改很多地方,配置文件也是变成不一样的adminx.py.试用之后,比较喜欢simpleui思路,不知道以后功能多了写复杂了会不会也得走adminx的老路.不过adminx和simpleui等第三方组件都是可以让我们…
这个章节我们将演示用户端界面的开发,当前演示界面还是采用先实现基本功能再逐步完善的"敏捷"模式.首先聚焦在功能逻辑方面实现普通用户与系统的交互,普通用户通过url能查看到当前任务的执行情况列表.为了便于开发我们先设定一个目标url是http://localhost:8001/task/显示当前在执行的任务列表,同时,界面有操作按钮来执行针对任务的操作. 这里页面原型布局设计与Admin类似,如下图: 1.1. 配置url和view 为了便于对django的每个APP的url进行统一管理…
前一章节介绍了List页面的JQuery技术栈的迁移,这一章节我们花一些篇幅来说说修改/查看页面的技术栈迁移.相对于List的获取数据,修改页面涉及到数据Post提交到后台更新数据库.我们仍旧小步迭代的方式推进,修改/查看页面的技术迁移. 1.1. 修改/查看页面分离 修改/查看页面分离与列表的前后台分离会相对复杂一些,主要时是修改页面会涉及到通过POST向后台提交数据修改.基于模板的方式加载数据,技术上是通过view的change函数里增加POST分支来实现数据提交的,提交成功后重定向加载列表…
前面我们分三章来说明了使用django template与jquery的差别,通过jquery如何来实现前后端的分离,同时再9章节使用vue.js 我们浅尝辄止的介绍了JQuery到vue的切换,由于监控界面没有数据提交,无法很好的体现处我说的vue的优势,所以笔者增加本章节来进一步的对比两者异同点(没有对比就没有伤害),读者可以通过代码去体会vue的优势.vue作为精简版本的MVVM,完成双向绑定后我们编程的时候可以更专注于model本身,而不像JQuery还需要知道DOM元素的标签去读写值.…
1.1. 编辑界面 默认任务的编辑界面,对于model属性包含"choices"会自动显示下来列表供选择,"datetime"数据类型也默认提供时间选择组件,如下图: 注意:"auto_now_add=True"的属性默认不会显示在编辑界面,外键字段会自动加载关联表数据,如上图操作员属性. 1.1.1. 设置要显示的模型属性 我们可以通过设置不显示操作员选项,代码如下: fields=('TaskNum','Source','Target',Ba…
根据需求定义"任务"是一个完整的业务搬运流程,整个流程涉及到多个机构(设备)分别动作执行多个步骤,所以依据前面的模型设计,需要把任务分解到多个连续的子任务(作业),未来通过顺序串联下达执行的方式来分步骤的完成任务的执行. 1.1. 仓库规划 同样,依据需求我们先来做几个仓库的规划设计,101位置是AGV的入库起始站台,102是提升机门口的入库工位,104是提升机1楼轿厢工位,同理504是提升机在5楼的轿厢工位.左边是5楼的货位区编码规则,完整好的货位号加上楼层编码05-01-01表示五…
本章节我们将实现与admin里类似的列操作"下达"功能,演示客户端是如何实现操作功能,同时,演示也会强调一点,何时合并你的功能代码,避免相同功能使用不同的代码段来实现,在企业开发中非常重要,良好的编程习惯会让你在未来的维护和扩展中体会到什么叫"好的代码". 1.1. Table增加操作列 本例中我们采用url http://localhost:8001/task/1/start/ 来相应对某行任务执行"下达"操作,类似RESTful的接口模式后面…
上一章节我们完成了"CRUD"的后面3个功能点,新增由于改动较大我们专门增加本章来阐述,主要是完成技术栈切换后,会发现模板的代码判断过多,逻辑过于复杂.对未来存在的扩展和维护友好性严重下降! 1.1. 数据新增 作为企业开发信息管理的核心"增/删/改/查",目前为止我们涉及到了查询.修改和删除,现在我们来讲讲如何通过新增添加数据到系统吧.新增操作与修改删除不一样的就是新增的时候对象未在后台持久化到数据库中获取自身的对象标识,也就是说对象标识是空的或"0&q…
前面章节我们采用OPC作为设备到上位的信息交互的协议,本章我们介绍跨平台的OPC UA.OPC作为早期的工业通信规范,是基于COM/DCOM的技术实现的,用于设备和软件之间交换数据,最初,OPC标准仅限于Windows操作系统.OPC是OLE for Process Control的缩写(中文意思:用于过程控制的OLE). OPC规范包括了3大部分: OPC DA:OPC实时数据访问规范,定义了包括数据值,更新时间与数据品质信息的相关标准.前面实战2我们使用openOPC获取的tag位号值就属于…
本小节演示项目是如何从连接器到获取Tank4C9服务上的设备对象的值,并通过Connector服务的url返回给UI端请求的.另外,实际项目中考虑websocket中间可能因为网络通信等原因出现中断情况,我们增加一个“心跳”设计来定时发送连接请求,确保出现冲断的情况下,能够重新连接到服务端. 1. OPCUA-Client读取OPCUA服务Tag值 现在重构Connector APP views文件里的pushCollectorData函数,通过引入OPCUA-Client来读取OPCUA服务端…
OPC(OLE for Process Control)定义:指为了给工业控制系统应用程序之间的通信建立一个接口标准,在工业控制设备与控制软件之间建立统一的数据存取规范.它给工业控制领域提供了一种标准数据访问机制,将硬件与应用软件有效地分离开来,是一套与厂商无关的软件数据交换标准接口和规程,主要解决过程控制系统与其数据源的数据交换问题,可以在各个应用之间提供透明的数据访问.实际项目中“设备”就变成一个可以访问的OPC Server和它的Tag位号值,更多的详情请参考OPC基金会官网:http:/…
本小节继续演示如何在Django项目中采用早期websocket技术原型来实现把OPC服务端数据实时推送到UI端,让监控页面在另一种技术方式下,实时显示现场设备的工艺数据变化情况.本例我们仍然采用比较轻量级的dwebsocket组件. 1. 安装dwebsocket组件 安装命令:pip install dwebsocket   1.1. dwebsocket使用方法 如果你想为一个单独的视图处理一个websocket连接可以使用accept_websocket装饰器,它会将标准的HTTP请求路…
基于python的互联网软件测试开发(自动化测试)-全集合 1   关键字 为了便于搜索引擎收录本文,特别将本文的关键字给强调一下: python,互联网,自动化测试,测试开发,接口测试,服务测试,api测试,分层测试,分层自动化..etc 2   本文目的 对近几年自己对互联网领域的测试开发的一些见解以及一些学习资料进行整理和分享,希望能够给有志于此领域的人一些入门的指导. 同时能够将 Google 这样的大的互联网公司的软件开发模式向中国地区进行一些推广吧. 笔者的观点具有比较强的倾向性:人…
一.简介 马上大四了,最近在暑期实习,在数据挖掘的主业之外,也帮助同事做了很多网络数据采集的内容,接下来的数篇文章就将一一罗列出来,来续写几个月前开的这个网络数据采集实战的坑. 二.马蜂窝评论数据采集实战 2.1 数据要求 这次我们需要采集的数据是知名旅游网站马蜂窝下重庆区域内所有景点的用户评论数据,如下图所示: 思路是,先获取所有景点的poi ID,即每一个景点主页url地址中的唯一数字: 这一步和(数据科学学习手札33)基于Python的网络数据采集实战(1)中做法类似,即在下述界面: 翻页…
有一定Python和TensorFlow基础的人看应该很容易,各领域的应用,但比较广泛,不深刻,讲硬件的部分可以作为入门人的参考. <Keras快速上手基于Python的深度学习实战>系统地讲解了深度学习的基本知识.建模过程和应用,并以深度学习在推荐系统.图像识别.自然语言处理.文字生成和时间序列中的具体应用为案例,详细介绍了从工具准备.数据获取和处理到针对问题进行建模的整个过程和实践经验. <Keras快速上手>PDF,531页,带书签目录,彩色配图,文字可以复制. 配套源代码和…
前言 通用电气(GE).IBM.英特尔等公司主推的“工业互联网”正在经历“产品-数据分析平台-应用-生态”的演进.这主要得益于 Predix 数据分析平台对工业互联网应用的整合能力.Predix 就像工业数据领域的 iOS 或者安卓系统一样,能够让工程师自己建立模型和应用,打通前方数以万计的传感器和后方每天增加超过 5000 万条的数据库. 在实际应用中,东方航空公司在 Predix 上使用工业互联网应用搜集了 500 多台 CFM56 发动机的高压涡轮叶片保修数据,结合远程诊断纪录和第三方数据…
工业企业中生产线处于高速运转,由工业设备所产生.采集和处理的数据量远大于企业中计算机和人工产生的数据,生产线的高速运转则对数据的实时性要求也更高.破解这些大数据就是企业在新一轮制造革命中赢得竞争力的钥匙.因此,工业生产可视化系统是工业制造业的最佳选择. 工业生产可视化是将虚拟现实技术有机融入了工业监控系统,系统展现界面以生产厂房的仿真场景为基础,对各个工段.重要设备的形态都进行复原,作业流转状态可以在厂房视图当中直接显示.在单体设备视图中,机械设备的运行模式直接以仿真动画的形式展现,通过图像.三…
1 什么是selenium Selenium 是一个基于浏览器的自动化工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.Selenium WebDriver 和Selenium Grid: Selenium IDE:Firefox的一个扩展,它可以进行录制回放,并可以把录制的操作以多种语言(例如java,python等)的形式导出成测试用例. Selenium WebDriver:提供Web自动化所需的API,主要用作浏览…
基于 HTML5 WebGL 的 3D 风机 Web 组态工业互联网应用 前言 在目前大数据时代背景之下,数据可视化的需求也变得越来越庞大,在数据可视化的背景之下,通过智能机器间的链接并最终将人机链接,结合软件和大数据分析的工业互联网也将变得越来越容易实现! 国家也敏锐意识到时代特性并及时把握时机,培育新的经济增长点,推动“中国制造”升级,实现工业大国到工业强国的质变,而诸多的业内人士也正在努力完成对自己的“升级”与“改造”,而大数据的数据可视化与工业的结合,实现了工控的可视化,大大地提高工控管…
一.什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.Selenium WebDriver 和Selenium Grid. Selenium IDE:Firefox的一个扩展,它可以进行录制回放,并把录制的操作以多种语言(例如java.python等)的形式导出成测试用例. Selenium WebDriver:提供Web自动化所需的API,主要用作浏览…
1.  项目背景 刨花板生产线由于原料.生产工艺等原因,会有一些产品板面出现颤纹.漏砂.胶斑.胶块.大刨花.粉尘斑.板面划痕和油污等缺陷.表面缺陷会降低板材强度.影响板材外观和二次加工,给企业带来经济损失. 目前针对刨花板的瑕疵识别工作主要以人工检测为主,缺陷种类繁多和视觉疲劳导致漏检率和误检率较高,极大限制了工厂的生产效率和产品质量.同时,工厂现有刨花板产线质检环节无法积累生产过程数据.无法形成有效数据资产.无法根据生产工况提供科学决策. 本项目主要针对刨花板进行自动化质检,针对其他板材同样适…
前言 从互联网+的概念一出来,就瞬间吸引了各行各业的能人志士,想要在这个领域分上一杯羹.现在传统工业生产行业运用互联网+的概念偏多,但是在大众创业万众创新的背景下,“互联网+”涌出了层出不穷的“玩法”,智慧城市.隧道交通.智慧园区.工业生产,甚至是这次要说的智能飞机!异地协同制造的范围,目前多局限于主机制造厂之间,发动机和机载系统介入得很少.“互联网+飞机”可通过提高各类飞行器的有效监控能力.应急处置能力来大幅提高航行安全水平.“在提高这两大能力后,像飞机失联这类事件将不再发生.”当飞机飞离预定…