{"action":"opened","issue":{"url":"https://api.github.com/repos/MikeCaspar/playbook_test_framework/issues/1","repository_url":"https://api.github.com/repos/MikeCaspar/playbook_test_framework","labels_url":"https://api.github.com/repos/MikeCaspar/playbook_test_framework/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/MikeCaspar/playbook_test_framework/issues/1/comments","events_url":"https://api.github.com/repos/MikeCaspar/playbook_test_framework/issues/1/events","html_url":"https://github.com/MikeCaspar/playbook_test_framework/issues/1","id":170045773,"number":1,"title":"Some questions and thoughts about the project","user":{"login":"relaxdiego","id":110545,"avatar_url":"https://avatars.githubusercontent.com/u/110545?v=3","gravatar_id":"","url":"https://api.github.com/users/relaxdiego","html_url":"https://github.com/relaxdiego","followers_url":"https://api.github.com/users/relaxdiego/followers","following_url":"https://api.github.com/users/relaxdiego/following{/other_user}","gists_url":"https://api.github.com/users/relaxdiego/gists{/gist_id}","starred_url":"https://api.github.com/users/relaxdiego/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/relaxdiego/subscriptions","organizations_url":"https://api.github.com/users/relaxdiego/orgs","repos_url":"https://api.github.com/users/relaxdiego/repos","events_url":"https://api.github.com/users/relaxdiego/events{/privacy}","received_events_url":"https://api.github.com/users/relaxdiego/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2016-08-08T23:01:33Z","updated_at":"2016-08-08T23:01:33Z","closed_at":null,"body":"Thanks again for presenting this at AnsibleFest16, Mike! I have a couple of questions.\r\n\r\nThe model I will be using for testing in the Ansible world is as follows. Note how it's a direct analogy of testing from the software development world. Based on what I heard from your talk at AnsibleFest, I believe we hold the same model.\r\n\r\n[![](https://dl.dropboxusercontent.com/u/1355795/ansible-testing.JPG)](https://dl.dropboxusercontent.com/u/1355795/ansible-testing.JPG)\r\n\r\nMy concerns are as follows:\r\n\r\nPOSSIBLE DUPLICATED LOGIC?\r\nInitially, I liked the clean analogy from the software dev world to the Ansible world on the Developer column. However, after some chewing on it a bit more, I started having doubts. Since Ansible is a declarative DSL, the primary responsibility of checking that a task has been successfully satisfied falls on the Ansible module being used for that task. Assuming that the module is working as expected and we're not abusing the command/shell module (which has very rudimentary success/fail checking), wouldn't these separate test playbooks be duplicating the effort?\r\n\r\nSo if we were to take the software dev to Ansible world analogy (Developer column only), it would be like the Developer writing unit tests against the languages standard library which is just duplicated effort.\r\n\r\n\r\nWHAT IF WE ONLY WRITE \"ACCEPTANCE PLAYBOOKS\"?\r\nWhat if we adjust the tests scope and treat the subject under test as a black box? What if instead of checking for the existence of internal files and so on, we check only for things that the consumer of the subject's service would be able to confirm? In this case, the test playbooks avoid duplicating logic while still providing value to the project. \r\n\r\n\r\nWHAT IF WE BORROW IDEAS FROM OTHER DECLARATIVE LANGUAGES\r\nI couldn't find a lot of resources on this, admittedly. However, deriving analogies from CSS testing tools might be a good start. Here's one that talks about it: http://csste.st/guides/declarative-languages.html"}}
{"actor":{"display_login":"relaxdiego"}}