Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9815
  • 博文数量: 5
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 35
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-21 16:41
文章分类

全部博文(5)

文章存档

2017年(1)

2014年(4)

我的朋友

分类: 敏捷开发

2017-01-26 15:12:37

软件质量非常重要 

软件开发的效率是每一个公司最看重的, 能决定公司快速投放产品并得到反馈, 决定着一个项目的成败。 

每一个公司都希望自己的软件产品能很快开发出来, 越快越好 , 恨不得前一天才产生的想法 ,今天就能够做出来, 立马就能够投入市场试水, 看看它的可行度。 并且还希望这个软件尽量没有任何问题(bug), 有极好的用户体验先不说, 起码不能老出问题, 影响了用户体验吧 。


而软件开发又是一项极其复杂并且耗时耗力的大型工程, 需要众多人的参与和协作, 难免开发人员水平参差不齐,造成局部软件质量有好有坏, 那么也会影响最终的软件交付成果。 而软件在开发过程中需求的变更往往都是非常频繁的, 怎么保证在需求不停变更的情况下不停的交付可靠的软件成果, 向所有开发人员提出了挑战。

在多年的摸索和开发实践过程中, 发现了业界领先的敏捷开发模式, 通过不断的迭代和持续集成来保证快速的开发进度和高可靠的软件质量, 保证每个版本都可以交付出去的方法大大的提高了软件质量, 减少了issue的引入。

今天我们就来讲一下 可靠的软件开发流程及 自动化版本持续集成框架的应用和搭建。

软件开发, 本质就像写作, 我们写的code要表达的意义类似文章。 

保证开发质量, 就需要测试, 让code的功能达到预期, 如果达不到那么写出来的code一点用也没有, 反而是副作用, 就是bug , 就是issue。


测试分人工测试, 也分自动化测试。 人工测试是通过人工手动去触发测试条件, 人工去识别结果是否正确, 自动化测试则指的是用另一种软件的方式 来测试 ,这样就可以运行在机器上, 用机器替代人工, 好处是人是动物一定会犯错,机器则不会 ,只要运行的软件没问题, 机器永远都会一句不漏的按照要求来执行。
并且机器比人运行快, 时间长 ,可以不用休息。  可以反复测试, 凡是重复机械的劳动都可以用机器替代, 测试正好是这样的工作, 完全可以交由机器处理, 我们只需要给机器说明去做什么测试即可。 这就是自动化测试框架搭建的工作。 


开发软件的同时也要写单元测试, 保证我们开发的软件单元符合预期, 使用到的技术是 TDD, 应用的框架是  cpputest, 单元测试框架。

单元测试仅仅是软件的接口测试, 属于局部测试, 接口功能验证正确后, 还没有完, 因为我们的软件除了接口外, 更多的是应用这些接口,去实现功能, 所以, 软件中更多的是各种接口调用和相互组合来实现具体的功能, 自动化测试怎么来测试这些功能呢?  写软件来模拟这些人工的操作,所谓input, 然后搜集output 来看是否符合期望, 那么期望我们可以用expect来代替。   在测试前 我们就应该定义好expect , 然后和output 进行比较即可。


如今软件开发环境 基本都是 windows 或者是linux , 当然还有嵌入式的开发, 最后运行在具体的硬件上。 


这些都可以通过一些技术来搭建自动化测试框架 。


windows 和linux 上的软件,除了单元测试 UT 外, 常使用脚本来驱动input 和搜集output , 然后用脚本来比对input 和expect, 如果通过 , 则算测试通过。

嵌入式软件 , 则可以通过 相关工具来连接windows , 应用windows上的软件来驱动相关测试条件, 余下同上, 当然烧写软件, 配置环境,都比较耗时, 也可以写成脚本来完成。   除了上板测试外, 现如今有更快捷的方法, 就是将嵌入式软件运行在windows 上 , 这样测试就很方便, 类似 虚拟机一样。 windows 可以虚拟出嵌入式平台, 例如手机软件开发, andriod, 苹果, 在windows上都有模拟器, 如果没有模拟器怎么办呢?

因为我们仅需要验证代码的逻辑正确即可, 可以将嵌入式软件 编译成windows 平台的exe, 通过脚本语言来灌入input 数据, 来出发相关测试。 当然将嵌入式平台的软件迁移到windows平台上, 这需要相当的工作和挑战, 不仅仅是编译器的不同, 也涉及平台各自不同的特点和唯一性, 代码也需要相关修改。



现在谈谈, 工作中用到的技术。 


脚本语言 python   编译平台 windows   测试框架CPPUTEST 

持续集成工具, genkins , 及调度脚本perl

web提交和呈现 采用git-hub , booster,  使用node.js


后续博文 逐渐介绍搭建过程....








阅读(458) | 评论(0) | 转发(0) |
0

上一篇:浮点数的二进制表示

下一篇:没有了

给主人留下些什么吧!~~