代码评审

软件工程第二次作业

只愿长相守 提交于 2019-11-30 21:09:31
1、采访工业界的软件团队(通过邮件,微博,微信,阅读博客等方式),询问他们的软件开发流程 2、分组讨论, (1)投票选出你们小组成员最喜欢的两个团队类型 (2)辩论你们在这门课程中最应该采取哪种类型 (3)列出优劣 (4)课堂发言,或发表博客 一、软件开发流程 1、首先制定项目计划,最初计划是里程碑性质的。可以先按瀑布模型设置,里程碑点主要为需求评审、设计评审、经过代码开发和单元测试后进行集成测试、部署上线是一个很重要的里程碑,一般用户会期望系统何时能使用进入试运行期(也可以称为用户测试阶段) 2、需求开发阶段:怎么样写好需求很关键,做软件致电一伍扒一一三三泗柒四四。如何学会进行需求开发可以去看下经典的《需求工程》这个翻译的书,不是很厚,但需要能理解为什么那样做更好,这个需要实践经验锻炼自己。如果有项目成员,可以一起做需求,这个阶段对于业务理解、分析、如何开展调研以及文字表述、业务流程图描述还有文档编辑能力都有不少要求。一般分为《用户需求说明书》和《需求规格说明书》,小项目可以写一个《需求分析报告》,《用户需求说明书》是用用户的语言进行描述,让用户和开发团队对于需求的达成一致的理解,《需求规格说明书》,则是对用户需求的分析,形成系统要具有的功能,这个是真正提供用户可交互操作的文档,也就是后期设计和代码开发的重要基线。另外,作为了解需求

test问题

 ̄綄美尐妖づ 提交于 2019-11-30 18:34:16
1 、问:你在测试中发现了一个bug ,但是开发经理认为这不是一个bug ,你应该怎样解决? 首先,将问题提交到缺陷管理库里面进行备案。 然后,要获取判断的依据和标准: 根据需求说明书、产品说明、设计文档等,确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据; 如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷; 根据用户的一般使用习惯,来确认是否是缺陷; 与设计人员、开发人员和客户代表等相关人员探讨,确认是否是缺陷; 合理的论述,向测试经理说明自己的判断的理由,注意客观、严谨,不参杂个人情绪。 等待测试经理做出最终决定,如果仍然存在争议,可以通过公司政策所提供的渠道,向上级反映,并有上级做出决定。 2 、问:给你一个网站,你如何测试? 首先,查找需求说明、网站设计等相关文档,分析测试需求。 制定测试计划,确定测试范围和测试策略,一般包括以下几个部分:功能性测试;界面测试;性能测试;数据库测试;安全性测试;兼容性测试 设计测试用例: 功能性测试 可以包括,但不限于以下几个方面: 链接测试。链接是否正确跳转,是否存在空页面和无效页面,是否有不正确的出错信息返回。 提交功能的测试。 多媒体元素是否可以正确加载和显示。 多语言支持是否能够正确显示选择的语言等。 界面测试 可以包括但不限于一下几个方面: 页面是否风格统一,美观

Gerrit代码评审工具

会有一股神秘感。 提交于 2019-11-30 14:36:27
Gerrit 是一个免费、开放源代码的代码审查软件,使用网页界面。 利用网页浏览器,同一个团队的软件程序员,可以相互审阅彼此修改后的程序代码,决定是否能够提交,退回或者继续修改。 它使用 Git 作为底层版本控制系统。它分支自 Rietveld , 作者为Google公司的Shawn Pearce,原先是为了管理Android计划而产生。这个软件的名称,来自于荷兰设计师赫里特·里特费尔德(Gerrit Rietveld)。 最早它是由Python写成,在第二版后,改成用Java与SQL。使用Google Web Toolkit来产生前端的JavaScript。 评审问题列表页面: 问题详细页面: 来源: oschina 链接: https://my.oschina.net/u/2306127/blog/541241

Python小小程序员,一语道破,Python编程效率的十个方法

半城伤御伤魂 提交于 2019-11-30 13:50:58
叙述 Python 是一个美丽的语言,可以激发用户对它的爱。所以如果你试图加入程序员行列,或者你有点厌倦C++,Perl,Java 和其他语言,我推荐你尝试Python. Python有很多吸引程序员的功能 ,它易学,面向对象,字节码编译,免费且开源。还有运行时检查。完整快速的支持,可以执行各种任务的扩展。 高效的Python 在这篇文章,我想强调一些 Python 可以节约时间并最大限度地提高生产力的方面。在做准备时,我咨询了几个 Pythonists,他们最节省时间的技巧是什么?答案在这里 1. 不使用分号 2. 找一个称手的代码编辑器 3. 遵循 Python 代码规范 遵循 Python 代码规范可以提升代码的可读性,从而节省评审代码的时间。 4. 使用 help() 函数 5. 使用库 Python 有大量的库可以让你不必每次都重复造轮子。 它使图像处理任务如模糊,增强对比度,缩放只需要一些函数调用就可以完成。 6. 使用Cookiecutter命令行工具 可以帮助你从工程模板创建 Python 工程,这可以节省大量的时间。 7. 严格的注释 养成写注释的好习惯,可以节省你和其他人的时间,尤其是作调试跟踪。 注释在团队合作是非常关键,尤其是一个做了大量变更。 8. 经常测试 9. 专注和专业 Pythonists 都建议要有一个专注领域和专长。你可以使用 Python

完整的IT项目开发流程

╄→尐↘猪︶ㄣ 提交于 2019-11-30 10:04:04
一般情况下,企业开发软件时会按照基线和定制两块并行方式执行项目开发工作。无论什么公司,都需要遵从一套成熟的产品研发过程体系,才能做出质量较好的产品。因此,如果出现项目较多的情况,应该合理地安排基线和定制之前的里程碑,让基线产品能够尽量多地收集用户的通用型需求,为定制项目进度实现技术支撑,减少定制项目中大量更改代码、需要新增模块情况发生。此外,产品研发过程体系也需要按照业务实际时间要求变化,不要拘泥于一定要按照瀑布方式,或是敏捷方式进行管理,凡事都需要找到契合自己的方式。 【这里以一个基线产品开发过程作为流程解释基础,需要注意的是,以下说描述的各个阶段,在项目执行前要明确各个阶段的目标、指定计划、及时沟通,并确保各个时期所有成员对项目理解一致】 项目启动会 项目启动会的目标是明确该产品开发项目的目标。目标不是孤立存在的,目标与计划相辅相成,目标指导计划,计划的有效性影响着目标的达成。所以在执行目标的时候,考虑清楚自己的行动计划,怎么做才能更有效地完成目标,是每个人都要详情清楚的问题,否则,目标越是不清晰或是过高,都会影响项目的实际结果。 项目启动会需要说明项目目标、阶段划分、组织结构、管理流程等关键事项,并将这些内容写入 PPT(最好是有固定格式和范文,让团队内部或者公司内部共同遵守规范),需要大家达成一致。对于关键角色任命,事前也需要听取相关领导和项目主要干系人的意见。 用户需求

软件测试基础问答

僤鯓⒐⒋嵵緔 提交于 2019-11-29 20:54:37
问:你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决。 首先,将问题提交到缺陷管理库里面进行备案。 然后,要获取判断的依据和标准: 根据需求说明书、产品说明、设计文档等,确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据; 如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷;根据用户的一般使用习惯,来确认是否是缺陷;与设计人员、开发人员和客户代表等相关人员探讨,确认是否是缺陷;合理的论述,向测试经理说明自己的判断的理由,注意客观、严谨,不参杂个人情绪。 等待测试经理做出最终决定,如果仍然存在争议,可以通过公司政策所提供的渠道,向上级反映,并有上级做出决定。 问:给你一个网站,你如何测试?首先,查找需求说明、网站设计m等相关文档,分析测试需求。 制定测试计划,确定测试范围和测试策略,一般包括以下几个部分:功能性测试;界面测试;性能测试;数据库测试;安全性测试;兼容性测试设计测试用例:功能性测试可以包括,但不限于以下几个方面: 链接测试。链接是否正确跳转,是否存在空页面和无效页面,是否有不正确的出错信息返回等。 提交功能的测试。 多媒体元素是否可以正确加载和显示。 多语言支持是否能够正确显示选择的语言等。 界面测试可以包括但不限于一下几个方面:页面是否风格统一,美观页面布局是否合理

优秀的程序员要学会少敲代码,多思考!

北战南征 提交于 2019-11-29 19:51:38
如果只把一个字符一个字符地敲代码叫做 Coding,未免悲哀了一点。优秀的项目,编码阶段实际敲代码的时间不会很长;优秀的程序员,大部分时间都用来思考了。这个时候,你就需要学会代码评审,什么?你说不知道什么是代码评审?没关系,往下看 我来说说代码评审其它鲜为人知的好处: 增加阅历,学习别人代码的可贵之处 和英语学习是一个道理, 如果只听一种纯正口音的英语,英文反而不容易学好 ,我们需要阅读各种营养的代码,广泛阅读能帮助开阔眼界,积累一些好的设计思路,甚至提高阅读恶心代码的免疫能力。 对工程和业务逻辑的熟悉 和盲目地走读代码不同,代码评审之前起码是对大致的业务和实现有一定了解,是带着问题去看代码的,更容易帮助自己理清代码实现,熟悉业务逻辑。 大声地鼓励,宽容地讨论,知识共享,给团队一个互相学习进步的氛围 代码评审不是挑错,看到优秀的代码,要说出来,让大家都看得到,这是那些优秀代码的创造者们应得的奖励。团队中的其他人听到了表扬,阅读了代码,从身边最实际的例子当中收获了成长。 评审过程中,提出的问题未必最终被接受,但是在问题确认的辩驳、争论过程中,很容易见到思维的火花,所谓“道理越辩越明”,一个团队需要有这样充满生气的讨论。 及时识别出代码设计的缺陷,找到需要重构的地方 有一种观点很可怕:写最终的产品代码才是王道,不把最终的代码敲出来,程序员不放心,项目经理不放心,老大们更不放心——

什么是 CI/CD?

為{幸葍}努か 提交于 2019-11-29 18:47:12
什么是 CI/CD? 在软件开发中经常会提到持续集成Continuous Integration(CI)和持续交付Continuous Delivery(CD)这几个术语。但它们真正的意思是什么呢? 在本文中,我将解释这些和相关术语背后的含义和意义,例如持续测试Continuous Testing和持续部署Continuous Deployment。 工厂里的装配线以快速、自动化、可重复的方式从原材料生产出消费品。同样,软件交付管道以快速、自动化和可重复的方式从源代码生成发布版本。如何完成这项工作的总体设计称为“持续交付”(CD)。启动装配线的过程称为“持续集成”(CI)。确保质量的过程称为“持续测试”,将最终产品提供给用户的过程称为“持续部署”。一些专家让这一切简单、顺畅、高效地运行,这些人被称为运维开发DevOps践行者。 “持续”用于描述遵循我在此提到的许多不同流程实践。这并不意味着“一直在运行”,而是“随时可运行”。在软件开发领域,它还包括几个核心概念/最佳实践。这些是: 频繁发布 :持续实践背后的目标是能够频繁地交付高质量的软件。此处的交付频率是可变的,可由开发团队或公司定义。对于某些产品,一季度、一个月、一周或一天交付一次可能已经足够频繁了。对于另一些来说,一天可能需要多次交付也是可行的。所谓持续也有“偶尔、按需”的方面。最终目标是相同的:在可重复

vue的自动化测试详解

↘锁芯ラ 提交于 2019-11-29 14:06:52
大厂视野 1.流量大 性能优化 2.项目复杂 源码 3.持续迭代 4.项目稳定运行 自动化测试 需求评审 开发 测试(人点)(可以使用自动化测试完成一部分) 上线 5.为什么要写测试呢 测试代码可读性好,易于维护 替代了测试的部分工作,无形中完成了一部分任务 准备 1.了解自动化测试 2.jest 3.cypress 4.端对端和自动化 测试分类 常⻅见的开发流程⾥里里,都有测试⼈人员,这种我们成为⿊黑盒测试, 测试⼈人员不不管内部实现机制,只看最外层的输⼊入输出,⽐比如你写⼀一个加法的⻚页⾯面,会设计 N个case,测试加法的正确性,这种代码⾥里里,我们称之为E2E测试 更更负责⼀一些的,我们称之为集成测试,就是集合多个测试过的单元⼀一起测试 还有⼀一种测试叫做⽩白盒测试,我们针对⼀一些内部机制的核⼼心逻辑 使⽤用代码 进⾏行行编写 我们称之为单元测试 这仨都是我们前端开发⼈人员进阶必备的技能! 我们其实⽇日常使⽤用 console,算是测试的雏形吧,console.log(add(1,2) == 3) 测试的好处 组件的单元测试有很多好处: 提供描述组件⾏行行为的⽂文档 节省⼿手动测试的时间 减少研发新特性时产⽣生的 bug 改进设计 促进重构 ⾃自动化测试使得⼤大团队中的开发者可以维护复杂的基础代码。让你改代码不不再⼩小⼼心翼翼 我们先来创建一个vue项目

第九章 伪代码编程过程

痞子三分冷 提交于 2019-11-29 10:08:16
本章从微观上关注编程过程——也就是关注创建单独的类及其子程序的特定步骤。本章还将讲述伪代码编程过程,这种编程有助于减少设计和编写文档所需的工作量,同时提高这两项的工作质量。 创建类和子程序的步骤概述 先对一个类做总体设计,列出这个类内部的特定子程序,创建这些子程序,然后从整体上复查这个类的创建结果。 创建一个类的步骤 创建一个类的关键步骤如下: 创建类的总体设计; 创建类中的子程序; 复审并测试整个类。 创建子程序的步骤 创建子程序涉及到的活动: 设计子程序; 检查设计; 编写子程序的代码; 检查代码。 伪代码 有效使用伪代码的指导原则: 用类似英语的语句来精确描述特定的步骤; 避免使用目标编程语言中的语法元素; 在本意层面上编写伪代码; 在一个足够低的层次上编写伪代码,以便可以近乎自动地从它生成代码。 一段不好的伪代码示例 increment resource number by 1 allocate a dlg struct using malloc if malloc() returns NULL then return 1 invoke OSrsrc_init to initialize a resource for the operating system *hRsrePtr = resource number return 0 一段好的伪代码 keep track of