亲身体验这款搅乱爱荷华州党团会议的应用程序
想必你已经听说过爱荷华州党团会议应用程序的惨败了。那款在党团会议中使用却失败的应用程序(IowaReporterApp)现在已经公开发布了。我决定亲自体验一下。我下载了APK文件,并像其他人一样进行了反编译,然后仔细查看了一番。
就运行而言,没有登录权限我几乎无能为力。虽然有人可以设置一个新的 Auth0 端点,然后重新路由出站调用来获取访问权限,但这超出了我的能力范围。
首先声明,我不是 React 或 Android 开发方面的专家,但是通过查看代码,我能发现一些问题。
我们对这款应用的了解
以下是我们目前对该应用程序的一些了解:
- 这是一个 React Native 应用。
- 它使用 Auth0
- 它连接到 Firebase 后端。
步骤似乎是:
- 一名志愿者(选区主席)使用其选区编号登录应用程序。
- 然后他们使用 Auth0 进行身份验证
- 请输入与会总人数
- 请输入党团会议第一轮和第二轮的投票总数。
- 计算每位候选人获得的代表人数。
- 将其上传到 Firebase。
已报告的部分问题:
- 部分志愿者无法登录。
- 与用于验证数据的服务存在接口问题(这个问题正在争论中)。
这些问题很可能是人为造成的。许多人表示登录问题是用户输入错误凭证导致的。这当然是一种可能性。我不想一味指责,只是想分享一下我的看法。
查看源头。
于是我打开了一些源代码,并注意到了一些事情。
- 这里似乎有很多样板代码。
- 有些错误,比如拼写错误,本应被发现。
- 有迹象表明,这并没有经过任何自动化或 CI/CD 测试。
样板代码本身并不会立刻成为他们的致命缺陷。开发者不应该重复造轮子,也不应该在没有充分理由的情况下编写函数。这似乎是一个最简单的 CRUD 应用,只需要将一些数据导入 Firebase 即可。根本不需要编写大量复杂的代码。
令人担忧的是,我们不知道使用该样板代码的人员的技能水平,也不知道他们在测试组装后的代码时投入了多少精力。
错别字
我确实在文本中发现了一些拼写错误。这倒不是什么大问题,只是通常情况下,如果人们连拼写错误都发现不了,那还有什么其他问题他们也发现不了呢?拼写错误和错别字是需要通过全面测试首先修复的问题。
还有这个:
虽然这不算什么大问题,但总感觉哪里不对劲。这个应用是在个人电脑上构建和部署的,而不是通过 CI/CD 流程生成的。
生产环境应用程序的源代码中绝对不应该包含本地路径。
虽然我在这里找到了一些测试和 CI 代码,但都是样板代码,所以无法判断它们是否运行过。
结论
我还没仔细检查过所有代码,也不是专家,但确实发现了一些问题。虽然这次事件令人遗憾,但我们可以从中吸取很多教训。接下来几天的分析结果将会很有意思。
想亲自体验一下吗?
文章来源:https://dev.to/pluralsight/hands-on-with-the-app-that-broke-the-iowa-caucus-4l8o



