Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
Like, testing for :
invalid inputs (strings containing "'"s)
giving random id's in url parameters to access "unauthorized" pages
prevent sql injection
...
I would recommend reading this brilliant book to learn more about the test plans.
In particular a test plan is much more than a list of techniques like you mentioned (these should most likely go into the details for the security testing)
It should at least contain:
The answers to the main questions:
why bother (what is gained by testing)
who cares (who are we working for)
how much (..testing will be done)
You would not go wrong providing also:
Platforms
Methods (positive testing, load testing etc)
Functionality you're planning to test
Acceptance criteria
And there is plenty more things to talk about in the plan.
Test responses for:
For integers - strings, null, values more than those allowed, negative, zero..
For strings - strings of lengths longer than that allowed
For invalid values, you can check if the response being returned is informative enough.
Test to see that your application logs these errors. If it doesn't you won't be able to identify and debug problems easily when they occur in production.
Also fuzz testing is a must for web applications.
If you want to make a list, you can add "Trying simple javascripts within a textarea field to see if the site saves and executes them"
this is what i use
Quality Test Plan
its very simple, straight-forward. covers many common web flaws (e.g. broken links, etc)
you might think its too basic, but im always surprised how many bugs it reveals
--LM
Related
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 3 years ago.
Improve this question
I want to determine or guess the underlying OS a website, for example stackoverflow.com, is using.
I have searched multiple statistic websites, but the OS question is answered by few and if, they provide only a general summary, e.g. "50% of ll websites use ...", and no website-individual information.
I Expect there must be some kind of guess based on the HTML-code probably, that allows for that conclusion. I kindly ask for some hints.
The HTML doesn't tell you anything at all about the underlying server or OS. It isn't a useful fingerprinting method unless you were to know that a certain type of web application only ran on a particular OS.
The web server will often identify itself in the HTTP response headers. This sometimes contains OS information. However, this information is self-reported and can be changed by anyone.
Beyond that, certain systems often have certain quirks in how they behave, which can be used for fingerprinting. For example, a malformed request may result in a certain error page that can be used for identification.
See this project for more examples: https://github.com/scipag/httprecon-nse
Finally, note that any sort of fingerprinting isn't 100% accurate. Most fingerprinting relies on a certain default configuration that can be changed. It's also possible to emulate another system.
You really can't know with certainty what OS a server is running.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
The current system that I am working on handles a variety of dataset sizes, most are around 100 but a handful of clients have 250,000 or more results. We need to handle a search across these results fields, pagination for varying page sizes up to 50, and filtering all results on a specific field.
Currently the server is setup to do all of these functions. Something to consider would be that a search would fire off a backend call, a column filter would fire off a backend call, etc. So lots of, most likely, faster calls to the backend.
The client could do these things on a cached large dataset, but it would probably be slower filtering/sorting when the dataset reaches the higher end of the spectrum.
Our primary considerations are speed and user experience. The backend approach would likely be faster & more frequent calls, but would cause lots of short load times and spinners for the user. The frontend would likely be a long initial load time and faster loads/data changes for the additional operations like filter/sort.
To those that have run into similar issues, what do you recommend? What were your concerns? Could you offer some good resources for this type of issue? Any and all assistance would be helpful.
PS sorry if this doesn't fit the standard code questions on SO, just looking for experienced help on this issue.
in case of large date you have to use server side sorting, search and pagination
for performance you have to cache your http calls if you are calling the same endpoints within a given time period a couple of times.
you can find online many example of caching HTTP calls using RXJS, using handy operators like shareReplay that can cache and replay data for every subscriber and that makes you avoid making many calls to the server
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 4 years ago.
Improve this question
I would like to know what's the main difference between test and production code in terms of characteristics like why they are different.
A broad question, but let's try.
Production code makes up your product. It gets build, and either goes out to your customers, or serves their requests on (your) server(s).
Test code is "internally", you write it to ensure your production code behaves as expected.
So the purpose is simply completely different. That is the main difference: what that code get used for.
The "rules" that apply when writing that code are mostly similar: you strive for "clean code", simple to understand, easy to change over time.
If at all, there are subtle differences, such as: in production code, you absolutely try to avoid code duplication. Whereas in test code, one core aspect is to quickly understand what a test is doing. A test that does its "setup" outside of the test is harder to understand (because you have to scroll/jump around to collect all "context). So you rather accept duplicated (setup) code here.
In other words: both kinds of code are absolutely crucial for your business. You write all such code with the same level of scrutiny. You strive to achieve the same level of quality (but you understand that certain details are in fact a bit different).
Finally: some people even claim that test code is more important than production code. Your production code, that just implements your requirements. Theoretically, you should be able to throw away one implementation and replace it with a different one.
When you have a great test base, you can actually do that: because your tests represent an executable specification that tells you whether your product does what you expect it to do!
I think a short answer would be that in test code you test the code against expected outcomes so you can check it does what it is supposed to do.
In production the same code just runs and does what it does.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 4 years ago.
Improve this question
I'm trying to do some analysis and when writing down a list of functionalities I realized I'm a bit fuzzy on the notion.
What can you consider as functionalities like, say, on this Stackoverflow page? Also, to distinguish between the two, how would you define an operation?
My understanding is that the former is something vague, synonymous with a feature or use-case, defining a distinct need/requirement without going into details. Whereas, the latter is something basic, perhaps a subset of the former, but I wouldn't say it's atomic since an operation could be composed of other operations.
Edit: Here's a link on the subject: http://forum.wordreference.com/showthread.php?t=17873
P.S: Functionality might not be the correct expression in English. If so, please confirm this. "Fonctionalité" is often used with respect to software in the French language.
I'm looking forward to other answers, though I suspect this is more of a language issue than that there are universally defined meanings to these two terms, functionality and operation. Therefore, the following is to be taken as just my personal opinion.
To me, functionality (in the sense that you seem to be talking of, as opposed to the meaning of the word in the linked-to forum discussion) refers to use cases, that is, to something that your product/system offers for achieving some goal. It's not a specific action you can perform, but rather an abstract statement of what a system allows you to do. Related terms are feature, or facility. (Btw. I think for this meaning of the word "functionality", feature would be more appropriate.) For example, you could say:
"This site offers search functionality / has a search feature for finding previously published articles."
An operation (or action?) on the other hand is far more specific. It's not something your system/product offers, but something that is actually done with it. You would probably be talking about operations when you can say exactly how it is to be performed, e.g.:
"A search operation is performed by first entering keywords in this-and-that input field, followed by a click on the 'Go' button."
If you take these two together, you could probably say that "functionality" is an abstract category for a number of concrete "operations" that go towards achieving the same general goal.
But I admit I cannot define the two terms more precisely, either; esp. with regards to choosing the right "granularity" for defining specific functionalties or features.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
I am developing an open source desktop twitter client. I would like to take advantage on the new xAuth authentication method, however my app is open source which means that if I put the keys directly into the source file, it may be a vulnerability (am I correct? The twitter support guy told me).
On the other hand, putting the key directly into a binary also doesn't make sense. I am writing my application in python, so if I just supply the pyc files, it is one more seconds to get the keys, thanks to the excellent reflection capatibilities of Python. If I create a small .so file with the keys, it is also trivial to obtain the key by looking at the raw binary (keys has fixed length and character set).
What is your opinion? Is it really a secutiry hole to expose the API keys?
Security hole? In broad terms, yes. Realistically though, these aren't nuclear launch codes we're talking about.
About the worst thing that could happen is that someone could take and use your app's keys to do something against Twitter's TOS that will end up getting the keys banned. No user data would be vulnerable since you're not distributing the user tokens (that would be much worse from a security standpoint). Since anyone can register an app in 2 seconds at no cost, the only reason to do that kind of impersonation would be specifically to besmirch the reputation of you or your app.
One thing you could do is leave them out of the source code but make it clear that user's compiling from source need to obtain their own keys and put them in the appropriate place, but leave them in the binary version that you distribute. Not 100% secure, but makes it that little bit harder that will deter a certain number of n'er-do-wells.