软件基础第二次作业

软件基础第二次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zjlg/rjjc20
这个作业的目标 <用心阅读书本,梳理疑惑,学习如何提问>
姓名-学号 <彭俣淇>-<2018330301018>

问题1

“……飞机的安全功能……试想这样的事发生在我们的程序中,程序正在高速运行,突然发生了一个异常,我们的程序能否正常工作,安然退出,并保证用户的数据不被破坏。”--《构建之法》第一章7页
  我看了这一段文字认为用这样的例子来说明商用软件和爱好者写的程序的区别不妥。
  根据我查到的资料:不论是民用飞机还是商用飞机,安全性能始终是放在第一位,而且法律上有各种各样的条例来约束厂商来保障飞机的安全性能,在中国有《中华人民共和国民用航空法》、《民用航空产品和零部件合格审定规则(2007修订)》等20多个法律对飞行器的安全性能做出要求。对于商用软件的开发者和爱好者,对软件的稳定性要求是不一样的,商用软件需要能在不同语言不同供电环境下稳定运行,对稳定性的要求更高,利益也是商用软件的开发者衡量的重要标准,微软对LUMIA设备的系统支持和维护停止于win10m 1709,腾讯在2017年对微信wp版停止维护和支持,即使在当时windows phone的份额远超百万分之一。对于爱好者来说,软件的稳定性不那么重要,软件面向的群体更少,适用的范围更小,比如我要开发一款用蓝牙控制小车运动的软件,我只要确保它能在自己的手机上运行就行。飞机的安全功能十分重要且是强制执行的,商用软件与爱好者的写的程序对软件的稳定性有不同要求,用普适的例子来说明区别似乎有些不妥。

问题2

“单元测试必须由最熟悉代码的人(程序的作者)来写。”--《构建之法》第二章25页
  我看了这一段文字有个疑问:程序员测试自己编写的代码,往往只考虑“正常状况”,会不会影响测试效果?我认为单元测试应该交给结对编程的队友,TA即对程序有一定的了解,又有不同的生活习惯,由TA来完成测试更客观。
  根据我的实践,我得到这些经验:程序员编程时往往会优先考虑与自己相关的情况,比如在C++课程作业中有”编写能够记录学生学号,成绩,姓名的程序“,在编程和测试时我总是先考虑13位学号,按照姓名,学号,成绩的顺序,但给室友参考时,他的习惯与我不同就会出现bug。我查了资料,有这些说法:在进行单元测试时,常用的方法是白盒测试,白盒测试具有逾后逾难的特点,达到一定的覆盖率后,覆盖率的提升会很困难。如果测试工具功能足够强大,能提供工具帮助用户快速地设计测试用例,达到完整的白盒覆盖,那么测试效果就能得到完全的保证。 如果没有充分的统计数据,没有达到足够的测试完整性,那么由谁做单元测试,效果都不能保证。
  但是我还是不太懂,我的困惑是:单元测试的测试工具功能足够强大能使测试效果就能得到保证,那么单元测试交给专门的部门会有更好的效果吗?

问题3

“单元测试应该覆盖所有代码路径。”--《构建之法》第二章27页
  我看了这一段文字有个疑问:单元测试要快,覆盖所有代码路径还能快吗?错误处理路径被包含进来后还能快速找到它吗?
  我查了资料,有这些说法:100% 覆盖是一个好的开始。你不能覆盖所有可能状态的排列/组合(组合性爆炸),因此这个问题需要考虑。只有当有很好理由的情况下才允许有代码路径未经测试。没有时间不是一个好理由,最终会花费更多的时间。可能的好理由包括:真正的不可测(以任何有意义的方式),现实中不可能发生,或被其它测试覆盖。
  软件基础差,看不太懂。

posted on 2020-11-02 18:42  pengyq0930  阅读(121)  评论(0)    收藏  举报

导航