个人阅读作业2-提出问题

个人阅读作业2-提出问题


1、我看了《构建之法》第二章中的以下这段话:

软件是由多人合作完成的,不同人员的工作相互有依赖关系。例如,一个人写的模块被其他人写的模块调用。软件的很多错误来源于程序员对模块功能的误解、疏忽或不了解模块的变化。如何能让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模块的质量能得到稳定的、量化的保证?单元测试就是一个很有效的解决方案。

◆看完这段话后,我对于单元测试其实还是没有一个明确的定义,并不能准确的知道到底什么是单元测试,只知道了它的作用大概是用来明确某个模块的功能。我查了百度,百度百科上的介绍是这样的:

单元测试是指对软件中的最小可测试单元进行检查和验证。单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。根据我的理解,我明白了单元测试是为了检验一段代码的功能。

◆但是我还是不太懂,我的困惑是究竟如何通过单元测试来检验代码的功能,而且如何知道这种检验是否正确。

2、我看了《构建之法》第二章中的以下这段话:

把单元测试的责任和代码作者绑定在一起后,代码作者就能更真切地体会到复杂代码的副作用,因为验证复杂代码的正确性要困难得多。要注意:100%的代码覆盖率并不等于100%的正确性!分析如下:
a.代码覆盖率对于“应该写但是没有写的代码”无能为力。例如代码申请了内存或其他资源,但并没有释放。又如,代码中并没有处理错误情况。就像没有处理和文件、网络相关的一些异常情况,例如文件不存在、权限有问题,等等。
b.代码中有效能问题,虽然代码执行了,并且也正确地返回了,但是代码效率非常低。有些情况下,可以针对代码效率写一个单元测试。
c.多线程环境中地同步问题,这个问题和代码执行的时序、共享资源的锁定有关。
d.其他与外部条件相关的问题(例如与设备、网络相关的问题)。

◆看完这段话后,我有这个问题想问:代码覆盖是起什么作用,和单元测试是什么关系,代码覆盖率和代码的正确性之间存在什么关系。我在百度上搜索,查到了这样的观点:

代码覆盖是软件测试中的一种度量,描述程式中源代码被测试的比例和程度,所得比例称为代码覆盖率。在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80%或90%。

◆但是我还是不太懂,我的困惑是代码覆盖率是怎样可以作为一种度量标准的,为什么选用代码覆盖率作为考核测试任务完成情况的标准。

3、我看了《构建之法》第五章中的以下这段话:

MVP的指导思想和渐进交付相似,但是它更强调更早获得用户反馈,为此可以在产品完成之前就发布,它也强调产品的核心价值(产品最区别于竞争产品的地方),为了突出核心功能,别的辅助功能可以不考虑或者用别的平台提供的服务来代替。

◆看完这段话后,我有这个问题想问:渐进交付的流程作为一种开发流程的模式,应该也会存在缺点和问题,在上下文中我没有看到书中提到,我在百度上搜索,也没有查找到相关资料,于是我的困惑就是渐进交付的流程虽然能较好较快的得到用户反馈的信息,但是是否会降低完整功能实现的效率呢?整个渐进交付的流程是不是没有缺点和不足?

4、我看了《构建之法》第六章中的以下这段话:

第二步:决定当前的冲刺需要解决的事情
整个产品的实现被划分为几个互相联系的冲刺。产品订单上的任务被进一步细化了,被分解为以小时为单位。如果一个任务的估计时间太长(如超过16个小时),那么它就应该被进一步分解。订单上的任务是团队成员根据自己的情况来认领。团队成员能主导任务的估计和分配,他们的能动性得到较大的发挥。

◆看完这段话后,我有这个问题想问:在敏捷流程中,最关键的应该就是这第二步,但是如果一个任务的估计时间太长,不断被一步又一步分解,在不增加团队成员数量的情况下,每个成员的负担都加重,看似达不到“敏捷”的效果。我通过百度没能找到答案,所以还存在一个疑惑:就算增加团队成员数量,为达到“敏捷”的效果,那岂不是需要很多很多的人力和物力,这样花费的成本,说不定已经超过这个项目本身的价值,所以敏捷流程关键的第二步中分配的度应该如何把握。

5、我看了《构建之法》第六章中的以下这段话:

MSF过程模型的基本元素是阶段和里程碑。所谓“阶段”,就是在这一段时间里团队集中精力做一类事情,每个阶段的结束都代表了项目的进展和团队工作重心的变化。比如在“开发阶段”结束后,团队就不再允许设计/实现新的功能,除非有理由充分的“变更请求”。

◆看完这段话后,我有这个问题想问:MSF过程重视“敏捷”二字,也重视质量,但是当开发结束后就不再设计实现新的功能,这样就有可能造成质量不高,为什么不能允许实现新功能呢?我没有搜到相关观点,所以还存在一个疑惑:如在“开发阶段”结束后,团队就不再轻易允许设计/实现新的功能,那如何保证功能的质量呢?

原文地址:https://www.cnblogs.com/yjliao/p/8576453.html