教材摘要:
(一)软件的质量
由软件的质量定义可知软件要符合用户以及利益相关者的需求。软件质量=程序质量+软件工程质量。
1 程序的质量体现在软件外在功能的质量。
2 软件工程方面的质量与“快”,“便宜”比较相关。软件工程的质量需要长期的过程来提高。
软件质量的体现:
(1)软件开发过程的可见性。(Visibility)
(2)软件开发过程的风险控制。(Risk Management)
(3)软件内部模块,项目中间阶段的交付质量,项目管理工具的因素。
(4)软件开发成本的控制(Cost Control)
(5)内部质量指标的完成情况(Internal Benchmarks)
(二)软件工程的质量如何衡量
CMMI理论(Capacity Maturity Model Integrated),能力成熟度模型集成。
常用量化指标:
(1)软件CC后DCR的数量
(2)用户的好评/差评
(3)在CC后发现bug的数量
(4)文档的完备性和准确性
(5)修复BUG所需的平均时间
(6)单位开发人员出现的重大BUg的数量
(7)测试用例的覆盖率
(8)模块的复杂程度
(9)代码的行数
(10)文档的数量和复杂程度
(11)有多少代码被重用了
(12)平均每天构建失败的次数
(13)软件实现了多少功能点
(14)软件能运行多久,平均初次错误时间,平均无故障时间
(1)对教材与参考资料阅读后关于软件质量保障你的体会是什么?(40分)
提高软件质量需要设计师,项目经理,工程师以及测试人员一起努力才能做到。
1、 质量意识的培养
想要软件质量有所保障,首先需要开发人员具有质量意识。
2、 有清晰的质量目标和向导
有了意识,还需要有目标,要用清晰可见的目标来推动大家为质量负责,量化好什么样的代码是质量好的。
3、 重要的地方请重要的人把关
请一个大牛,要他做核心的框架、系统设计、重点问题公关和保证其他人开发的质量把控。有些地方如果做的不好修改代价可能会比较小,比如某个程序写的不好,或某个独立的功能有问题,但是有的地方代价会很大,比如架构设计不合理,或系统设计有问题。而且如前言所说,软件开发越是靠前的步骤出问题,带来的代价就会越大,而且会大的明显。
4、 编程规范
如果大家没有一个统一格式的编程规范,就会很难读懂别人的逻辑,只能到处骂娘了。而且好的编程规范确实能让我们的程序可读性更好,更少的犯错误。
5、 管理好复杂度
合理的复杂度确实能要我们少犯些错误,而且定位问题和走读代码也会更加清晰。代码大全的作者甚至认为软件的首要技术使命就是管理复杂度。
6、 测试甚至调试之前就要保证代码质量
不要过分的依赖测试,测试当然很重要,但这是保证我们质量的最后一道关口,代码大全的作者也认为测试不是改进质量的方法,要从代码源头进行把控,好的代码应该不需要调试或很少需要调试的。当然不需要代码的代码几乎是不存在的,但是意识上一定是要这样的。
7、 严格控制修改引入
对于大型软件项目来说,修改问题引入新问题是一件非常可怕的事,这样除了让你的团队有改不完的问题之外,还很容易把新引入的问题遗留到更后端,造成更大损失,所以修改问题一定要谨慎评估影响,有其他人把控检视,测试也要发散测试,总之修改引入是一件非常严重的事。
8、 改正bug定位根因,且举一反三
不能只改bug,更要定位出原因所在,一同更改。
(2)如果你是一个项目的QA,那么你认为你的工作职责范围是什么?(30分)
软件质量保障工作(Quality Assurance):软件团队为了让软件达到事先定义的质量标准而进行的所有活动,包括测试工作。
QA工作的依据主要为:组织规范、规范操作指南、检查单及QA操作指南等。
工作职责范围:
1 需求设计阶段要审查设计时候合理,是否能满足客户的真正需求。
2 是否符合客户群体的使用习惯,操作是否简单易学等等。
3 数据库结构设计、系统架构、功能页面等是否能按照需求实现。
4 督促研发进度,要定好项目进度,并督促其完成。
5 产品出来后,QA要检测质量,即测试。
6 此时产品可以交给客户,QA要细心倾听客户的要求,耐心的给予讲解说明,汇总所有需要修改的点。
7 反馈给研发人员(项目经理或研发经理)并确认其按照客户要求完成修改。
(3)如果你是一个项目经理,那么你认为你的项目中需要专职的QA吗?还是只需要TEST即可?如果一旦出现问题,你如何界定由谁担责?(30分)
我认为需要专职的QA。首先,分工是好事,所有人都可以参与QA的工作,但是最后要有一个角色对QA这件事负责。不但角色要独立,而且在最后软件发布时,必须得到此角色的签字保证。分工是社会和行业进化的结果,开发和测试其实是软件工程的两个分支,对于不同的软件/服务,测试的方式和程度有所区别。独立的测试角色从用户的角度出发验证产品质量。独立专业的测试等同于代表客户对产品进行认证。但是,尽管有专人负责测试工作,但是保证质量仍然是所有成员的职责。培养大家都要做QA,专人负责量化测试,有条件多做测试自动化的文件。
一旦出现问题,QA应该负主要责任,团队其他人员负次要责任,大家一起协商解决,而不是互相推诿,这样会更有利于解决问题。
浙公网安备 33010602011771号