3.3 Methods
3.3.3 Semi-structured narrative interviewing
En la fase de pruebas habría que tener en cuenta por un lado el testeo de la parte de BackEnd y por otra la de Front End.
En el caso de BackEnd se tendría que hacer el testeo con cada uno de los servicios una vez que estos han sido implementados, para posteriormente hacer unas pruebas a nivel global. Una de las librerías que ofrece la framework Falcon denominada testing, proporciona las funciones simulate_request() que simula una petición a una aplicación. En esta función se le pasa como parámetros los usados en la petición (GET, POST, etc), la URL, los headers de los request y el query string asi como el body en caso de que sean necesarios.
El resultado de las peticiones simuladas son comparadas haciendo uso de assertEqual() para ver si los resultado obtenidos son los esperados
Otros controladores pueden ser testeados usando la librería Python mock que permite remplazar trozos del sistema para poder realizar el testeo.
def get_user_with_email_assert_not_found(ctxt): query_string = {'email': ctxt["email"]} body = get("/users", query_string, None 200)
assert "users" in body.keys()
assert "uid" in body.keys()
assert body['users'] == []
return {"uid": body["uid"]}
def signup(ctxt):
request_body = {'email': ctxt["em ail"],'password': ctxt["password"]} body = put("/users/" + str(ctxt["uid"]), request_body, None, 200)
assert "auth_token" in body.keys()
return {"auth_token": body["auth_token"]}
def get_user_with_email_assert_found(ctxt): query_string = {'email': ctxt["email"]}
body = get("/users", query_string, None, 200) assert "users" in body.keys()
assert body['users'] == [{"uid": ctxt["uid"]}]
return {}
def login(ctxt):
request_body = {"password": ctxt["password"]}
body = post("/users/" + ctxt["uid"] + "/validate_password", request_body, 200)
assert "token" in body.keys()
assert body['token'] != ctxt["auth_token"]
return {"auth_token": body["token"]}
def get_sections(ctxt):
body = get("/sections", {}, None, 200)
MªFrancisca Rubio Palomino
90
return {}
def get_action_types(ctxt):
body = get("/sections/types/actions", {}, None, 200)
assert "action_types" in body.keys()
assert len(body["action_types"]) > 0
return {}
def get_next_action_id(ctxt):
body = get("/users/" + ctxt["uid"] + "/actions/next_id", {}, None, 200) assert "next_action_id" in body.keys()
return {"next_action_id": body["next_action_id"]}
def create_action(ctxt):
url = "/users/" + ctxt["uid"] + "/actions/" + ctxt["next_action_id"] request_body = {"section": "foo", "action_type": "bar", "score": "5"} body = put(url, request_body, ctxt["auth_token"], 200)
return {}
En el caso de las pruebas de FrontEnd consistirá en testear cada una de las partes de la que consta la aplicación, validar email, registrarse, iniciar sesión, elegir curso, elegir asignatura, consultar temas, consultar secciones de temas, etc
MªFrancisca Rubio Palomino
91
MªFrancisca Rubio Palomino
92
Conclusiones
Tras el desarrollo del trabajo se puede decir que los objetivos planteados consistentes en realizar comparativas, aprender técnicas, arquitecturas asi como obtener un alto conocimiento de las mismas, se han cumplido, ya que durante este tiempo para su elaboración, se han indagado, consultado múltiples artículos, tanto científicos como de opinión, revistas especializadas, trabajos expuestos vinculados con el tema, de los que se han extraídos conceptos presentes en el trabajo para obtener la base documental y científica necesaria para una mejor comprensión del tema para una posterior su implementación.
Esta parte de indagación e introspección sobre aspectos para mi antes desconocidos ha sido muy instructiva, pero a la vez exigente, por la combinación de circunstancias que se pueden dar para la consecución de objetivos, entre las que se encuentran las personales.
De los conceptos aprendidos están, las técnicas de microservicios de las que se han observado las ventajas que estas presentan frente a las estructuras monolíticas para su posterior utilización en la app, así como tener en cuenta las debilidades de este sistema a la hora de su implementación.
Este trabajo ha permitido por una parte la adquisición de conocimientos que no habían sido adquiridos de una forma autónoma, para afrontar el desarrollo de una aplicación con la libertad de sugerir o tomar decisiones alternativas además de permitir el fortalecimiento de ciertas bases relacionadas con el desarrollo en el lado del servidor, configuraciones en bases de datos, etc . Esta forma de trabajar concede una visión de pensar global, lo cual ayuda al complemento de la formación académica.
Por otra parte, ha creado la solución software relacionada con una aplicación educativa que le permite mejorar la planificación del alumno para la consecución de unos objetivos en función de una agenda, unas tareas y unos hábitos con el fin de obtener unos resultados óptimos posteriormente ser comparados y compartidos.
Seria interesante ir observando la utilidad de la aplicación a través de su uso, para así detectar las posibles mejoras como las líneas futuras de investigación que se podría aplicar. Entre los aspectos a evaluar serian aquellos relacionados con el diseño, utilidad de las funciones ofrecidas, facilidad de uso, etc
Algunos de los conceptos aquí tratados están siendo objeto de continuas revisiones como son los microservicios, aquí en este trabajo solo pretende ser una aproximación a las múltiples vías de desarrollo que presenta esta técnica, por lo que unas posible mejoras se encuentran en ir adaptando la aplicación a las nuevas líneas de investigación relacionadas con esta arquitectura.
MªFrancisca Rubio Palomino
93
obtener la app tanto en formato iOS como en Android es algo que permitirá seguir indagando sobre las líneas de investigación que sobre este aspecto vayan surgiendo, para su comparativa.En este sentido una de las dificultades encontradas en el desarrollo de este trabajo ha estado en la documentación consultada, al ser técnicas tanto React Native como microservicios tan poco usadas, resulta arduo encontrar una conveniente documentación, resultando en algunos casos desanimarte, aunque el alcance del proyecto supongo un acercamiento a estas técnicas para seguir en un trabajo futuro, complementando y asentando mejor los conocimientos
Al finalizar este trabajo a modo de resumen podemos decir que se han adquirido una serie de competencias como son las siguientes:
▪
Dar solución a problemas de integración en función de las estrategias, de los estándares y de las tecnologías disponiblesEste proyecto como se ha señalado esta orientado a la mejora de los métodos de enseñanza-aprendizaje para ser aplicados en el alumnado que quiere ver optimizado su rendimiento, haciéndole consciente de la repercusión que pueden tener los hábitos en los métodos de estudio, quedando abierta la opción por parte del estudio de la inclusión o adaptación de estos hábitos.
▪
Identificar, evaluar y gestionar los riesgos potenciales asociados a la construcción de software que se puedan presentarEntre los riesgos detectados en el desarrollo de este trabajo está la ejecución del software del tipo microservicios asi como el estudio de React Native por la escasez de documentación.
▪
Demostrar comprensión en la gestión y gobierno de los sistemas de software En el tiempo de diseño e implementación tanto del backend como del frontend han ido surgiendo problemas dada la dificultad de los mismos▪
Especificar, diseñar, implementar y evaluar bases de datos.Durante este tiempo se ha conseguido ampliar los conocimientos entorno a las bases de datos así como ver otro tipo de bases de datos como Amaon Web Services.
MªFrancisca Rubio Palomino
94
MªFrancisca Rubio Palomino
95
Bibliografia
[1] http://www.cs.upc.edu/~bejar/ia/ia.html [Último acceso: Junio 2019].
[2] [https://codearmy.co/el-camino-del-desarrollador-web-en-2018-64efc5b68853 [Último acceso: Junio 2019].
[3] https://blog.heroku.com/why_microservices_matter [Último acceso: Junio 2019]. [4] http://www.optaplanner.org/[Último acceso: Junio 2019].
[5] https://github.com/react-native-community/react-native-linear-gradient. [Último acceso: Junio 2019].
[6] https://www.dribba.com/react-native-desarrollo-apps/. [Último acceso: Junio 2019]. [7] https://www.paradigmadigital.com/dev/desarrollando-aplicaciones-moviles-nativas-con-
react-native/. [Último acceso: Junio 2019].
[8] https://medium.com/@pedroparra/redux-tutorial-bb8e87eebb09#.gsz4tgx2h.[Último acceso: Junio 2019].
[9] http://www.falconmasters.com/web-design/que-es-front-end-y-que-es-back-end/. [Último acceso: Junio 2019].
[10] https://www.ionos.es/digitalguide/hosting/cms/los-mejores-sistemas-para-crear-un- foro/[Último acceso: Junio 2019].
[11] https://www.w3schools.com/
[12] https://uniwebsidad.com/?from=librosweb[Último acceso: Junio 2019]. [13] https://www.lancetalent.com/blog/tipos-de-aplicaciones-moviles-ventajas-
inconvenientes/[Último acceso: Junio 2019].
[14] https://apiumhub.com/es/tech-blog-barcelona/los-microservicios/
[15] https://dzone.com/articles/microservices-in-practice-1[Último acceso: Junio 2019].
[16] https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/los-microservicios-en- el-desarrollo-de-aplicaciones/[Último acceso: Junio 2019].
MªFrancisca Rubio Palomino
96
html/[Último acceso: Junio 2019].[18] https://openwebinars.net/blog/microservicios-que-son/[Último acceso: Junio 2019]. [19] https://docs.plesk.com/es-ES/onyx/customer-guide/bases-de-datos-de-sitios-
web.69535//[Último acceso: Junio 2019].