文档章节

思考什么是理想的项目

kylekaka
 kylekaka
发布于 2017/02/15 10:17
字数 1822
阅读 14
收藏 0

工作几年的时间自己也参与了好几个项目,但是没有一个项目是让自己满意和舒服的。很多项目有不少问题,自己在项目中做测试工作也是很有挑战并且经常疲惫不堪。最近在思考自己心目中的理想项目是什么样子的,希望自己以后能参加到这样的项目中。因为自己目前的职位是测试工程师(QA),所以我主要从测试人员的视角来讨论。

对测试的认识

有些项目中开发人员认为测试只是测试人员或者带测试头衔的工程师的工作,和自己无关,这其实是错误的。所有项目组中的成员都要对产品的质量负责,而不是只有测试工程师来负责。之前项目中也遇到过只认为测试工作就是测试工程师的活儿,其他的开发工程师和产品经理都不需要进行测试的工作。如果开发人员都没有要好好测试的意识,那么单元测试的质量也不用期待了。基本上在集成测试的时候就爆发很多bug和很多问题。

单元测试的自动化和测试驱动开发

自己之前做过的项目,并没有实际接触过通过测试驱动开发的方式编程的开发人员。而且也没有遇到做单元测试自动化测试的情况。但是自己最近有通过测试驱动开发进行编程的实践,感觉还是对提高代码的质量很有帮助的。 如果项目有良好的单元测试代码覆盖率的话,进行单元测试的自动化回归测试也很简单。 当然很有可能开发人员会反驳说,没有时间来写测试代码,甚至单元测试只能手工简单测试。因为项目排期太紧的原因。实际上这种说法也不太对,虽然一开始通过测试驱动开发方法会在开发阶段多花时间,但是单元测试的力度大力,发现bug和解决bug的成本更小了。同时后面集成测试的压力也小了,其实通过总体项目进度来看不定会需要花更多时间来完成。 实际上公司内部可以通过对一两个项目进行实行测试驱动开发来进行试验,最后在和其他不用这种方法的项目对比质量和进度,就能发现测试驱动开发的方法是否会影响项目的进度。

项目流程

好的项目是流程比较合理和规范的,下面是简化的项目流程从上到下来执行。

  1. 产品经理进行需求立项
  2. 产品经理编写需求文档
  3. 项目全员进行需求评审
  4. 开发工程师进行功能代码开发和单元测试代码开发,注意:每次提交代码都自动触发来执行之前的单元测试
  5. 开发工程师和测试开发工程师进行代码评审(包括测试代码评审)
  6. 开发工程师和测试开发工程师编写接口api文档和api测试代码开发
  7. 开发工程师和测试开发工程师进行接口api文档评审(包括测试代码评审)
  8. 测试工程师进行手工测试用例编写和自动化测试用例编写(自动化回归测试)
  9. 项目全员进行手工测试用例评审(包括自动化测试代码评审)
  10. 测试工程师执行测试用例(包括手工和自动化回归测试),注意:设置自动化测试每日定时自动执行,自动提交bug
  11. 产品经理用户验收测试(UAT测试)
  12. 项目上线后进行线上验证和回归测试
  13. 线上bug的收集和将其编写为自动化回归测试用例

对工具的使用

个人认为理想的项目应该是拥抱新技术和工具的。特别是一些基本工具的使用,能提高项目中工作效率。 自己之前也在没有使用bug管理工具和版本管理工具的项目工作过,相比使用JIRA和git等工具的项目明显有很多缺点,而且效率也更低。

  • 版本管理软件,如:git
  • Bug追踪管理软件,如:JIRA和Bugzilla等
  • 配置管理软件
  • 持续集成工具,如:jenkes
  • 持续部署
  • 自动化测试工具,如:selenium和Appium,以及各个语言的单元测试框架

关于自动化测试

为什么要重视自动化测试呢?在实际的工作中因为要频繁变更需求和修改代码,那么每发布一个小版本都需要执行上一版本已经正确执行过的测试用例来进行回归测试,只有通过了回归测试才能确认这次新增或修改的功能没有对之前的功能产生不好的影响。回归测试是很重要的,但是通过手工的方式进行回归测试的缺点很多,比如执行效率低,速度慢,而且成本高,要占用好几个人力,另外人也容易出错,容易发生遗漏。

还有一种通过人工评审来筛选要执行那些回归测试的办法,来减少要执行的测试用例数量,但是这种方式也是有问题的,因为一开始的选择就有可能是错误的,执行的测试用例越少,我们对产品质量的信心就越小。

如果在敏捷开发项目过程中没有自动化测试的话,那么回归测试的工作就会占用测试工程师很多时间,这样工程师就没有时间来进行探索式测试等更有创造性的工作。

回归测试是非常适合作成自动化测试的,因为回归测试就是重复执行之前的测试用例,计算机比较擅长进行重复的工作,我们应该利用计算机来完成尽量多的回归测试。 另外回归测试不仅仅包括集成测试和用户验收测试,我认为单元测试和接口测试也应该做成自动化回归测试,单元测试和接口测试所占的比重可以更高一些。

总结

综上所述,我心中理想的项目是全体成员意识上都重视测试,同时有很强的自动化思维。有规范的流程,并且通过工具和自制脚本来将大部分的流程自动化,例如自动发布版本,自动化测试,自动部署等。

参考文献:

《高效团队开发工具与方法》 池田尚史,藤仓和明,井上史彰 著

© 著作权归作者所有

kylekaka
粉丝 4
博文 25
码字总数 20831
作品 0
通州
QA/测试工程师
私信 提问
关于Android MVP模式的思考

这一周对现有的Android项目进行了框架重构,使用MVP模式来重新构建整个项目和包结构。今天就来总结一下我在这个过程中理解和实践吧。 MVP概述 MVP是指Model,View和Presenter的缩写,是MVC模...

carpediem123
2017/03/12
0
0
读《重新定义公司:谷歌是如何运营的》

书的核心观点:未来企业的成功之道,是聚集一群聪明的创意精英(书中称为smart creative),营造合适的氛围和支持环境,充分发挥他们的创造力,快速感知客户的需求,愉快地创造相应的产品和服...

Mr_Damen
2016/12/09
16
0
解忧程序员 | 荐书

今天推荐我自己的新书: 搞定难题,解决Bug,项目成功,奖金到手,升职加薪,获得认可,备受尊重……开发者的幸福大同小异,然而开发过程中的迷惘、困惑、痛苦却千差万别,你未曾经历时往往无...

foruok
2017/11/10
0
0
领导敏捷变革

首发简书 此文是在《敏捷教练》第三章内容整理基础上,结合一些实际情况,整理的Guide,帮助自己在工作中做一些敏捷文化的推广,及敏捷团队建设。后续会继续丰富一些实践内容,例如文中的act...

zerobyte
2016/04/22
49
0
Java开发:错过金三银四 你还要错过金九银十吗?面试大纲总结

前言: 一年之计在于春 金三银四已过,2018也已经年过一半多,作为一个开发人员,你是否面上了自己理想的公司,薪资达到心中理想的高度? 面试:如果不准备充分的面试,完全是浪费时间,更是...

Java大蜗牛
2018/08/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

数据库

数据库架构 数据库架构可以分为存储文件系统和程序实例两大块,而程序实例根据不同的功能又可以分为如下小模块。 1550644570798 索引模块 常见的问题有: 为什么要使用索引 什么样的信息能成...

一只小青蛙
今天
5
0
PHP常用经典算法实现

<? //-------------------- // 基本数据结构算法 //-------------------- //二分查找(数组里查找某个元素) function bin_sch($array, $low, $high, $k){ if ( $low <= $high){ $mid = int......

半缘修道半缘君丶
昨天
5
0
GIL 已经被杀死了么?

本文原创并首发于公众号【Python猫】,未经授权,请勿转载。 原文地址:https://mp.weixin.qq.com/s/8KvQemz0SWq2hw-2aBPv2Q 花下猫语: Python 中最广为人诟病的一点,大概就是它的 GIL 了。...

豌豆花下猫
昨天
5
0
git commit message form

commit message一般包括3部分:Header、Body、Footer。 <type>(<scope>):<subject>blank line<body>blank line<footer> header是必需的,body、footer可以省略。 header中type、subject......

ninjaFrog
昨天
5
0
聊聊Elasticsearch的CircuitBreakerService

序 本文主要研究一下Elasticsearch的CircuitBreakerService CircuitBreakerService elasticsearch-7.0.1/server/src/main/java/org/elasticsearch/indices/breaker/CircuitBreakerService.ja......

go4it
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部